首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Logstash -使用当前日期作为时间戳日期

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

Stack Overflow用户
提问于 2018-07-12 12:14:15
回答 1查看 4.5K关注 0票数 2

我想使用当前日期作为时间戳(日期),因为这些信息在我们的日志文件中是不可用的。示例-> main_core.log:

代码语言:javascript
复制
04:00:19.675 [ActiveMQ Task-9] INFO  a.b.c.t.failover.FailoverTransport - Successfully reconnected to ssl://localhost:12345

我想将它分开,并使用当前日期作为日志文件中的日期和时间戳。

这可能吗?

谢谢,并致以许多问候

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-12 20:12:14

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

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

代码语言:javascript
复制
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中,但如果需要,则可以解析其余内容。

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

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

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

用于此筛选器的日志存储输出如下所示:

代码语言:javascript
复制
{
 "@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"
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51305455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档