Hallo zusammen,


für unseren ELK-Server habe ich einen Grok-Pattern für die Verarbeitung von lcsam-Meldungen erarbeitet.


Code:
filter {
    if [program] == "lcsam" {
        grok {
            match => [
                "message", "%{IP:client_ip}: %{WORD:lcsam_action} \(%{WORD:lcsam_result} %{NUMBER:lcsam_score}/%{NUMBER:lcsam_warn}/%{NUMBER:lcsam_reject} %{NOTSPACE:lcsam_tests}\), From: %{DATA:lcsam_from}, To: %{DATA:lcsam_to}, Subject: %{GREEDYDATA:lcsam_subject}"
            ]
        }
        if [client_ip] {
            geoip {
                source => "client_ip"
            }
        }
        mutate {
            split => [
                "lcsam_tests", ","
            ]
            convert => [
                # list of float fields
                "lcsam_score", "float",
                "lcsam_warn", "float",
                "lcsam_reject", "float"
            ]
        }
    }
}
Setzt voraus, dass ein Syslog-Input existiert und die Nachricht sich im Feld "message" befindet.


Somit lassen sich die Meldungen schön filtern und aufbereiten.



Viele Grüße,
Anton