我正在尝试将日志文件索引到Elastic搜索。所有日志条目都被索引到名为message的字段中。 @timestamp字段显示索引条目的时间,而不是日志条目的时间戳。
我用grok处理器创建了一个摄取管道来定义日志条目的模式。我尝试了几种模式,但无法正常工作,特别是因为我不熟悉。
日志样本
2019-08-05 00:04:06 info [index.js]: Request: HTTP GET /
2019-08-05 00:04:06 error [error.js]: No authorization token was found
使用grok和日期处理器提取管道
"description" : "Extracting date from log line"
, "processors": [
{
"grok": {
"field": "message",
"patterns": ["%{yyyy-mm-dd HH:mm:ss:logtime} %{LOGLEVEL:loglevel} %{GREEDYDATA:message}"]
},
"date": {
"field": "logtime",
"target_field": "@timestamp",
"formats": ["yyyy-mm-dd HH:mm:ss"]
}
}
]
}
我想要的只是从日志消息中提取时间戳的功能,其他所有内容都可以忽略或通配或存储在仅一个变量(如message)中。因此,从本质上说,对日志文件建立索引应该对日志消息中的时间戳进行索引,并且消息的其余部分可以文本或字符串形式保留在一个字段中,而无需解析消息的其余部分。
任何帮助将不胜感激。
答案 0 :(得分:2)
将此模式用作grok
模式:
%{TIMESTAMP_ISO8601:logtime} %{LOGLEVEL:loglevel} %{GREEDYDATA:message}
使用thes设置timestamps
:
date{
match => ["logtime", "yyyy-MM-dd HH:mm:ss", "ISO8601"]
timezone => "Europe/Berlin"
target => "@timestamp"
}
您可以将timezone
更改为您的
答案 1 :(得分:0)
我对此进行了以下更改,并且现在正在对日志消息建立索引。虽然我不知道该怎么做,但是请感谢有人可以对此有所了解
我在filebeat配置文件的 Elasticsearch输出部分中设置了管道:“管道名称”设置。我将该行移动到文件路径部分正下方的 filebeat输入部分处,
filebeat.inputs: -类型:日志 路径: -D:\ home \ site \ wwwroot \ logs * .log 管道:“ redate”
现在日志消息已被索引。