Graylog Extended Format 日誌驅動程式

gelf 日誌驅動程式是一種方便的格式,可被 GraylogLogstashFluentd 等多種工具所識別。許多工具都使用此格式。

在 GELF 中,每條日誌訊息都是一個包含以下欄位的字典:

  • 版本
  • 主機 (Host,即最初發送訊息的來源)
  • 時間戳記 (Timestamp)
  • 簡短與完整的訊息版本
  • 任何您自行設定的自訂欄位

使用方式

若要將 gelf 驅動程式設為預設的日誌驅動程式,請在 daemon.json 檔案中設定 log-driverlog-opt 鍵值。該檔案位於 Linux 主機的 /etc/docker/ 目錄,或是 Windows Server 的 C:\ProgramData\docker\config\daemon.json。關於使用 daemon.json 設定 Docker 的更多資訊,請參閱 daemon.json

以下範例將日誌驅動程式設為 gelf 並設定了 gelf-address 選項。

{
  "log-driver": "gelf",
  "log-opts": {
    "gelf-address": "udp://1.2.3.4:12201"
  }
}

重新啟動 Docker 以使變更生效。

注意

daemon.json 設定檔中的 log-opts 設定選項必須以字串形式提供。因此,布林值與數值(例如 gelf-tcp-max-reconnect 的值)必須以引號 (") 包圍。

您可以在使用 docker container createdocker run 時設定 --log-driver 旗標,為特定容器指定日誌驅動程式。

$ docker run \
      --log-driver gelf --log-opt gelf-address=udp://1.2.3.4:12201 \
      alpine echo hello world

GELF 選項

gelf 日誌驅動程式支援以下選項:

選項必要描述範例值
gelf-addressrequiredGELF 伺服器的位址。僅支援 tcpudp 作為 URI 指定符,且必須指定連接埠。--log-opt gelf-address=udp://192.168.0.42:12201
gelf-compression-type選擇性僅限 UDP。GELF 驅動程式用來壓縮每條日誌訊息的壓縮類型。允許的值為 gzipzlibnone。預設值為 gzip。請注意,啟用壓縮會導致過高的 CPU 使用率,因此強烈建議將其設定為 none--log-opt gelf-compression-type=gzip
gelf-compression-level選擇性僅限 UDP。當 gelf-compression-typegzipzlib 時的壓縮等級。範圍為 -19(最佳壓縮)的整數。預設值為 1(最佳速度)。較高的等級可提供較好的壓縮效果,但速度較慢。設定為 -10 將停用壓縮。--log-opt gelf-compression-level=2
gelf-tcp-max-reconnect選擇性僅限 TCP。當連線中斷時的最大重連嘗試次數。為正整數。預設值為 3。--log-opt gelf-tcp-max-reconnect=3
gelf-tcp-reconnect-delay選擇性僅限 TCP。重連嘗試之間的等待秒數。為正整數。預設值為 1。--log-opt gelf-tcp-reconnect-delay=1
tag選擇性一個會附加在 gelf 訊息中 APP-NAME 後的字串。預設情況下,Docker 會使用容器 ID 的前 12 個字元來標記日誌訊息。關於自訂日誌標籤格式,請參考日誌標籤選項文件--log-opt tag=mailer
labels選擇性啟動 Docker daemon 時適用。此 daemon 接受的日誌相關標籤清單(以逗號分隔)。會在 extra 欄位上增加額外的鍵,並以底線 (_) 作為前綴。用於進階日誌標籤選項--log-opt labels=production_status,geo
labels-regex選擇性labels 相似且相容。用於比對與日誌相關標籤的正規表示式。用於進階的 日誌標籤選項--log-opt labels-regex=^(production_status|geo)
環境變數選擇性啟動 Docker daemon 時適用。此 daemon 接受的日誌相關環境變數清單(以逗號分隔)。會在 extra 欄位上增加額外的鍵,並以底線 (_) 作為前綴。用於進階日誌標籤選項--log-opt env=os,customer
env-regex選擇性env 相似且相容。用於比對與日誌相關環境變數的正規表示式。用於進階的 日誌標籤選項--log-opt env-regex=^(os|customer)
注意

gelf 驅動程式不支援 TCP 連線的 TLS。發送到受 TLS 保護的輸入端之訊息可能會在靜默狀態下失敗。

範例

此範例設定容器使用在 192.168.0.42 連接埠 12201 上執行的 GELF 伺服器。

$ docker run -dit \
    --log-driver=gelf \
    --log-opt gelf-address=udp://192.168.0.42:12201 \
    alpine sh
© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.