无法让 Metricbeat 使用传递的环境变量

Can't make Metricbeat use passed env variable

我正尝试根据 official documentation(版本 7.2.0)在 docker 中 运行 metricbeat 服务。这是我的 bash 命令 setup:

docker run -d --name=metricbeat docker.elastic.co/beats/metricbeat:7.2.0 setup\
 -e setup.kibana.host=http://XXX.XXX.XXX.XXX:5601\
 -e output.elasticsearch.host=["XXX.XXX.XXX.XXX:9200"]\
 -e output.elasticsearch.password=XXXXXXXX

如您所见,我正在传递 output.elasticsearch.host 变量,它绝对不等于默认值。但这是 metricbeat 容器日志的一部分:

2019-07-31T14:32:40.335Z        INFO    elasticsearch/client.go:166     Elasticsearch url: http://elasticsearch:9200

这意味着metricbeat使用了默认的弹性主机而不是环境变量值。我该如何解决?

你打错了,output.elasticsearch.hosts中少了一个s

在整个环境变量定义周围使用双引号,在主机值周围使用单引号,例如:

-E "output.elasticsearch.hosts=['http://myhost:9200']"

上面的例子直接取自global flags.

的官方文档