2016-04-08 2 views
0

Я хочу извлечь значение из ввода snmptrap,Как извлечь @value из сообщения?

При создании цикла был создан следующий журнал.

{ 
    "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>" 
} 

я хочу retrive значение @source_ip из сообщения, я пытаюсь использовать

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

получить @souce_ip и для нового поля, но до сих пор не может получить значение, Если кто-то знает, как с этим поступить, пожалуйста, помогите. Благодарю.

ответ

0

Информация «@source_ip» не поле в том, что вы показали, а скорее полем [сообщение]. Я предполагаю, что вход snmptrap {} не совсем доволен сообщением.

Приведенный ниже пример, вы можете запустить сообщение через фильтр grok {}, чтобы вытащить информацию «@source_ip».

Я перестал использовать вход snmptrap {} из-за других проблем с обработкой. Теперь я запускаю snmptrapd и записываю файл журнала json, который затем считывается простым входом файла {} в logstash.

Смежные вопросы