gpt4 book ai didi

logstash - 如何在 Logstash 5.X 中使用环境变量?

转载 作者:行者123 更新时间:2023-12-02 04:36:23 24 4
gpt4 key购买 nike

我们刚刚从 2.X 切换到 5.X,我正在尝试找出如何在管道配置文件中使用环境变量。

在 2.X 中,以下工作有效:

export HOSTNAME

然后使用 --allow-env 启动 Logstash命令行标志。管道配置文件如下所示:
filter {
mutate {
add_field => { "some_field" => "${HOSTNAME}"}
}
}

文档说 --allow-env不再需要标志。

我试过更换 mutateenvironment过滤,但没有运气。

我试图编辑 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 .

最佳答案

如果手动启动,环境变量显然有效:

有了这样的 test.conf:

input {
stdin { codec => "json" }
}
filter {
mutate {
add_field => {
"hostname" => "${HOSTNAME}"
}
}
}

output {
stdout { codec => "rubydebug" }
}

我们可以运行一个测试并验证它:
% export HOSTNAME="abc1234" 
% echo '{"a":1}' | bin/logstash -f test.conf
Sending Logstash's logs to /Users/xxxxxx/logstash-5.1.1/logs which is now configured via log4j2.properties
[2017-02-16T09:04:33,442][INFO ][logstash.inputs.stdin ] Automatically switching from json to json_lines codec {:plugin=>"stdin"}
[2017-02-16T09:04:33,454][INFO ][logstash.pipeline ] Starting pipeline {"id"=>"main", "pipeline.workers"=>8, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>5, "pipeline.max_inflight"=>1000}
[2017-02-16T09:04:33,457][INFO ][logstash.pipeline ] Pipeline main started
[2017-02-16T09:04:33,492][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}
{
"a" => 1,
"hostname" => "abc1234",
"@timestamp" => 2017-02-16T15:04:33.497Z,
"@version" => "1",
"host" => "XXXXXX.local",
"tags" => []
}
[2017-02-16T09:04:36,472][WARN ][logstash.agent ] stopping pipeline {:id=>"main"}

所以真正的问题是为什么它在你的场景中不起作用。如果您正在使用某种 /etc/init.d启动logstash的脚本,然后你可以添加到 /etc/sysconfig/logstashexport HOSTNAME="whatever" 这样的一行

关于logstash - 如何在 Logstash 5.X 中使用环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42277188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com