我正在使用带有elasticsearch 1.3.4的logstash-1.4.0和kibana 3.1.1(我知道我已经过时了,这是我现在能做的最好的事情)。
日志示例:
2016-05-31 16:05:33 RequestManager [INFO]手动标志LOLROFLIN TRALALA 123456Was改为true
我的grok过滤器:
filter {
grok {
match => { "message" => "%{DATESTAMP:timestamp} %{WORD:clazz} %{NOTSPACE:level} %{GREEDYDATA:content}"}
}
if (!([stack_trace])) and (!([clazz] == "RequestAsset")) {
drop {}
}
}
我的问题是:
为什么我看不到kibana中的grok字段?我只看到默认字段但不是我的字段。 Grok Debugger显示成功,但kibana不起作用。
我的目标是删除任何没有堆栈跟踪或不是来自类的日志消息(在我的grok过滤器中称为clazz)“RequestAsset”。这有用吗?我可以在单独的if过滤器中使用grok过滤器创建的字段吗?
答案 0 :(得分:0)
我在这个grok debugger中测试了你的grok过滤器,但它失败了。所以我改写了它。
这是正确的grok过滤器。
filter {
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{WORD:clazz} %{NOTSPACE:level} %{GREEDYDATA:content}"}
}
if (!([stack_trace])) and (!([clazz] == "RequestAsset")) {
drop {}
}
TIMESTAMP_ISO8601 => %{YEAR}-%{MONTHNUM}-%{MONTHDAY}[T ]%{HOUR}:?%{MINUTE}(?::?%{SECOND})?%{ISO8601_TIMEZONE}?
如果你看到" _grokparsefailure"在Kibana,你知道你的grok过滤器失败了。
关于你的第二个问题,你不应该使用OR运算符吗?
答案 1 :(得分:0)
我意识到出了什么问题,我正在使用log4j插件,该插件已经将日志分离到其内容,而字段消息已经只是消息本身了。