Graylog Extended Format 日誌驅動程式
目錄
gelf 日誌驅動程式是一種方便的格式,可被 Graylog、Logstash 和 Fluentd 等多種工具所識別。許多工具都使用此格式。
在 GELF 中,每條日誌訊息都是一個包含以下欄位的字典:
- 版本
- 主機 (Host,即最初發送訊息的來源)
- 時間戳記 (Timestamp)
- 簡短與完整的訊息版本
- 任何您自行設定的自訂欄位
使用方式
若要將 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 | required | 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(最佳壓縮)的整數。預設值為 1(最佳速度)。較高的等級可提供較好的壓縮效果,但速度較慢。設定為 -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 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