Splunk日志记录驱动程序
预计阅读时间:8分钟
该splunk
日志驱动程序发送集装箱日志
HTTP事件收集器
中的Splunk Enterprise和Splunk的云。
用法
您可以将Docker日志配置splunk
为默认情况下或基于每个容器使用驱动程序。
要将splunk
驱动程序用作默认的日志记录驱动程序,请在
配置文件中将密钥log-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上。有关使用来配置Docker的更多信息daemon.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
在Docker环境中配置驱动程序,请daemon.json
使用键进行编辑"log-opts": {"NAME": "VALUE", ...}
。 - 要
splunk
为单个容器配置驱动程序,请docker run
与标志一起使用--log-opt NAME=VALUE ...
。
选项 | 必需的 | 描述 |
---|---|---|
splunk-token |
必需的 | Splunk HTTP事件收集器令牌。 |
splunk-url |
必需的 | 路径到您的Splunk企业,自我服务的Splunk Cloud实例,或Splunk的云管理的集群(包括端口和方案通过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-url
Splunk Cloud上托管的for Splunk实例采用类似格式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对象,则可能需要将它们嵌入到我们发送给Splunk的消息中。
要将消息格式化为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 |
5s |
如果没有要批处理的内容,驱动程序会多久发布一次消息。您可以将其视为等待更多消息批量处理的最长时间。 |
SPLUNK_LOGGING_DRIVER_POST_MESSAGES_BATCH_SIZE |
1000 |
驱动程序在批量发送之前应等待多少条消息。 |
SPLUNK_LOGGING_DRIVER_BUFFER_MAX |
10 * 1000 |
如果驱动程序无法连接到远程服务器,则它可以保存在缓冲区中以进行重试的最大消息量是多少。 |
SPLUNK_LOGGING_DRIVER_CHANNEL_SIZE |
4 * 1000 |
该通道中可以有多少个待处理消息,用于将消息发送到后台记录器工作程序,该程序将它们分批处理。 |