Splunk 日誌驅動程式
splunk
日誌記錄驅動程式將容器日誌傳送到 Splunk Enterprise 和 Splunk Cloud 中的HTTP 事件收集器。
用法
您可以將 Docker 日誌記錄配置為預設使用 splunk
驅動程式,或在每個容器的基礎上使用。
要將 splunk
驅動程式用作預設日誌記錄驅動程式,請在 daemon.json
配置檔案中將 log-driver
和 log-opts
鍵設定為適當的值,然後重啟 Docker。例如:
{
"log-driver": "splunk",
"log-opts": {
"splunk-token": "",
"splunk-url": "",
...
}
}
daemon.json 檔案位於 Linux 主機的 /etc/docker/
或 Windows Server 的 C:\ProgramData\docker\config\daemon.json
中。有關使用 daemon.json
配置 Docker 的更多資訊,請參閱 daemon.json。
注意
daemon.json
配置檔案中的log-opts
配置選項必須以字串形式提供。因此,布林值和數值(例如splunk-gzip
或splunk-gzip-level
的值)必須用引號("
)括起來。
要為特定容器使用 splunk
驅動程式,請在 docker run
中使用命令列標誌 --log-driver
和 log-opt
:
$ docker run --log-driver=splunk --log-opt splunk-token=VALUE --log-opt splunk-url=VALUE ...
Splunk 選項
以下屬性可讓您配置 Splunk 日誌記錄驅動程式。
- 要在整個 Docker 環境中配置
splunk
驅動程式,請使用鍵"log-opts": {"NAME": "VALUE", ...}
編輯daemon.json
。 - 要為單個容器配置
splunk
驅動程式,請使用帶--log-opt NAME=VALUE ...
標誌的docker run
命令。
選項 | 必需 | 描述 |
---|---|---|
splunk-token | 必需 | Splunk HTTP 事件收集器令牌。 |
splunk-url | 必需 | 您的 Splunk Enterprise、自助 Splunk Cloud 例項或 Splunk Cloud 託管叢集的路徑(包括 HTTP 事件收集器使用的埠和方案),格式如下:https://your_splunk_instance:8088 、https://input-prd-p-XXXXXXX.cloud.splunk.com:8088 或 https://http-inputs-XXXXXXXX.splunkcloud.com 。 |
splunk-source | 可選 | 事件源。 |
splunk-sourcetype | 可選 | 事件源型別。 |
splunk-index | 可選 | 事件索引。 |
splunk-capath | 可選 | 根證書的路徑。 |
splunk-caname | 可選 | 用於驗證伺服器證書的名稱;預設使用 splunk-url 的主機名。 |
splunk-insecureskipverify | 可選 | 忽略伺服器證書驗證。 |
splunk-format | 可選 | 訊息格式。可以是 inline 、json 或 raw 。預設為 inline 。 |
splunk-verify-connection | 可選 | 啟動時驗證 Docker 能否連線到 Splunk 伺服器。預設為 true。 |
splunk-gzip | 可選 | 啟用/停用 gzip 壓縮以將事件傳送到 Splunk Enterprise 或 Splunk Cloud 例項。預設為 false。 |
splunk-gzip-level | 可選 | 設定 gzip 的壓縮級別。有效值為 -1(預設)、0(不壓縮)、1(最快)... 9(最佳壓縮)。預設為 DefaultCompression。 |
tag | 可選 | 為訊息指定標籤,該標籤會解析一些標記。預設值為 {{.ID}} (容器 ID 的前 12 個字元)。有關自定義日誌標籤格式,請參閱日誌標籤選項文件。 |
labels | 可選 | 以逗號分隔的標籤鍵列表,如果為容器指定了這些標籤,則應包含在訊息中。 |
labels-regex | 可選 | 與 labels 類似且相容。用於匹配與日誌相關的標籤的正則表示式。用於高階日誌標籤選項。 |
env | 可選 | 以逗號分隔的環境變數鍵列表,如果為容器指定了這些變數,則應包含在訊息中。 |
env-regex | 可選 | 與 env 類似且相容。用於匹配與日誌相關的環境變數的正則表示式。用於高階日誌標籤選項。 |
如果 label
和 env
鍵之間存在衝突,則以 env
的值為準。這兩個選項都會向日志訊息的屬性中新增額外的欄位。
下面是為 Splunk Enterprise 例項指定的日誌記錄選項示例。該例項本地安裝在執行 Docker 守護程序的同一臺機器上。
根證書和通用名稱的路徑透過 HTTPS 方案指定。這用於驗證。SplunkServerDefaultCert
是由 Splunk 證書自動生成的。
$ docker run \
--log-driver=splunk \
--log-opt splunk-token=176FCEBF-4CF5-4EDF-91BC-703796522D20 \
--log-opt splunk-url=https://splunkhost:8088 \
--log-opt splunk-capath=/path/to/cert/cacert.pem \
--log-opt splunk-caname=SplunkServerDefaultCert \
--log-opt tag="{{.Name}}/{{.FullID}}" \
--log-opt labels=location \
--log-opt env=TEST \
--env "TEST=false" \
--label location=west \
your/application
託管在 Splunk Cloud 上的 Splunk 例項的 splunk-url
格式類似於 https://http-inputs-XXXXXXXX.splunkcloud.com
,不包含埠說明符。
訊息格式
有三種日誌記錄驅動程式訊息格式:inline
(預設)、json
和 raw
。
預設格式是 inline
,其中每個日誌訊息都作為字串嵌入。例如:
{
"attrs": {
"env1": "val1",
"label1": "label1"
},
"tag": "MyImage/MyContainer",
"source": "stdout",
"line": "my message"
}
{
"attrs": {
"env1": "val1",
"label1": "label1"
},
"tag": "MyImage/MyContainer",
"source": "stdout",
"line": "{\"foo\": \"bar\"}"
}
要將訊息格式化為 json
物件,請設定 --log-opt splunk-format=json
。驅動程式會嘗試將每一行解析為 JSON 物件,並將其作為嵌入物件傳送。如果無法解析訊息,則會以 inline
格式傳送。例如:
{
"attrs": {
"env1": "val1",
"label1": "label1"
},
"tag": "MyImage/MyContainer",
"source": "stdout",
"line": "my message"
}
{
"attrs": {
"env1": "val1",
"label1": "label1"
},
"tag": "MyImage/MyContainer",
"source": "stdout",
"line": {
"foo": "bar"
}
}
要將訊息格式化為 raw
,請設定 --log-opt splunk-format=raw
。屬性(環境變數和標籤)和標籤會前置到訊息中。例如:
MyImage/MyContainer env1=val1 label1=label1 my message
MyImage/MyContainer env1=val1 label1=label1 {"foo": "bar"}
高階選項
Splunk 日誌記錄驅動程式允許您透過為 Docker 守護程序設定環境變數來配置一些高階選項。
環境變數名稱 | 預設值 | 描述 |
---|---|---|
SPLUNK_LOGGING_DRIVER_POST_MESSAGES_FREQUENCY | 5秒 | 等待更多訊息進行批次處理的時間。 |
SPLUNK_LOGGING_DRIVER_POST_MESSAGES_BATCH_SIZE | 1000 | 在一個批次中傳送之前應累積的訊息數量。 |
SPLUNK_LOGGING_DRIVER_BUFFER_MAX | 10 * 1000 | 緩衝區中為重試而保留的最大訊息數。 |
SPLUNK_LOGGING_DRIVER_CHANNEL_SIZE | 4 * 1000 | 用於向後臺日志記錄工作程式傳送訊息的通道中可存在的最大待處理訊息數,該工作程式會對訊息進行批處理。 |