Graylog 擴充套件格式日誌驅動程式
目錄
gelf
日誌記錄驅動程式是一種方便的格式,被許多工具所理解,例如 Graylog、Logstash 和 Fluentd。許多工具都使用這種格式。
在 GELF 中,每條日誌訊息都是一個包含以下欄位的字典:
- 版本
- 主機(最初發送訊息的一方)
- 時間戳
- 訊息的短版本和長版本
- 您自己配置的任何自定義欄位
用法
要使用 gelf
驅動程式作為預設的日誌記錄驅動程式,請在 daemon.json
檔案中將 log-driver
和 log-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 create
或 docker 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 伺服器的地址。tcp 和 udp 是唯一支援的 URI 說明符,您必須指定埠。 | --log-opt gelf-address=udp://192.168.0.42:12201 |
gelf-compression-type | 可選 | 僅 UDP GELF 驅動程式用於壓縮每條日誌訊息的壓縮型別。允許的值為 gzip 、zlib 和 none 。預設值為 gzip 。請注意,啟用壓縮會導致過多的 CPU 使用率,因此強烈建議將其設定為 none 。 | --log-opt gelf-compression-type=gzip |
gelf-compression-level | 可選 | 僅 UDP 當 gelf-compression-type 為 gzip 或 zlib 時的壓縮級別。一個介於 -1 到 9 (BestCompression) 之間的整數。預設值為 1 (BestSpeed)。更高級別提供更高的壓縮率但速度較慢。-1 或 0 都會停用壓縮。 | --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.42
埠 12201
上的 GELF 伺服器。
$ docker run -dit \
--log-driver=gelf \
--log-opt gelf-address=udp://192.168.0.42:12201 \
alpine sh