由于重复了类似的问题,我已经注意查看以前的答案,遗憾的是它没有解决我的问题。
通过下面提到的logstash的过滤器配置,我希望在解析日志之后生成字段线程,日志级别和消息。
我已在https://grokdebug.herokuapp.com/上尝试过此过滤器,输出会生成过滤器中提到的字段。
然而,除了消息之外,输出JSON / Kibana上没有显示任何字段。解析时没有错误。
如果有人能在这里指出错误,那会有所帮助。谢谢!
过滤配置
filter {
if [type] == "reporting" {
grok {
match => { "message" => "\[(?<timestamp>%{TIMESTAMP_ISO8601})\] - %{NOTSPACE:thread} - %{LOGLEVEL:loglevel} (?<logger>[A-Za-z0-9$_.]+) - %{GREEDYDATA:message}$"}
}
}
}
记录示例
[2016-08-15 09:44:36,858] - RServer - INFO transformation - [01] starting the process for day 2016-06-06
生成JSON
{
"_index": "filebeat-2016.08.15",
"_type": "log",
"_id": "xxx",
"_score": null,
"_source": {
"message": "[2016-08-15 09:44:36,858] - RServer - INFO transformation - [01] starting the process for day 2016-06-06",
"@version": "1",
"@timestamp": "2016-08-15T09:44:37.700Z",
"source": "/xxx/yyy/main.log",
"count": 1,
"fields": {
"application": "reporting",
"category": "main"
},
"beat": {
"hostname": "xxx",
"name": "xxx"
},
"offset": 5033597,
"type": "log",
"input_type": "log",
"host": "xxx",
"tags": [
"beats_input_codec_plain_applied"
]
},
"fields": {
"@timestamp": [
1471254277700
]
},
"sort": [
1471254277700
]
}
答案 0 :(得分:0)
感谢@pandaadb的评论,我想到了检查FileBeat的配置并实现了一个字段,&#34; output_type&#34;失踪。这意味着进入的日志没有被过滤,因为过滤器期望某种类型。
使用&#34; output_type&#34;,将添加一个关键字,并由过滤器用于根据提到的GROK表达式解析日志。由于FileBeat的同一实例转发不同类别的日志,因此它在转发器本身而不是Logstash的输入配置中被标记。