我們剛剛從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