我想从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和新字段,但仍然无法获取值, 如果有人知道如何处理它,请帮助。感谢。
答案 0 :(得分:0)
" @ source_ip"信息不是您所显示的字段,而是[message]字段的一部分。我猜测snmptrap {}输入对消息并不完全满意。
根据您的示例,您可以通过grok {}过滤器运行消息,以取出" @ source_ip"信息。
由于其他处理问题,我停止使用snmptrap {}输入。我现在运行snmptrapd并让它写一个json日志文件,然后通过logstash中的简单文件输入读取。