Syslog 記錄驅動程式

syslog 記錄驅動程式會將日誌路由到 syslog 伺服器。syslog 協定使用原始字串作為日誌訊息,並支援有限的後設資料集。syslog 訊息必須以特定方式格式化才能有效。接收器可以從有效的訊息中提取以下資訊

  • 優先順序:記錄級別,例如 debugwarningerrorinfo
  • 時間戳記:事件發生的時間。
  • 主機名稱:事件發生的位置。
  • 功能:記錄訊息的子系統,例如 mailkernel
  • 處理程序名稱和處理程序 ID (PID):產生日誌的處理程序的名稱和 ID。

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

用法

若要使用 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 的值)必須以引號 (") 括起來。

您可以使用 --log-driver 旗標搭配 docker container createdocker run 來設定特定容器的記錄驅動程式

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

選項

以下記錄選項支援作為 syslog 記錄驅動程式的選項。它們可以設定為 daemon.json 中的預設值,方法是將它們作為鍵值對新增到 log-opts 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-certCA 簽署的信任憑證的絕對路徑。如果地址協定不是 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 格式,不指定主機名稱。指定 rfc3164 表示與 RFC-3164 相容的格式,rfc5424 表示與 RFC-5424 相容的格式,或 rfc5424micro 表示具有微秒時間戳解析度的 RFC-5424 相容格式。--log-opt syslog-format=rfc5424micro
labels適用於啟動 Docker 常駐程式時。此常駐程式接受的以逗號分隔的日誌相關標籤清單。用於進階的日誌標籤選項--log-opt labels=production_status,geo
labels-regex適用於啟動 Docker 常駐程式時。類似於且相容於 labels。用於匹配日誌相關標籤的正規表達式。用於進階的日誌標籤選項--log-opt labels-regex=^(production_status|geo)
env適用於啟動 Docker 常駐程式時。此常駐程式接受的以逗號分隔的日誌相關環境變數清單。用於進階的日誌標籤選項--log-opt env=os,customer
env-regex適用於啟動 Docker 常駐程式時。類似於且相容於 env。用於匹配日誌相關環境變數的正規表達式。用於進階的日誌標籤選項--log-opt env-regex=^(os|customer)