【问题标题】:LogStash: How to make a copy of the @timestamp field while maintaining the same time format?LogStash:如何在保持相同时间格式的同时制作@timestamp 字段的副本?
【发布时间】:2014-08-07 18:44:31
【问题描述】:

我想创建@timestamp 字段的副本,使其使用与@timestamp 相同的格式。

我尝试了以下方法:

mutate
{
    add_field => ["read_time", "%{@timestamp}"]
}

@timestamp 的格式为:2014-08-01T18:34:46.824Z

read_time 就是这种格式2014-08-01 18:34:46.824 UTC

这是一个问题,因为 Kibana 不理解直方图的“UTC”格式。

有没有办法使用日期过滤器来做到这一点?

【问题讨论】:

    标签: logstash


    【解决方案1】:

    Kibana 无法理解,因为read_time 字段是字符串,而不是时间戳! 您可以使用ruby 过滤器来做您需要的事情。只需将@timestamp 复制到一个新字段read_time 并且字段时间在timestamp 中,而不是字符串。 add_field 是添加一个具有字符串类型的新字段!

    这是我的配置:

    input {
        stdin{}
    }
    
    filter {
        ruby {
                code => "event['read_time'] = event['@timestamp']"
        }
        mutate
        {
            add_field => ["read_time_string", "%{@timestamp}"]
        }
    }
    
    output {
        stdout {
            codec => "rubydebug"
        }
    }
    

    你可以试试看输出,输出是:

    {
       "message" => "3243242",
      "@version" => "1",
    "@timestamp" => "2014-08-08T01:09:49.647Z",
          "host" => "BENLIM",
     "read_time" => "2014-08-08T01:09:49.647Z",
    "read_time_string" => "2014-08-08 01:09:49 UTC"
    }
    

    希望对你有帮助。

    【讨论】:

    • 你拯救了我的一天。我尝试将date 过滤器与match 通过@timestamptarget 一起使用到一个新字段,但由于某种原因date 未能解析其自己的时间戳-抛出cannot parse 异常。这个解决方案解决了这个问题。
    • 自 Logstash 5 以来已删除直接下标。您需要改用 set/get 方法:event.set('read_time', event.get('@timestamp'))
    【解决方案2】:

    您不需要运行任何 Ruby 代码。您可以只使用Mutate filter pluginadd_field 设置:

    mutate {
        # Preserve "@timestamp" as "logstash_intake_timestamp"
         add_field => { "logstash_intake_timestamp"=> "%{@timestamp}" }
    }
    date {
        # Redefines "@timestamp" field from parsed timestamp, rather than its default value (time of ingestion by Logstash)
        # FIXME: include timezone:
        match => [ "timestamp_in_weird_custom_format", "YYYY-MM-dd HH:mm:ss:SSS" ]
        tag_on_failure => ["timestamp_parse_failed"]
        target => "@timestamp"
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      • 1970-01-01
      • 2013-07-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多