我们刚刚从2.X切换到5.X,并试图找出如何在管道配置文件中使用环境变量。如何在Logstash 5.X中使用环境变量?
在2.X,下面的工作:
export HOSTNAME
然后用--allow-env
命令行标志启动Logstash。管道配置文件如下所示:
filter {
mutate {
add_field => { "some_field" => "${HOSTNAME}"}
}
}
该文档说明--allow-env
标志不再需要。
我试图用environment
过滤器代替mutate
,但没有运气。我试过编辑startup.options
文件。添加HOSTNAME
作为通常的环境变量,并将其添加到read-EOM
部分之间,但没有任何积极结果。
如果我将以下部分添加到/usr/share/logstash/bin/logstash.lib.sh
文件中,现在似乎正在工作,但我坚信如果我应该编辑该文件。
HOSTNAME="the-name-of-the-host"
export HOSTNAME
所以我的问题是:我忽略了什么?在Logstash的管道配置文件中允许使用环境变量的正确方法是什么?
注:
像Alcanzar描述,这个工作如果我手动运行Logstash。但是我们想用systemctl
来运行它,所以它应该在启动时由守护进程自动启动。在2.X中,它与/etc/init.d/logstash
文件一起工作良好,但是如documentation所述,那不是更多。我应该编辑的文件是:/etc/logstash/startup.options
和/etc/logstash/logstash.yml
。
是的,你对此完全正确。我忘了提及我们想用systemctl命令来运行它。该文档提到'/ etc/logstash/startup.options'文件和'/ etc/logstash/logstash.yml',所以我添加了前面提到的确切代码行,但没有任何运气。 – Letokteren
我想也许这会告诉你如何为systemd设置环境变量 - http:// serverfault。com/questions/413397/how-to-set-environment-variable-in-systemd-service - 我不使用systemd,但信息看起来很稳固 – Alcanzar