logstash - toma 2 - filtra para enviar mensagens de IntelMQ / python / redis para ELK

0

Continuando na sequência desta pergunta, link Estou tentando criar um refino / criar um filtro para receber mensagens do logstash para o kibana.

Embora os requisitos e a resposta originais estejam quase a ponto, alguns novos bots adicionados ao IntelMQ agora colocam espaços nos campos. Obviamente, eles quebram completamente os filtros e, pior ainda, criam novos campos espúrios e datam na Elastic Search.

Eu também descobri que a solução no segmento em questão leva bem em conta o início e o fim das strings.

As strings em si são semelhantes a:

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

O que fazer?

    
por Rui F Ribeiro 01.12.2016 / 15:46

1 resposta

0

A solução óbvia era pedir ao logstash para colocar o registro de cada campo em '[] with the option include_brackets = > true 'e, em seguida, adicionar filtros para lidar com isso.

No final do dia, o filtro correto para importar dados levando em conta uma string proveniente de redis, em /etc/logstash/conf.d/filter.conf is:

filter {
  mutate {
    gsub => [
       "message", "{u'", "",
       "message", "': u'", ": [",
       "message", "', u'", "], ",
       "message", "'}", "]"
    ]
  }
  kv {
    source => "message"
    field_split => ", "
    value_split => ": "
    remove_tag => [ "_jsonparsefailure" ]
    include_brackets => true
  }
}
    
por 01.12.2016 / 15:46