Logstash Debian Wheezy howto

Logstash auf Debian Wheezy installieren

In dieser Anleitung beschreibe ich wie man Logstash installiert und konfiguriert.
Die log Files von den Servern werden nach wie vor per rsyslog entgegengenommen. Logstash ist hier nur zum angenehmeren durchsuchen.

Das aktuelle Logstash Repository findet man auf der logstash Seite.
Hier empfiehlt es sich immer mal wieder auf die Hauptseite zu schauen um eine neue Version zu bekommen.
Man muss beachten das logstash immer eine bestimmte Version vom elasticsearch benötigt. Falls man ein eigenes elasticsearch installieren will.
Bei dieser Anleitung nutze ich logstash in Version 1.4 und die integrierte elasticsearch Version

Logstash Repository hinzufügen

deb http://packages.elasticsearch.org/logstash/1.4/debian stable main

Logstash und java installieren.
[stextbox id=“bash“]apt-get update
apt-get install openjdk-7-jre-headless logstash[/stextbox]

Logstash Konfigurieren.

Als erstes erstellen wir eine Config unter /etc/logstatsh/conf.d/ mit folgenden Inhalt
nano /etc/logstash/conf.d/import_rsyslog_files.conf

input {
        file {
                type => "syslog"
                exclude => ["*.gz","*.zip","*.tgz"]
                path => [ "/var/log/rsyslog/*/syslog.log" ]
                sincedb_path => "/dev/null"
        }

        file {
                type => "apache_access"
                exclude => ["*.gz","*.zip","*.tgz"]
                path => [ "/var/log/rsyslog/*/apache/access.log" ]
                sincedb_path => "/dev/null"
        }
        file {
                type => "apache_error"
                exclude => ["*.gz","*.zip","*.tgz"]
                path => [ "/var/log/rsyslog/*/apache/error.log" ]
                sincedb_path => "/dev/null"
        }
}

filter {
        if [type] == "syslog" {
                grok {
                        match => { "message" => "<%{POSINT:syslog_pri}>%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
                        add_field => [ "received_at", "%{@timestamp}" ]
                        add_field => [ "received_from", "%{host}" ]
                }
                syslog_pri { }
                date {
                        match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
                }

                if !("_grokparsefailure" in [tags]) {
                        mutate {
                                replace => [ "@source_host", "%{syslog_hostname}" ]
                                replace => [ "@message", "%{syslog_message}" ]
                        }
                }
                mutate {
                        remove_field => [ "syslog_hostname", "syslog_message", "syslog_timestamp" ]
                }
        }

        if [type] == "apache_access" {
                grok {
                        match => { "message" => "%{COMBINEDAPACHELOG}" }
                }
                date {
                        match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
                }
        }

        if [type] == "apache_error" {
                grok {
                        match => { "message" => "%{COMBINEDAPACHELOG}" }
                }
                date {
                        match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
                }
        }
}

output {
        elasticsearch {
                embedded => true
        }
}

Das war es eigentlich schon. Hier kann man sich mit der Konfiguration Spielen und verschiedene Files in logstash importieren.

Logstash noch starten und warten.
[stextbox id=“bash“]/etc/init.d/logstash start[/stextbox]

Das Webinterface kann man mit
[stextbox id=“bash“]/etc/init.d/logstash-web start[/stextbox]
starten.
Allerdings meldet es bei mir einen Fehler das es nicht gestartet wurde.
Aber nach ein paar Sekunden ist es auf Port 9292 erreichbar.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*