我想打印'主机来源'来输出。为此目标,必须使用局部或全局变量。但我不想使用像'export ...'这样的全局变量。 所以在输入{}之前,我将主机放在元数据中,然后在'input {}'中使用。 如下所示:
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没有运行,那么log就像下面这样:
[WARN ][logstash.inputs.udp ] UDP listener died {:exception=>#<SocketError: bind: name or service not known>known>
那怎样才能解决这个问题?
答案 0 :(得分:0)
让我分两步尝试回答你的问题。
错误消息
您的配置文件格式错误。工作流程始终如下:
# This is a comment. You should use comments to describe
# parts of your configuration.
input {
...
}
filter {
...
}
output {
...
}
这就是您收到错误消息的原因,您的过滤器位于错误的位置,并且在输入之前未应用。
多个输入源
如果要根据使用的输入向事件添加信息,可以在输入处理期间添加类型。这是一个示例配置文件:
input {
file {
type => "file"
path => "/var/log/some_name.log"
}
udp{
type => "udp"
host => "127.0.0.1"
port => "10001"
}
}
filter {
# can be omitted, if not used
}
output {
udp{
host => "127.0.0.1"
port => "10001"
}
}
该类型存储为事件本身的一部分,因此您也可以使用该类型在Kibana中搜索它。