elasticsearch - 无法用grok过滤日志

标签 elasticsearch logstash logstash-grok

我想用grok过滤日志,并且浏览了许多文档,但找不到解决问题的方法。我有这样的日志,

2017-01-24|15:00:11|UpToDate.Editorial.Service.Topic.IcgDataIslandSaveUtil|1|[(null)]| - Step 0, Start saving data island. 0.0010006 seconds since last step, 0.0020005 seconds since start. 

其格式为
date|time|class|level|user|log

我为此创建了一个conf文件,如下所示:
input {
    beats {
        port => "5044"
    }
}
filter {
  grok {
    match => { "message" => "%{YEAR}-%{MONTHNUM}-%{MONTHDAY}|%{HOUR}:%{MINUTE}:%{SECOND}|%{GREEDYDATA:class}|%{NUMBER:level}|%{GREEDYDATA:user}|%{GREEDYDATA:log}\n" }
  }
}
output {
    elasticsearch {
        hosts => [ "localhost:9200" ]
    }
}

但是它无法筛选出这些详细信息,而只是索引整个日志。谁能指出我在这里做错了什么?任何帮助将非常感激。

最佳答案

模式中有特殊字符。用这个:

%{YEAR}-%{MONTHNUM}-%{MONTHDAY}\|%{HOUR}:%{MINUTE}:%{SECOND}\|%{GREEDYDATA:class}\|%{NUMBER:level}\|%{GREEDYDATA:user}\|%{GREEDYDATA:log}<br/>

我在最后删除了“\ n”,它使我的解析混乱。而且,如果您再次遇到grok模式问题,请使用此网站,它会有所帮助:
http://grokconstructor.appspot.com/do/match

关于elasticsearch - 无法用grok过滤日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48219533/

相关文章:

node.js - 路径 ['somepath' 下的嵌套对象] 不是嵌套类型

elasticsearch - Logstash 转义 JSON key

elasticsearch - 从 logstash 中的 AWS S3 输入路径中提取字段

csv - Logstash CSV导入

parsing - 使用 ElasticSearch 索引和解析 XML 文件

elasticsearch - 通过grok过滤器(logstash)解析日志数据

regex - 在Apache NiFi中使用Grok进行模式匹配

elasticsearch - 如何使minimum_should_match与嵌套映射一起使用?

node.js - [fields] 中 START_ARRAY 的键未知。在 Elasticsearch 中

elasticsearch - Elasticsearch Java HighLevelRestClient如何创建not_analyzed索引?