Graylog 擴充套件格式日誌驅動程式

gelf 日誌記錄驅動程式是一種方便的格式,被許多工具所理解,例如 GraylogLogstashFluentd。許多工具都使用這種格式。

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

  • 版本
  • 主機(最初發送訊息的一方)
  • 時間戳
  • 訊息的短版本和長版本
  • 您自己配置的任何自定義欄位

用法

要使用 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 (BestCompression) 之間的整數。預設值為 1 (BestSpeed)。更高級別提供更高的壓縮率但速度較慢。-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 守護程序時應用。此守護程序接受的與日誌記錄相關的標籤的逗號分隔列表。在 extra 欄位中新增額外的鍵,字首為下劃線 (_)。用於高階日誌標籤選項--log-opt labels=production_status,geo
labels-regex可選labels 類似且相容。用於匹配與日誌相關的標籤的正則表示式。用於高階日誌標籤選項--log-opt labels-regex=^(production_status|geo)
env可選在啟動 Docker 守護程序時應用。此守護程序接受的與日誌記錄相關的環境變數的逗號分隔列表。在 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