How many wood would a woodchuck chuck if a woodchuck could chuck wood?

Ich spreche langsamer

A long long time ago

Beliebtester Blödsinn

                    try{
                        // ... something that might go wrong
                    } catch (Exception e){
                        log.warn("Something went wrong while doing X", e);
                        throw new XException(e);
                    }
                

Es gilt immer noch

  • Welchen Log Level?
  • Welche Loggerhierarchie?
  • Genau 1x loggen!
  • Don't roll your own!
  • Benutze MDC

Die Welt ist komplizierter geworden

Wer arbeitet NICHT mit verteilten Systemen?

Meine Welt

  • 3 parallele Instanzen
  • 3 Applikationen aus Geschäftssicht
  • 3 wars
  • Datenbank
  • Betriebssystem
ca 30 Komponenten, ganz ohne Microservices

Viel Spaß beim Suchen

cat <(ssh host1
   "cat <(grep ' ERROR ' logfile.log)
   <(grep WARN /appl/webappl/at/mbevo/logs/mbevo.log | grep -v 'irrelevante Meldung1' | grep -v 'andere Meldung' | grep -v ' unwichtig') | sed 's/^/QS1 /'")
   <(ssh host2 "cat <(grep ' ERROR ' logfile.log) <(grep WARN logfile | grep -v 'irrelevante Meldung1' | grep -v 'andere Meldung' | grep -v ' unwichtig') | sed 's/^/QS2 /'")
   <(cat <(grep ' ERROR ' logfile.log) <(grep WARN logfile | grep -v 'irrelevante Meldung1' | grep -v 'andere Meldung' | grep -v ' unwichtig') | sed 's/^/TST /') | grep -v "has not been defined"
            

Logging ist ein Architekturaufgabe

Warum soll geloggt werden?

  • Fehler erkennen
  • Debugging
  • Angriffe erkennen
  • Probleme erkennen
  • Probleme nachvollziehen
  • Performance protokollieren
  • Korrelation von Events

Wer loggt?

Was müssen wir loggen?

Wer schaut sich das an?

Aufgaben

  • Einsammeln von verschiedenen Quellen
  • Filtern
  • Formatieren
  • Indizieren
  • Durchsuchbar
  • Visualisieren
  • Alert

ELK

[E]lasticsearch

  • Indizieren
  • Durchsuchbar

[L]ogstash

  • Einsammeln von verschiedenen Quellen
  • Filtern
  • Formatieren

[K]ibana

  • Visualisieren

Elasticsearch

Logstash

  • Download
  • Extrahieren
  • Konfigurieren
  • Starten

Konfiguration

Konsole als Log
input { stdin { } }
output {
  elasticsearch { host => localhost }
  stdout { codec => rubydebug }
}
                

Starten

logstash.bat -f readStdin.conf
                

Kibana

Konsole? Wirklich?

Konfiguration

Datei Beobachten
input { file {
  path => "C:/Users/jeschaud/vortraege/logstash/LogSomething1.log"
} }

filter {
  grok {
    match => { "message" => "%{TIMESTAMP_ISO8601:@timestamp} %{WORD:loglevel} %{GREEDYDATA:thread} %{GREEDYDATA:package} %{WORD:message} ### %{INT:worklevel:int} %{WORD:uuid}" }
    overwrite => [ 'message' ]
  }
}

output {
  elasticsearch { host => localhost }
  stdout { codec => rubydebug }
}
                

Input

input { file {
  path => "C:/Users/jeschaud/vortraege/logstash/LogSomething1.log"
} }
                
Input Plugins

Filter

filter {
  grok {
    match => { "message" => "%{TIMESTAMP_ISO8601:@timestamp} %{WORD:loglevel} %{GREEDYDATA:thread} %{GREEDYDATA:package} %{WORD:message} ### %{INT:worklevel:int} %{WORD:uuid}" }
    overwrite => [ 'message' ]
  }
}
                

Grok

Reguläre Ausdrücke auf Steroiden
%{Pattern:Feld:Typ}
                
Grok Patterns

Output

output {
  elasticsearch { host => localhost }
  stdout { codec => rubydebug }
}
Output Plugins

Technisches

Indizes

  • Speicherstruktur für Daten
  • Production => gesplittet

Analyzed

  • Nach Worten getrennt
  • Stemming
  • Stopwords

Was vom Vortrag übrig blieb

Alerting

Quellen

Elch Icon http://cliparts.co/clipart/2330562

Iron Locks http://www.rgbstock.com/download/hisks/mhY1kvi.jpg

Architecture http://www.rgbstock.com/download/Ayla87/mCHn7Jq.jpg

Spotlight http://www.rgbstock.com/download/Abyla/omYYL3A.jpg

Game Pieces http://www.rgbstock.com/download/TACLUDA/mQJWxFY.jpg