我有以下格式的日志文件可以提取到弹性搜索中,但是经过logstash过滤的数据没有推送到弹性搜索中。
相同的grok过滤配置能够从kibana devtools中获取
示例日志文件: OCDE-2019-05-22 13:24:34.000错误org.ramyam.ocde.task.NBALookupTask.checkResponsesToBeProcessed-checkResponsesToBeProcessed开始时间:IST 2019年5月22日星期三13:24:34
Filebeat配置:
filebeat.inputs: -类型:日志 已启用:true 路径: -C:\ data \ logs \ OCDE.log document_type:ocde
logstash配置:
input {
file {
type => "ocde"
path => "C:\data\logs\OCDE.log"
}
beats {
port => 5044
ssl => false
}
}
filter {
grok {
match => [ "message" ,'%{DATA:moduleName} - %{TIMESTAMP_ISO8601:loggerTime}\s+%{LOGLEVEL:level}\s+%{JAVACLASS:className}\.%{DATA:methodName} - %{GREEDYDATA:loggermsg}}']
}
}
output {
if [type]=="ocde"
{
elasticsearch
{
hosts => ["localhost:9200"]
#manage_template => false
index => "enliven_be_log_yyyymmdd"
document_type=> ocde
}
}
}
我期望弹性搜索中的上述配置产生以下结果
{
"level": "ERROR",
"loggerTime": "2019-05-22 13:24:34.000",
"moduleName": "OCDE",
"methodName": "checkResponsesToBeProcessed",
"className": "org.ramyam.ocde.task.NBALookupTask",
"loggermsg": "checkResponsesToBeProcessed started : Wed May 22 13:24:34 IST 2019"
}
任何人都可以解释或分享我缺少的示例配置
答案 0 :(得分:0)
您可以尝试以下grok模式-
%{DATA:moduleName}%{SPACE}*-%{SPACE}*%{TIMESTAMP_ISO8601:loggerTime}%{SPACE}*%{LOGLEVEL:level}%{SPACE}*%{JAVACLASS:className}\.%{DATA:methodName}%{SPACE}*-%{SPACE}*%{GREEDYDATA:loggermsg}
答案 1 :(得分:0)
从以下位置更改您的傻瓜:
%{DATA:moduleName} - %{TIMESTAMP_ISO8601:loggerTime}\s+%{LOGLEVEL:level}\s+%{JAVACLASS:className}\.%{DATA:methodName} - %{GREEDYDATA:loggermsg}}
至:
%{DATA:moduleName} - %{TIMESTAMP_ISO8601:loggerTime}\s+%{LOGLEVEL:level}\s+%{JAVACLASS:className}\.%{DATA:methodName} - %{GREEDYDATA:loggermsg}
要对此进行验证,请使用http://grokdebug.herokuapp.com/并将您提供的日志消息粘贴到“
您的模式效果很好,最后您只剩下了一个括号。