Filebeat输入字段不发送到Logstash

Filebeat输入字段不发送到Logstash,logstash,logstash-grok,filebeat,Logstash,Logstash Grok,Filebeat,StackOverflow社区 我正在尝试使用Filebeat收集一些系统日志,然后在Kibana中查看它们之前使用LogStash进一步处理它们 现在,由于我有不同的日志位置,我试图在filebeat.yml中为每个日志添加特定的标识字段 - type: log enabled: true paths: - C:\Users\theod\Desktop\Logs\Test2\* processors: - add_fields: target: '' fi

StackOverflow社区

我正在尝试使用Filebeat收集一些系统日志,然后在Kibana中查看它们之前使用LogStash进一步处理它们

现在,由于我有不同的日志位置,我试图在filebeat.yml中为每个日志添加特定的标识字段

- type: log
   enabled: true
   paths:
     - C:\Users\theod\Desktop\Logs\Test2\*
processors:
 - add_fields:
    target: ''
   fields: 
    name:"drs"


 - type: log
   enabled: true
   paths:
     - C:\Users\theod\Desktop\Logs\Test\*
processors:
 - add_fields:
    target: ''
   fields: 
    name:"pos"
根据这一点,我尝试在Logstash conf文件中应用一些Grok过滤器:

input {
  beats {
    port => 5044
  }
}


filter
{    
if "pos" in [fields][name] {
        grok {
            match => { "message" => "\[%{LOGLEVEL:LogLevel}(?: ?)] %{TIMESTAMP_ISO8601:TimeStamp} \[%{GREEDYDATA:IP_Address}] \[%{GREEDYDATA:Username}] %{GREEDYDATA:Operation}] \[%{GREEDYDATA:API_RequestLink}] \[%{GREEDYDATA:Account_name_and_Code}] \[%{GREEDYDATA:Additional_Info1}] \[%{GREEDYDATA:Additional_Info2}] \[%{GREEDYDATA:Store}] \[%{GREEDYDATA:Additional_Info3}](?: ?)%{GREEDYDATA:Error}" }
        }   
}
if "drs" in [fields][name] {
        grok {
            match => { "message" => "%{TIMESTAMP_ISO8601:TimeStamp} \[%{DATA:Thread}] %{LOGLEVEL:LogLevel} (?: ?)%{INT:Sequence} %{DATA:Request_Header}] %{GREEDYDATA:Request}" }
        }   
}   
}



output
{
if "pos" in [fields][name] {
    elasticsearch {
    hosts => ["localhost:9200"]
    index => "[fields][name]logs-%{+YYYY.MM.dd}"
    }
}
else if "pos" in [fields][name] {
elasticsearch {
    hosts => ["localhost:9200"]
    index => "[fields][name]logs-%{+YYYY.MM.dd}"
    }
} else {
elasticsearch {
    hosts => ["localhost:9200"]
    index => "logs-%{+YYYY.MM.dd}"
    }
}
}
现在,每次我运行它时,Logstash conf中的条件都会被忽略。检查Filebeat日志,我注意到没有字段被发送到Logstash

有人能提供一些指导,也许能指出我做错了什么


谢谢大家!

您的Filebeat配置没有添加字段
[fields][name]
,而是在文档的顶层添加字段
[name]
,因为您的

您的所有条件测试都将使用不存在的字段
[fields][name]

更改条件以测试
[name]
字段

if "pos" in [name] { 
    ... your filters ...
}

我不得不对filebeat.yml文件做了一些修改,但最终,您的解决方案就是我需要的细节。非常感谢。
if "pos" in [name] { 
    ... your filters ...
}