从没有年份组件的日期中提取时间戳

时间:2017-11-30 11:16:22

标签: elasticsearch logstash filebeat

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。在新的一年里,我担心我会遇到麻烦,以及如何从当前时间中扣除这一年。我的问题是:

  1. 是否可以从给定的数据中解析日期字段?
  2. 有没有办法为日期转换编写一些高级逻辑?
  3. 由于我们尚未过新年,有没有办法手动检查/确保自动转换正确完成?

0 个答案:

没有答案