环境在Ustntu中作为服务运行时,Logstash中的变量替换

时间:2016-06-27 22:39:34

标签: ubuntu ubuntu-14.04 logstash logstash-configuration

据我所知,logstash现在支持config中的环境变量,如here所述。

但是当我将logstash作为服务运行时,我似乎无法使其正常工作。我在ubuntu 14.04,logstash 1:2.3.3-1,我使用sudo service logstash start启动了logstash。

最后一点是我在docker容器中包含logstash,我不想在我的Dockerfile中硬编码变量值,我希望它在我启动容器时最终从命令行获取,例如docker run -e ES_HOST='my_host' ...etc...。这实际上是我想要使用环境变量的主要原因。

然而,这个值似乎并没有让它一直到logstash:

#<LogStash::ConfigurationError: Host '${ES_HOST}:443' was specified, but is not valid! Use either a full URL or a hostname:port string!>

即使把码头工作者从混合物中拿出来,当我将它作为服务运行时,我似乎无法获得logstash以查看环境变量。我发现this关于在ubuntu中为服务提供环境变量,所以我将这一行添加到/etc/default/logstash的末尾:

ES_HOST=my_host

我甚至将其插入/etc/init.d/logstash以确保它已设置:

[ -f /etc/default/logstash ] && . /etc/default/logstash
if [ -z "$ES_HOST" ] ;  then
  echo "ES_HOST is not set, please set it in /etc/default/logstash" >&2
  exit 1
fi

但是logstash仍然会出现同样的错误,抱怨Host '${ES_HOST}:443' was specified, but is not valid!

仅供参考/etc/logstash/conf.d/my-config中我的logstash配置的输出部分如下所示:

output {
  elasticsearch {
    hosts => ["${ES_HOST}:443"]
    ssl => true
  }
}

0 个答案:

没有答案