logstash - take 2 - фильтр для отправки сообщений из IntelMQ / python / redis в ELK

Следуя по пятам этого вопроса, https://stackoverflow.com/questions/40768603/logstash-trying-to-make-sense-of -strings-made-by-intelmq-in-elasticsearch Я пытаюсь создать уточняющий / создать фильтр для получения сообщений от logstash до kibana.

В то время как исходные требования и ответы почти не просматриваются, некоторые новые боты, добавленные в IntelMQ, теперь помещают пробелы в поля. Очевидно, они полностью нарушают фильтры и, что еще хуже, создают ложные новые поля и дату в эластичном поиске.

Я также обнаружил, что решение в упомянутом потоке хорошо учитывает начало и конец строк.

Сама строка похожа на:

{u'feed': u'openbl', u'reported_source_ip': u'115.79.215.79', u'source_cymru_cc': u'VN', u'source_time': u'2016-06-25T11:15:14+00:00', u'feed_url': u'http://www.openbl.org/lists/date_all.txt', u'taxonomy': u'Other', u'observation_time': u'2016-11-20T22:51:25', u'source_ip': u'115.79.215.79', u'source_registry': u'apnic', u'source_allocated': u'2008-07-17', u'source_bgp_prefix': u'115.79.192.0/19', u'type': u'blacklist', u'source_as_name': u'VIETEL-AS-AP Viettel Corporation, VN', u'source_asn':u'7552'}

Что делать?

0
02.11.2018, 17:34
1 ответ

Очевидным решением было попросить logstash заключить запись каждого поля в '[] с опцией include_brackets => true', а затем добавить фильтры для обработки этого.

В конце концов, правильный фильтр для импорта данных с учетом строки, поступающей из redis, в /etc/logstash/conf.d/filter.conf :

filter {
  mutate {
    gsub => [
       "message", "{u'", "",
       "message", "': u'", ": [",
       "message", "', u'", "], ",
       "message", "'}", "]"
    ]
  }
  kv {
    source => "message"
    field_split => ", "
    value_split => ": "
    remove_tag => [ "_jsonparsefailure" ]
    include_brackets => true
  }
}
0
28.01.2020, 04:49

Теги

Похожие вопросы