Splunk 日志记录驱动程序
这splunklogging 驱动程序将容器日志发送到 Splunk Enterprise 和 Splunk Cloud 中的 HTTP 事件收集器。
用法
您可以将 Docker 日志记录配置为使用splunkdriver 或
每个容器。
要使用splunkdriver 作为默认的日志记录驱动程序,请设置 keyslog-driver和log-opts设置为daemon.json配置文件并重启 Docker。例如:
{
"log-driver": "splunk",
"log-opts": {
"splunk-token": "",
"splunk-url": "",
...
}
}daemon.json 文件位于/etc/docker/在 Linux 主机上或C:\ProgramData\docker\config\daemon.json在 Windows Server 上。有关
使用 配置 Dockerdaemon.json,请参阅 daemon.json。
注意
log-opts配置选项中的daemon.json配置文件必须 以字符串形式提供。布尔值和数值(例如splunk-gzip或splunk-gzip-level) 必须用引号括起来 ()."
要使用splunk驱动程序,请使用命令行标志--log-driver和log-opt跟docker run:
$ docker run --log-driver=splunk --log-opt splunk-token=VALUE --log-opt splunk-url=VALUE ...
Splunk 选项
以下属性允许您配置 Splunk 日志记录驱动程序。
- 要配置
splunk驱动程序,编辑daemon.json使用密钥"log-opts": {"NAME": "VALUE", ...}. - 要配置
splunk驱动程序,请使用docker run带国旗,--log-opt NAME=VALUE ....
| 选择 | 必填 | 描述 |
|---|---|---|
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 个字符)。请参阅 log tag option 文档 以自定义日志标签格式。 |
labels | 自选 | 以逗号分隔的标签键列表,如果为 container 指定了这些标签,则应包含在 message 中。 |
labels-regex | 自选 | 与 类似并兼容labels.用于匹配与日志记录相关的标签的正则表达式。用于高级日志标记选项。 |
env | 自选 | 环境变量键的逗号分隔列表,如果为 container 指定了这些变量,则应包含在 message 中。 |
env-regex | 自选 | 与 类似并兼容env.用于匹配与日志记录相关的环境变量的正则表达式。用于高级日志标记选项。 |
如果label和envkeys 的env优先。这两个选项都会向
logging 消息。
以下是为 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-url对于 Splunk Cloud 上托管的 Splunk 实例,其格式为
喜欢https://http-inputs-XXXXXXXX.splunkcloud.com,并且不包含
port 说明符。
消息格式
有三种日志记录驱动程序消息格式: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.这
driver 尝试将每一行解析为 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 日志记录驱动程序允许您通过设置 环境变量。
| 环境变量名称 | 默认值 | 描述 |
|---|---|---|
SPLUNK_LOGGING_DRIVER_POST_MESSAGES_FREQUENCY | 5s | 等待更多消息进行批处理的时间。 |
SPLUNK_LOGGING_DRIVER_POST_MESSAGES_BATCH_SIZE | 1000 | 在批量发送消息之前应累积的消息数。 |
SPLUNK_LOGGING_DRIVER_BUFFER_MAX | 10 * 1000 | 缓冲区中保留用于重试的最大消息数。 |
SPLUNK_LOGGING_DRIVER_CHANNEL_SIZE | 4 * 1000 | 用于将消息发送到后台记录器工作程序(对消息进行批处理)的通道中可以包含的最大待处理消息数。 |