Filebeat 输入字段不会发送到 Logstash
Filebeat Input Fields are not sent to Logstash
Whosebug 社区!
我正在尝试使用 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]
因为您的 target configuration.
processors:
- add_fields:
target: ''
fields:
name:"pos"
你所有的条件测试字段 [fields][name]
,它不存在。
更改条件以测试 [name]
字段。
if "pos" in [name] {
... your filters ...
}
Whosebug 社区!
我正在尝试使用 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]
因为您的 target configuration.
processors:
- add_fields:
target: ''
fields:
name:"pos"
你所有的条件测试字段 [fields][name]
,它不存在。
更改条件以测试 [name]
字段。
if "pos" in [name] {
... your filters ...
}