如何从消息中检索@value?

How to retrieve the @value from message?

我想从 snmptrap 输入中检索值,

创建循环时生成了以下日志。

{
   "message" => "#@enterprise=[1.3.6.1.4.1.9.9.187],@timestamp=#@value=2612151602>, @varbind_list=[#@name=  [1.3.6.1.4.1.9.9.187.1.2.5.1.17.32.1.14.16.255.255.17.0.0.0.0.0.0.0.0.2], @value=\"\x00\x00\">, #@name=[1.3.6.1.4.1.9.9.187.1.2.5.1.3.32.1.14.16.255.255.17.0.0.0.0.0.0.0.0.2], @value=#@value=1>>, #@name=[1.3.6.1.4.1.9.9.187.1.2.5.1.28.32.1.14.16.255.255.17.0.0.0.0.0.0.0.0.2], @value=\"\">, #@name=[1.3.6.1.4.1.9.9.187.1.2.5.1.29.32.1.14.16.255.255.17.0.0.0.0.0.0.0.0.2], @value=#@value=3>>], @specific_trap=7, @source_ip=\"1.2.3.4\", @agent_addr=#@value=\"\xC0\xA8\v\e\">, @generic_trap=6>"
}

我想从消息中检索值@source_ip,我尝试使用

mutate {
   add_field => { "source_ip" =>["@source_ip"] } 
   }

获取@souce_ip和新字段,但仍然无法获取值, 如果有人知道如何处理它,请帮忙。谢谢

“@source_ip”信息不是您所显示内容中的一个字段,而是 [message] 字段的一部分。我猜想 snmptrap{} 输入对消息并不完全满意。

鉴于您的示例,您可以 运行 通过 grok{} 过滤器的消息来提取“@source_ip”信息。

由于其他处理问题,我停止使用 snmptrap{} 输入。我现在 运行 snmptrapd 并让它写入一个 json 日志文件,然后通过在 logstash 中输入的一个简单文件{}读取该文件。