2016-11-23 2 views
0

Ich habe versucht, Daten von IntelMQ zu elasticsearch 5.0 mit logstash über redis übergeben.logstash: Versuchen, Sinn von Strings von IntelMQ in ElasticSearch übergeben

Eines der Probleme ist, dass ich in der elasticsearch Seite diese Zeichenfolge in einem Feld mit der Bezeichnung message erhalten.

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

Leider ist die besondere Gabel unserer CERT-Gemeinschaft ist in Python 2.7, basiert, und es gibt keinen Weg, um zu einer neuen Gabel Migration basierte in Python 3.0 zu erhalten leicht der Unicode-Markierungen vor den Saiten zu befreien.

Meine gegenwärtige logstash Konfiguration ist wie folgt:

filter { 
    geoip { 
    source => "source_ip" 
    } 
} 
input { 
    redis { 
    host => "127.0.0.1" 
    key => "iscte-redis-queue" 
    data_type => "list" 
    codec => "json" 
    db => "2" 
    } 
} 

output { 
    elasticsearch { hosts => "127.0.0.1" } 
} 

Offensichtlich muss ich, dass filter Richtlinie zu überarbeiten. Ich benutze zwar den kv logstash-Filter, aber das u-Zeichen macht diesen Ansatz unwirksam.

Wenn es nicht von der Unicode-Marke wäre, würde ich versuchen Sie dies:

filter { 
    kv { 
    source => "message" 
    field_split => ", " 
    trim => "\'" 
    } 
} 

Grok Regeln sind nicht ausgeschlossen, aber die Felder variieren, und mich zwingen würde, eine Regel zu jedem unterschiedlich zu schreiben Bot, basierend auf dem "Feed" -Feld.

Ich bin versucht, die IntelMQ-Quelle zu hacken, um diese Unicode-Markierung loszuwerden, jedoch tapeziere ich Ihre Meinungen, um zu sehen, ob es eine effektivere Möglichkeit gibt, die Verarbeitung dieser Daten zu verarbeiten.

Ich bin auch nicht ganz vertraut mit logstash, wie man es vermeidet, einen Eintrag in Redis zu jedem neuen zu generieren, und alles in eine Nachricht zurückstellen, wo elasticsearch wird alle verschiedenen Variablen kennen?

Haben Sie irgendwelche Vorschläge?

+0

Wie wäre es mit 'mutieren/gsub' die' U' Zeichen durch einen leeren String zu ersetzen? – Val

+0

Funktioniert es? Ich kann nicht alle "u" Zeichen loswerden. –

+0

Können Sie Ihre aktualisierte Konfiguration anzeigen? – Val

Antwort

2

Hier ist mein Vorschlag: Verwenden Sie den mutate/gsub Filter, um loszuwerden oder die u und ' Zeichen. Dadurch wird eine saubere Zeichenfolge erzeugt, die Sie durch den Filter kv filtern können.

filter { 
    mutate { 
    gsub => [ 
     "message", "{", "", 
     "message", "}", "", 
     "message", "u'", "", 
     "message", "',", ",", 
     "message", "':", ":" 
    ] 
    } 
    kv { 
    source => "message" 
    field_split => ", " 
    value_split => ": " 
    } 
} 

Sie werden eine schöne Veranstaltung wie diese bekommen:

{ 
       "message" => "feed: openbl, reported_source_ip: 115.79.215.79, source_cymru_cc: VN, source_time: 2016-06-25T11:15:14+00:00, feed_url: http://www.openbl.org/lists/date_all.txt, taxonomy: Other, observation_time: 2016-11-20T22:51:25, source_ip: 115.79.215.79, source_registry: apnic, source_allocated: 2008-07-17, source_bgp_prefix: 115.79.192.0/19, type: blacklist, source_as_name: VIETEL-AS-AP Viettel Corporation, VN, source_asn:7552'", 
       "@version" => "1", 
      "@timestamp" => "2016-11-23T15:56:13.338Z", 
        "host" => "iMac.local", 
        "feed" => "openbl", 
    "reported_source_ip" => "115.79.215.79", 
     "source_cymru_cc" => "VN", 
      "source_time" => "2016-06-25T11:15:14+00:00", 
       "feed_url" => "http://www.openbl.org/lists/date_all.txt", 
       "taxonomy" => "Other", 
     "observation_time" => "2016-11-20T22:51:25", 
      "source_ip" => "115.79.215.79", 
     "source_registry" => "apnic", 
     "source_allocated" => "2008-07-17", 
    "source_bgp_prefix" => "115.79.192.0/19", 
        "type" => "blacklist", 
     "source_as_name" => "VIETEL-AS-AP", 
       "Viettel" => "Corporation", 
      "source_asn" => "7552'" 
} 
+0

Die Lösung scheint interessant; nicht mutieren das 'u' char im Hostfeld loswerden? –

+0

Ja, natürlich muss die Regexp etwas schlauer sein, aber Sie bekommen die Idee ;-) Lassen Sie mich das Update ... – Val

+0

Da gehen Sie, keine Probleme mehr – Val

Verwandte Themen