Graylog 擴充格式記錄驅動程式

gelf 記錄驅動程式是一種方便的格式,許多工具都能理解,例如 GraylogLogstashFluentd用法

若要使用 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-address必填GELF 伺服器的地址。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選填僅限 UDPgelf-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)
env選填適用於啟動 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.4212201 埠上執行的 GELF 伺服器。

$ docker run -dit \
    --log-driver=gelf \
    --log-opt gelf-address=udp://192.168.0.42:12201 \
    alpine sh