This topic是相关的,但跳过了我感兴趣的部分。
我正在使用filebeat来读取以自定义格式编写的CA Service Desk Manager日志,我无法更改。单个日志行看起来像这样:
11/07 13:05:26.65 <hostname> dbmonitor_nxd 9192 SIGNIFICANT bpobject.c 2587 Stats: imp(0) lcl(0) rmt(1,1) rmtref(0,0) dbchg(0)
正如您所看到的,开头的日期没有年份信息。
然后我使用logstash从日志行解析日期。我有像这样定义的额外模式TIMESTAMP:
TIMESTAMP %{MONTHNUM}[/]%{MONTHDAY}%{SPACE}%{TIME}
然后在logstash.conf中我有以下过滤器:
grok {
patterns_dir => ["./patterns"]
match => { "message" => [
"%{TIMESTAMP:time_stamp}%{SPACE}%{WORD:server_name}%{SPACE}%{DAEMONNAME:object_name}%{SPACE}%{INT:object_id:int}%{SPACE}%{WORD:event_type}%{SPACE}%{USERNAME:object_file}%{SPACE}%{INT:object_line_number:int}%{SPACE}%{GREEDYDATA:log_message}"
]
}
}
date{
match => ["time_stamp", "MM/d HH:mm:ss.SS", "MM/dd HH:mm:ss.SS", "ISO8601"]
}
目前我必须依赖自动时间戳,因为time_stamp被索引为文本,到目前为止我一直很好,但偶尔在服务器上写日志行的时间与推送它的时间不一样进入ES。在新的一年里,我担心我会遇到麻烦,以及如何从当前时间中扣除这一年。我的问题是: