logstash 弹性搜索日期输出不同

logstash elastic search date output is different

我的系统审核日志包含日期格式,如 created_at":1422765535789,因此,elastic search 输出也显示相同样式的日期。但是,我想将此 1422765535789 转换并打印为 unix 样式日期格式。

我在 syslog 文件中使用了这种格式(正如另一个问题线程所建议的)。但我没有得到以上值到 unix 风格的日期格式 日期 { 匹配 => ["created_at", "UNIX_MS"] }

嗨,我已经更新了 syslog 中的代码,但是,我得到 created_at 仍然以与 1422765535789 相同的格式输出到弹性搜索页面,请查找修改后的代码

input {
        stdin {

        }
}


filter {
        grok {
        match => [ "message", "%{NUMBER:created_at}"
        ]
     }
if [message] =~ /^created_at/ {

        date {
                match => [ "created_at" , "UNIX_MS" ]
        }
        ruby {
            code => "
                    event['created_at'] =     Time.at(event['created_at']/1000);
            "
        }
   }
}
output {
  elasticsearch { host => localhost }
  stdout { codec => rubydebug }
}

date 过滤器用于更新 @timestamp 字段值。

input {
    stdin {

    }
}

filter {
    grok {
            match => [ "message", "%{NUMBER:created_at:int}"
                    ]
    }
    if "_grokparsefailure" not in [tags]
    {
            date {
                    match => [ "created_at" , "UNIX_MS" ]
            }
            ruby {
                    code => "
                            event['created_at'] = Time.at(event['created_at']/1000);
                    "
            }
    }
}

output
{
    stdout {
            codec => rubydebug
    }
}

这是我的配置。当我输入 1422765535789 时,它可以解析值并更新 @timestamp 字段值。

输出为

{
       "message" => "1422765535789",
      "@version" => "1",
    "@timestamp" => "2015-02-01T04:38:55.789Z",
          "host" => "ABC",
    "created_at" => "2015-02-01T12:38:55.000+08:00"
}

你可以发现 @timestamp 的值与 created_at 相同。 并且,ruby 过滤器用于将 created_at 转换为 UTC 格式。

仅供参考。