gpt4 book ai didi

kubernetes - Logstash,如何使用来自事件数据的grok模式

转载 作者:行者123 更新时间:2023-12-02 11:49:05 24 4
gpt4 key购买 nike

我在kubernetes上部署了一个ELK堆栈,用于收集容器的数据。在所有其他方法中,它使用grok过滤器根据模式分析实际的日志行。

我希望能够通过使用kubernetes Pane 中的注释来设置此模式。

我在elk-grok-pattern中添加了一个名为pod的注释,配置了filebeat以便转发该注释,到目前为止,我可以在eventlogstash中将注释值作为字段添加到字段中。

问题是我无法将字段的值用作grok pattern

我的广告连播中的注解如下:

Annotations:    elk-grok-pattern=%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:status} %{NUMBER:response_time}

我尝试使用的 filter与以下内容类似:
filter {
# create a new field called "elk-grok-pattern" from the pod annotation
mutate {
rename => { "[kubernetes][annotations][elk-grok-pattern]" => "elk-grok-pattern" }
}

grok {
pattern_definitions => {
"CUSTOM" => "%{elk-grok-pattern}"
}
match => { "log" => "%{CUSTOM}" }
}
}

不幸的是,这会导致错误:
Pipeline aborted due to error {:pipeline_id=>"main", :exception=>#<Grok::PatternError: pattern %{elk-grok-pattern} not defined>

实际上,grok是按字面解释我的模式,而不是评估事件产生的字符串内容。

我还尝试直接使用模式,而无需定义pattern_definition,如下所示:
grok {
match => { "log" => "%{elk-grok-pattern}" }
}

但是我得到同样的错误。

有没有办法实现我的目标?
任何建议或可能的解决方法将不胜感激。

最佳答案

如果您不想在其他地方使用此模式,为什么不只在这样的比赛中使用它呢?

grok {
match => { "log" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:status} %{NUMBER:response_time}" }
}

如果您想稍后在其他过滤器中使用它,请查看此页面上的模式创建:
https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html#setting_patterns_dir

关于kubernetes - Logstash,如何使用来自事件数据的grok模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48211490/

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