gpt4 book ai didi

elasticsearch - Logstash日期过滤器不再匹配

转载 作者:行者123 更新时间:2023-12-02 23:38:40 25 4
gpt4 key购买 nike

我正在研究一组ELK服务以在内部进行部署,并且已经在一些初始测试计算机上淘汰了配置,现在将其移植到Chef Cookbook。为了使我的菜谱更具扩展性,我编写了Logstash配置模板作为单个函数,该模板读取Chef节点数据并输出配置。为了使LS配置文件具有嵌套结构,需要进行一些特殊的引用。

无论如何,一旦我开始从测试机中获取数据,我注意到Logstash再次使用了时间戳,该时间戳是针对@timestamp接收的事件,而不是从事件中提取的时间戳。我不知道为什么。

以下是我的初始测试机和当前测试机的配置和事件示例。我已经将filter语句缩减为date部分,并修剪了除相关事件数据以外的所有内容。

初始版本:

filter {
date {
match => ["timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss", "ISO8601"]
target => "@timestamp"
}
}

解析事件:
{
"message": "Oct 1 05:32:07 web-01-01 postfix/smtp[12517]: 0E3E263266: to=<foo@blah.com>, relay=mta.blah.net[1.2.3.4]:25, delay=1.4, delays=0.23/0/0.11/1, dsn=2.0.0, status=sent (250 ok dirdel)",
"@timestamp": "2014-10-01T05:32:07.000Z",
"timestamp": "Oct 1 05:32:07",
}

厨师版:
filter {
date {
"match" => [
"timestamp",
"MMM d HH:mm:ss",
"MMM dd HH:mm:ss",
"ISO8601"
]
"target" => "@timestamp"
}
}

解析事件:
{
"message": "Oct 29 16:45:15 web-01-01 postfix/smtp[18596]: 05D9D63FA0: to=<foo@bla.com>, relay=mailin-01.mx.blah.com[1.2.3.4]:25, delay=1.1, delays=0.03/0/0.34/0.75, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 7B67F7000557B)",
"@timestamp": "2014-10-30T18:41:33.660Z",
"timestamp": "Oct 29 16:45:15",
}

提前致谢。

编辑:

这是完整的过滤器部分,包括 grok部分:
filter {
date {
"match" => [
"timestamp",
"MMM d HH:mm:ss",
"MMM dd HH:mm:ss",
"ISO8601"
]
"target" => "@timestamp"
}
grok {
"type" => "postfix"
"patterns_dir" => [
"/opt/logstash/etc/grok_patterns"
]
"pattern" => [
"%{SYSLOGBASE} %{POSTFIXSMTPDCONNECTS}",
"%{SYSLOGBASE} %{POSTFIXSMTPDACTIONS}",
"%{SYSLOGBASE} %{POSTFIXSMTPDTIMEOUTS}",
"%{SYSLOGBASE} %{POSTFIXSMTPDLOGIN}",
"%{SYSLOGBASE} %{POSTFIXSMTPDCLIENT}",
"%{SYSLOGBASE} %{POSTFIXSMTPRELAY}",
"%{SYSLOGBASE} %{POSTFIXSMTPCONNECT}",
"%{SYSLOGBASE} %{POSTFIXSMTP4XX}",
"%{SYSLOGBASE} %{POSTFIXSMTP5XX}",
"%{SYSLOGBASE} %{POSTFIXSMTPREFUSAL}",
"%{SYSLOGBASE} %{POSTFIXSMTPLOSTCONNECTION}",
"%{SYSLOGBASE} %{POSTFIXSMTPTIMEOUT}",
"%{SYSLOGBASE} %{POSTFIXBOUNCE}",
"%{SYSLOGBASE} %{POSTFIXQMGR}",
"%{SYSLOGBASE} %{POSTFIXCLEANUP}"
]
"named_captures_only" => "true"
}
}

后缀模式来自 https://gist.github.com/jbrownsc/4694374,但我不认为它们在这种情况下非常重要。

最佳答案

我根据您的配置构建了以下配置,并且可以正常工作。配置中唯一奇怪的事情是将'@message'复制到'timestamp'。尽管我们确实看到您确实有一个有效的“时间戳”字段,但这通常是由您的grok {}(您未发布)完成的。

input {
stdin{}
}

filter {
mutate {
add_field => [ "timestamp", "%{message}" ]
}

date {
"match" => [
"timestamp",
"MMM d HH:mm:ss",
"MMM dd HH:mm:ss",
"ISO8601"
]
"target" => "@timestamp"
}
}

output {
stdout{ codec => rubydebug }
}

和输出,显示正确设置的@timestamp。
{
"message" => "Oct 29 16:45:15",
"@version" => "1",
"@timestamp" => "2015-10-29T23:45:15.000Z",
"host" => "0.0.0.0",
"timestamp" => "Oct 29 16:45:15"
}

关于elasticsearch - Logstash日期过滤器不再匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26665384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com