在logstash中使用docker GELF驱动程序env/labels

Ere*_*ven 4 logstash docker

Docker GELF日志驱动程序允许envlabelslog-opts:

gelf日志记录驱动程序支持标签和env选项.它在额外字段上添加了额外的键,以下划线(_)为前缀(ref)

我想在弹性搜索输出的索引名称中使用它,但我无法弄清楚如何访问这些值或所述extra字段.

假设我有这些选项运行容器,

docker run -it \
  --log-driver gelf \
  --log-opt gelf-address=udp://127.0.0.1:12201 \
  --log-opt tag=some-app \
  --log-opt env=staging \
  --log-opt labels=staging \
  ubuntu:16.04 /bin/bash -c 'echo Hello World'
Run Code Online (Sandbox Code Playgroud)

我想使用env我在logstash配置中传递的值:

input {
  gelf { }
}

output {
  elasticsearch {
    hosts => ["http://127.0.0.1:9200"]
    index => "logstash-%{env-value-here}-%{tag}-%{+YYYY.MM.dd}"
  }
}
Run Code Online (Sandbox Code Playgroud)

关于使用Graylog的env /标签似乎还有另一个问题:Docker GELF驱动程序env选项

Ere*_*ven 9

在阅读添加此选项的PR之后,我意识到我误解了它应该如何工作.

--log-opt labels=a,b,c(与env相同)定义要包含在GELF事件中的键.实际上,这些值分别从docker标签和环境变量中检索.

--log-opt labels=foo --label foo=bar将包括foo: bar在活动中.