Syslog 日誌驅動程式

syslog 日誌驅動程式將日誌路由至 syslog 伺服器。syslog 通訊協定使用原始字串作為日誌訊息,並支援有限的元數據集。syslog 訊息必須以特定格式編寫才能生效。從有效的訊息中,接收者可以提取以下資訊:

  • 優先級 (Priority):日誌級別,例如 debugwarningerrorinfo
  • 時間戳記 (Timestamp):事件發生的時間。
  • 主機名稱 (Hostname):事件發生的位置。
  • 設備 (Facility):記錄訊息的子系統,例如 mailkernel
  • 處理序名稱與處理序 ID (PID):產生該日誌的處理序名稱與 ID。

該格式定義於 RFC 5424,Docker 的 syslog 驅動程式以下列方式實作 ABNF 參考

                TIMESTAMP SP HOSTNAME SP APP-NAME SP PROCID SP MSGID
                    +          +             +           |        +
                    |          |             |           |        |
                    |          |             |           |        |
       +------------+          +----+        |           +----+   +---------+
       v                            v        v                v             v
2017-04-01T17:41:05.616647+08:00 a.vm {taskid:aa,version:} 1787791 {taskid:aa,version:}

使用方式

若要將 syslog 驅動程式用作預設日誌驅動程式,請在 daemon.json 檔案中將 log-driverlog-opt 鍵設定為適當的值。Linux 主機上的該檔案位於 /etc/docker/,Windows Server 上則位於 C:\ProgramData\docker\config\daemon.json。關於使用 daemon.json 設定 Docker 的更多資訊,請參閱 daemon.json

以下範例將日誌驅動程式設為 syslog 並設定 syslog-address 選項。syslog-address 選項同時支援 UDP 和 TCP;此範例使用 UDP。

{
  "log-driver": "syslog",
  "log-opts": {
    "syslog-address": "udp://1.2.3.4:1111"
  }
}

重新啟動 Docker 以使變更生效。

注意

daemon.json 設定檔中的 log-opts 設定選項必須以字串形式提供。因此,數值和布林值(例如 syslog-tls-skip-verify 的值)必須用引號 (") 括起來。

您可以透過在 docker container createdocker run 指令中使用 --log-driver 旗標,為特定容器設定日誌驅動程式。

$ docker run \
      --log-driver syslog --log-opt syslog-address=udp://1.2.3.4:1111 \
      alpine echo hello world

選項

syslog 日誌驅動程式支援以下日誌選項。它們可以透過將其作為鍵值對新增至 log-opts JSON 陣列,在 daemon.json 中設定為預設值。它們也可以透過在啟動容器時為每個選項新增一個 --log-opt <key>=<value> 旗標,來針對特定容器進行設定。

選項描述範例值
syslog-address外部 syslog 伺服器的位址。URI 指定符可以是 [tcp|udp|tcp+tls]://host:portunix://pathunixgram://path。如果傳輸協定為 tcpudptcp+tls,預設連接埠為 514--log-opt syslog-address=tcp+tls://192.168.1.3:514, --log-opt syslog-address=unix:///tmp/syslog.sock
syslog-facility要使用的 syslog 設備。可以是任何有效 syslog 設備的數字或名稱。請參閱 syslog 文件--log-opt syslog-facility=daemon
syslog-tls-ca-cert由 CA 簽署的信任憑證的絕對路徑。如果位址協定不是 tcp+tls,則會被忽略。--log-opt syslog-tls-ca-cert=/etc/ca-certificates/custom/ca.pem
syslog-tls-certTLS 憑證檔案的絕對路徑。如果位址協定不是 tcp+tls,則會被忽略。--log-opt syslog-tls-cert=/etc/ca-certificates/custom/cert.pem
syslog-tls-keyTLS 金鑰檔案的絕對路徑。如果位址協定不是 tcp+tls,則會被忽略。--log-opt syslog-tls-key=/etc/ca-certificates/custom/key.pem
syslog-tls-skip-verify如果設為 true,則在連接到 syslog 守護程序時會跳過 TLS 驗證。預設為 false。如果位址協定不是 tcp+tls,則會被忽略。--log-opt syslog-tls-skip-verify=true
tag附加到 syslog 訊息中 APP-NAME 的字串。預設情況下,Docker 使用容器 ID 的前 12 個字元來標記日誌訊息。請參閱 日誌標籤選項文件 以自訂日誌標籤格式。--log-opt tag=mailer
syslog-format要使用的 syslog 訊息格式。如果未指定,則使用本機 Unix syslog 格式(不含指定的主機名稱)。若要使用 RFC-3164 相容格式,請指定 rfc3164;若要使用 RFC-5424 相容格式,請指定 rfc5424;若要使用具備微秒時間戳記解析度的 RFC-5424 相容格式,請指定 rfc5424micro--log-opt syslog-format=rfc5424micro
labels適用於啟動 Docker 守護程序時。此守護程序接受的以逗號分隔的日誌相關標籤清單。用於進階 日誌標籤選項--log-opt labels=production_status,geo
labels-regex適用於啟動 Docker 守護程序時。類似於並相容於 labels。用於匹配日誌相關標籤的正規表示式。用於進階 日誌標籤選項--log-opt labels-regex=^(production_status|geo)
環境變數適用於啟動 Docker 守護程序時。此守護程序接受的以逗號分隔的日誌相關環境變數清單。用於進階 日誌標籤選項--log-opt env=os,customer
env-regex適用於啟動 Docker 守護程序時。類似於並相容於 env。用於匹配日誌相關環境變數的正規表示式。用於進階 日誌標籤選項--log-opt env-regex=^(os|customer)
© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.