Graylog Extended Format 日誌驅動程式
目錄
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