Vis*_*hwa 4 logstash logstash-grok
我在日志中的时间戳格式如下
2016-04-07 18:11:38.169 which is yyyy-MM-dd HH:mm:ss.SSS
Run Code Online (Sandbox Code Playgroud)
这个日志文件不是实时的(存储的/旧的),我试图用 logstash @timestamp 值替换这个时间戳,以改进 Kibana 可视化。
我在 logstash 中的过滤器如下所示
grok {
match => {
"message" => [ "(?<timestamp>(\d){4}-(\d){2}-(\d){2} (\d){2}:(\d){2}:(\d){2}.(\d){3}) %{SYSLOG5424SD} ERROR u%{BASE16FLOAT}.%{JAVACLASS} - TransId:2b948ed5-12c0-4ae0-9b99-f1ee01191001 - TransactionId ::\"2b948ed5-12c0-4ae0-9b99-f1ee01191001\"- Actual Time taken to process \:\: %{NUMBER:responseTime:int}" ]
}
}
date {
match => [ "timestamp:date" , "yyyy-MM-dd HH:mm:ss.SSS Z" ]
timezone => "UTC"
target => "@timestamp"
}
Run Code Online (Sandbox Code Playgroud)
但是,它并没有取代@timestamp 值,Json 值
{
"_index": "logstash-2017.02.09",
"_type": "logs",
"_id": "AVoiZq2ITxwgj2avgkZa",
"_score": null,
"_source": {
"path": "D:\\SoftsandTools\\Kibana\\Logs_ActualTimetakentoprocess.log",
"@timestamp": "2017-02-09T10:23:58.778Z", **logstash @timestamp**
"responseTime": 43,
"@version": "1",
"host": "4637",
"message": "2016-04-07 18:07:01.809 [SimpleAsyncTaskExecutor-3] ERROR s.v.wsclient.RestClient - TransId:2b948ed5-12c0-4ae0-9b99-f1ee01191001 - TransactionId ::\"2b948ed5-12c0-4ae0-9b99-f1ee01191001\"- Actual Time taken to process :: 43",
"timestamp": "2016-04-07 18:07:01.809" **Mine time stamp**
}
Run Code Online (Sandbox Code Playgroud)
示例日志行 -
2016-04-07 18:11:38.171 [SimpleAsyncTaskExecutor-1] ERROR s.v.wsclient.RestClient - TransId:2b948ed5-12c0-4ae0-9b99-f1ee01191001 - TransactionId ::"2b948ed5-12c0-4ae0-9b99-f1ee01191001"- Actual Time taken to process :: 521
Run Code Online (Sandbox Code Playgroud)
你能不能帮我一下,让我知道,我要去哪里拧..
您基本上应该有一个grok匹配才能使用timestamp您的日志行:
grok {
patterns_dir => ["give your path/patterns"]
match => { "message" => "^%{LOGTIMESTAMP:logtimestamp}%{GREEDYDATA}" }
}
Run Code Online (Sandbox Code Playgroud)
在您的模式文件中,确保timestamp在日志中具有与您匹配的模式,它可能如下所示:
LOGTIMESTAMP %{YEAR}%{MONTHNUM}%{MONTHDAY} %{TIME}
Run Code Online (Sandbox Code Playgroud)
然后,一旦完成grok过滤,您就可以使用过滤后的值,例如:
mutate {
add_field => { "newtimestamp" => "%{logtimestamp}" }
remove_field => ["logtimestamp"]
}
date {
match => [ "newtimestamp" , "ISO8601" , "yyyy-MM-dd HH:mm:ss.SSS" ]
target => "@timestamp" <-- the timestamp which you wanted to apply on
locale => "en"
timezone => "UTC"
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
9669 次 |
| 最近记录: |