elasticsearch logstash:如何在输入主机中使用环境变量
我想将“主机源”打印到输出。为了实现这一目标,需要局部或全局变量。但是我不想使用像“export…”这样的全局变量。 因此,在输入{}之前,我将主机放入元数据中,然后在“输入{}”中使用。 如下图所示:
elasticsearch logstash:如何在输入主机中使用环境变量,
elasticsearch,logstash,elastic-stack,logstash-configuration,
elasticsearch,Logstash,Elastic Stack,Logstash Configuration,我想将“主机源”打印到输出。为了实现这一目标,需要局部或全局变量。但是我不想使用像“export…”这样的全局变量。 因此,在输入{}之前,我将主机放入元数据中,然后在“输入{}”中使用。 如下图所示: filter{ environment{ add_field =>{ "[@metadata][TEMP]" => "127.0.0.1" } } } input{ udp{ host => "%{[@metadat
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"
}
}
[WARN ][logstash.inputs.udp ] UDP listener died {:exception=>#<SocketError: bind: name or service not known>known>
但logstash未运行,则日志如下所示:
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"
}
}
[WARN ][logstash.inputs.udp ] UDP listener died {:exception=>#<SocketError: bind: name or service not known>known>
[WARN][logstash.inputs.udp]udp侦听器已死亡{:异常=>#已知>
那么如何解决这个问题呢?让我试着分两步回答你的问题 错误消息
您的配置文件格式不正确。工作流始终如下所示:
# 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中搜索它。您可以检查您的端口是否已在使用吗?您可以通过“sudo lsof-nPi:10000”@ChristianHäckh获得此信息。感谢您的回复。该端口未被使用,因为如果我设置host=>“127.0.0.1”,然后就可以工作了。过滤器在输入后应用于事件。环境过滤器可用于访问环境变量并相应地更改事件,而不是设置新的环境变量。如果要使用环境变量,则应将其导出。@ChristianHäckh感谢您的回复。我理解您的评论。我可以使用h吗“input{}”中udp的ost值与没有环境变量的“filter{}”类似吗?因为我想在输出端打印udp的主机值。但是在“udp{}”中,主机不是使用“add_field”添加到字段中的。您的主机值是动态的还是静态的?如果是静态的,您可以使用“mutate”将一个字段添加到事件中筛选器。这还不够回答我的问题。我的问题是如何在主机值中使用本地或环境变量。因此,您确实建议使用ruby,可以在字段中使用包含主机的值。但此值不能像“input{}”那样用于其他方面。