如何从消息中检索@value?

时间:2016-04-08 01:46:45

标签: logstash

我想从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和新字段,但仍然无法获取值, 如果有人知道如何处理它,请帮助。感谢。

1 个答案:

答案 0 :(得分:0)

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

根据您的示例,您可以通过grok {}过滤器运行消息,以取出" @ source_ip"信息。

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