更多文章:WorkMap技术博客
简介
splunk日志驱动程序将容器日志发送到Splunk Enterprise和Splunk Cloud中的HTTP事件收集器。
用法
您可以通过默认或按容器配置Docker日志记录使用splunk驱动程序。
要将splunk驱动程序用作默认日志记录驱动程序,请在daemon.json配置文件中设置log-driver和log-opts键的适当值,并重新启动Docker。例如:
使用方法
- 修改daemon.json
Linux:/etc/docker/
Windows Server:C:\ProgramData\docker\config\daemon.json{ “log-driver”:“splunk”, “log-opts”:{ “splunk-token”:“”, “splunk-url”:“”, } }
- 重新启动 Docker 以使新创建的容器生效更改。现有容器不使用新的日志配置。
- 创建容器,使用指定的日志驱动
docker run --log-driver = splunk --log-opt splunk-token = VALUE --log-opt splunk-url = 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
可选
附加到日志消息中CONTAINER_TAG和SYSLOG_IDENTIFIER字段。
-
labels
可选
启动Docker守护程序时添加。可以作为容器元数据,由日志驱动程序读取,配置自定义日志格式。
-
labels-regex
可选
和labels类似的功能。
-
env
可选
启动Docker守护程序时添加。作为容器元数据,由日志驱动程序读取,配置自定义日志格式。
-
env-regex
可选
和env类似,用于匹配与日志记录相关的环境变量的正则表达式。
使用示例
以下为Splunk Enterpris实例安装在与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云上托管的Splunk实例的splunk-url格式类似于https://http-inputs-XXXXXXXX.splunkcloud.com,不包括端口指定符。
splunk消息格式
有三种日志驱动程序消息格式: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对象并将其嵌入Splunk消息发送。
如果无法解析消息,则以内联方式发送。例如:{ "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" } }
-
要将消息格式化为原始格式,请设置–log-opt splunk-format=raw。属性(环境变量和标签)和标记将作为消息的前缀。例如:
MyImage/MyContainer env1=val1 label1=label1 my message
MyImage/MyContainer env1=val1 label1=label1 {"foo": "bar"}
高级选项
-
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
在用于将消息发送到后台记录器工作程序的通道中,可以有多少个待处理消息,该通道对它们进行批处理。