【发布时间】:2017-04-11 08:21:51
【问题描述】:
我想打印“主机源”来输出。为此,需要局部或全局变量。但我不想使用像'export ...'这样的全局变量。 所以在输入{}之前,我将主机放在元数据中,然后在“输入{}”中使用。 如下:
filter{
environment{
add_field =>{
"[@metadata][TEMP]" => "127.0.0.1"
}
}
}
input{
udp{
host => "%{[@metadata][TEMP]}"
port => "10000"
}
}
output{
udp{
host => "127.0.0.1"
port => "10001"
}
}
但logstash没有运行,那么日志如下:
[WARN ][logstash.inputs.udp ] UDP listener died {:exception=>#<SocketError: bind: name or service not known>known>
那么如何解决这个问题呢??
【问题讨论】:
-
你能检查你的端口是否已经在使用吗?您可以使用 'sudo lsof -nPi :10000' 获取此信息
-
@ChristianHäckh 感谢您的回复。没有使用该端口,因为如果我设置主机 =>“127.0.0.1”,那么它就可以工作。
-
过滤器应用于输入之后的事件。环境过滤器可用于访问环境变量并相应地更改事件,而不是设置新的环境变量。如果你想使用环境变量,你应该导出它们。
-
@ChristianHäckh 感谢您的回复。我理解你的评论。我可以在没有环境变量的情况下将 'input{}' 中 udp 的主机值使用到另一端,如 'filter{}' 吗?因为我想在输出端打印 udp 的主机值。但是在“udp{}”中,主机没有使用“add_field”添加到字段中。
-
您的主机值是动态的还是静态的?如果它是静态的,您可以使用“mutate”过滤器向事件添加一个字段。
标签: elasticsearch logstash elastic-stack logstash-configuration