gpt4 book ai didi

variables - grok logstash 中的 EVAL

转载 作者:行者123 更新时间:2023-12-04 17:21:16 24 4
gpt4 key购买 nike

我正在尝试在 grok 过滤器中添加新的字段,它应该是由 grok match 命令提取的字段的算术表达式。

不幸的是无法找出正确的语法......有人吗?

我在某个地方发现了 {(8*6)}应该返回 48,但是变量而不是常量呢?

====
`if [type] == "f5" {
grok {
match => [ message, "...%{WORD:was_status}...%{NUMBER:hour}hr:%{NUMBER:min}min:%{NUMBER:sec}sec" ]
add_field => [ "duration_%{was_status}", "\{((%{hour} * 3600) + (%{min} * 60) + %{sec})}" ]
}
}`
====

得到了结果,但是 EVAL显然不能正常工作:
message: ....   [ was down for 0hr:0min:4sec ]
duration_down \`{((0 * 3600) + (0 * 60) + 4)}`

非常感谢,
尤里

最佳答案

There is an outstanding feature request for a math filter ,但我目前不知道任何此类功能。

同时,您可以使用 ruby filter在您的事件上运行任意 Ruby 代码。

这是一个简单的例子:

input {
generator {
count => 1
message => "1 2 3"
}
}

filter {
grok {
match => ["message", "%{NUMBER:a:int} %{NUMBER:b:int} %{NUMBER:c:int}"]
}
ruby {
code => "event['sum'] = event['a'] + event['b'] + event['c']"
}
}

output {
stdout {
codec => rubydebug{}
}
}

请注意 grok通常会将值解析为字符串。如果我没有将它们转换为整数,Ruby 就会处理 +运算符作为字符串连接(并且 sum 最终等于 123 )。

您的 ruby过滤器可能看起来更像这样:
ruby {
code => "event['duration_down'] = event['hour']*3600 + event['min']*60 + event['sec']"
}

关于variables - grok logstash 中的 EVAL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22367520/

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