elasticsearch - Logstash - 使用当前日期作为时间戳日期

标签 elasticsearch logstash logstash-grok logstash-configuration

我想使用当天作为时间戳(日期),因为我们的日志文件中没有此信息。 示例 -> main_core.log:

04:00:19.675 [ActiveMQ Task-9] INFO  a.b.c.t.failover.FailoverTransport - Successfully reconnected to ssl://localhost:12345

我想将其拆分并使用当天作为日期和日志文件中的时间戳。

这可能吗?

谢谢并致以诚挚的问候

最佳答案

您可以添加一个字段,其中包含日志中缺少的时间戳部分,然后与包含小时的变量连接并将其用作 @timestamp 字段。

下面的过滤器执行以下操作:

filter {
    grok {
        break_on_match => false
        match => ["message","%{TIME:hour} %{GREEDYDATA:msg}"]
        tag_on_failure => [ "_grokparsefailure"]
        add_field => { "time" => "%{+YYYY-MM-dd}"}
        add_field => { "timestamp" => "%{time} %{hour}" }
    }
    date {
        target => "@timestamp"
        match => ["timestamp", "YYYY-MM-dd HH:mm:ss.SSS"]
    }
}

首先,它会将您的消息与 grok 模式相匹配,该模式将提取小时并将其保存在字段名称 hour 中,其余部分将保存在字段名称 msg 中code>,但如果需要,您可以解析其余部分。

然后它将添加一个字段名称time,其模式为YYYY-MM-dd,例如2018-07-12

之后,它将创建一个名为 timestamp 的字段,该字段包含 time 字段和 hour 字段,这将导致 2018 -07-12 4:00:19.675

date过滤器用于使用您生成的时间戳作为elastic中的默认时间戳字段,即@timestamp

此过滤器的 Logstash 输出如下所示:

{
 "@timestamp":"2018-07-12T04:00:19.675Z",
 "message":"04:00:19.675 [ActiveMQ Task-9] INFO a.b.c.t.failover.FailoverTransport - Successfully reconnected to ssl://localhost:12345",
 "timestamp":"2018-07-12 04:00:19.675",
 "msg":"[ActiveMQ Task-9] INFO  a.b.c.t.failover.FailoverTransport - Successfully reconnected to ssl://localhost:12345",
 "time":"2018-07-12",
 "@version":"1",
 "hour":"04:00:19.675",
 "host":"logstash-hostname"
}

关于elasticsearch - Logstash - 使用当前日期作为时间戳日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51305455/

相关文章:

elasticsearch - 使用 logstash 更新/删除现有日志条目

elasticsearch - logstash|elasticsearch - 维护原始插入序列

elasticsearch - 无法生成geo_point数据类型为Logstash的geo_point字段

logstash - 日志文件中不同类型日志的 Grok 模式

elasticsearch - elasticsearch-使用logstash日期导入csv未解析为datetime类型

elasticsearch - 在logstash文件中输出的max_value大小是多少?

elasticsearch - Gradle构建即使实际上在其中也找不到JAVA_HOME

elasticsearch - 自动id生成和映射_id NEST

mongodb - 优化后端搜索引擎的设计

elasticsearch - 索引前如何预处理文档?