©
本文档使用
php.cn手册 发布
splunk
日志驱动程序发送集装箱日志HTTP事件收集器中的Splunk Enterprise和Splunk的云。
要将splunk
驱动程序用作默认日志记录驱动程序,请将该键log-driver
和log-opt
键设置daemon.json
为位于/etc/docker/
Linux主机或C:\ProgramData\docker\config\daemon.json
Windows Server 上的文件中的适当值。有关+使用Docker配置的更多信息daemon.json
,请参阅+ daemon.json。
以下示例将日志驱动程序设置为splunk
。
{ "log-driver": "splunk"}
重新启动Docker以使更改生效。
您可以使用以下--log-driver
选项来设置特定容器的日志记录驱动程序docker run
:
docker run --log-driver=splunk ...
您可以使用该--log-opt NAME=VALUE
标志来指定这些额外的Splunk日志记录驱动程序选项:
选项 | 需要 | 描述 |
---|---|---|
splunk-token | 需要 | Splunk HTTP事件收集器令牌。 |
splunk-url | 需要 | 以下列格式之一指向您的Splunk Enterprise,自助服务Splunk Cloud实例或Splunk云托管群集(包括HTTP Event Collector使用的端口和方案)的路径: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 | 可选的 | 消息格式。可以是内联,json或raw。默认为内联。 |
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 | 可选的 | 如果这些标签是为容器指定的,则应在消息中包含标签的键的逗号分隔列表。 |
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 Splunk的情况下,是在像格式https://http-inputs-XXXXXXXX.splunkcloud.com
,并且不包括端口说明。
默认情况下,日志驱动程序将消息发送给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的消息中。通过指定--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 | 通道中有多少待处理消息可用于将消息发送给后台记录器工作人员,后者将对这些消息进行批处理。 |