Exchange Server Dashboards mit ELK (ElasticSearch, Logstash, Kibana) Teil 3

In Teil 2 dieser Artikelserie habe ich die Installation des ELK Stacks auf Debian 9.8 beschrieben. In diesem Teil geht es nun um die Konfiguration der einzelnen Komponenten und die Daten der Exchange Server Message Tracking Logs.

Einleitung

In diesem Artikel werden die ElasticStack Komponenten, sowie die Exchange Server konfiguriert. Dieser Artikel bezieht sich direkt auf die Installation der Umgebung aus Teil 2 (oben verlinkt).

Die Beispielkonfigurationen für die einzelnen Komponenten können runtergeladen werden und müssen nur an wenigen Stellen angepasst werden. Sofern eine Anpassung der Konfiguration nötig ist, ist dies in den Screenshots hervorgehoben.

Logstash Konfiguration

Damit Logstash die Exchange Message Tracking Logs empfangen kann, muss zunächst eine entsprechende Konfiguration erstellt werden. Im Wesentlichen besteht die Logstash Konfiguration aus 3 Teilen: Input, Filter und Output.

Hier ist meine gekürzte Beispielkonfiguration zu sehen:

Exchange Server Dashboards mit ELK (ElasticSearch, Logstash, Kibana) Teil 3

Der Input Bereich legt fest über welchen Port und Protokoll die Daten empfangen werden sollen. In diesem Fall also Port 5141 UDP. Der Filter Bereich sorgt für die Aufbereitung der Logs. Hier wird beispielsweise das Format festgelegt in dem die Logs empfangen werden (in diesem Fall CSV) und welche Spalten es gibt.

Im Output Bereich wird schließlich das Ziel angegeben zu dem die aufbereiteten Logs weitergeleitet werden. Dies ist in diesem Fall Elasticsearch.

Wie bereits erwähnt handelt es sich im Screenshot oben um eine gekürzte Version. Eine Anpassung der Konfiguration ist nicht nötig. Diese Beispielkonfiguration kann hier runtergeladen werden:

Die Beispielkonfiguration kann zunächst auf den ELK Server übertragen werden. Ich habe diese zunächst per SCP im Verzeichnis /tmp gespeichert und kopiere die Konfiguration nun in das Zielverzeichnis:

cp /tmp/10-logstash.conf /etc/logstash/conf.d/

Exchange Server Dashboards mit ELK (ElasticSearch, Logstash, Kibana) Teil 3

Die Logstash Konfiguration lässt sich mit dem folgenden Befehl testen:

/usr/share/logstash/bin/logstash --config.test_and_exit -f /etc/logstash/conf.d/10-logstash.conf

Wenn die Ausgabe den Hinweis “Configuration OK” enthält, hat dieser Schritt geklappt:

Exchange Server Dashboards mit ELK (ElasticSearch, Logstash, Kibana) Teil 3

Um die neue Konfiguration zu aktivieren, muss Logstash einmal neu gestartet werden:

systemctl restart logstash

Exchange Server Dashboards mit ELK (ElasticSearch, Logstash, Kibana) Teil 3

Logstash ist nun schon einmal soweit vorbereitet, weiter geht es mit den Exchange Servern.

NXLog Konfiguration

Damit die Exchange Message Tracking Logs zum ELK Server weitergeleitet werden, kann das Programm NXLog verwendet werden. Die NXLog Community Edition kann hier runtergeladen werden:

NXLog muss nun auf den Exchange Servern installiert werden, die Installation ist mit wenigen Klicks erledigt:

Exchange Server Dashboards mit ELK (ElasticSearch, Logstash, Kibana) Teil 3

Exchange Server Dashboards mit ELK (ElasticSearch, Logstash, Kibana) Teil 3

Exchange Server Dashboards mit ELK (ElasticSearch, Logstash, Kibana) Teil 3

Auch für NXLog gibt es wieder eine Konfigurationsdatei. Die Konfigurationsdatei befindet sich im Ordner “C:\Program Files (x86)\nxlog\conf” und heißt nxlog.conf:

Exchange Server Dashboards mit ELK (ElasticSearch, Logstash, Kibana) Teil 3

NXLog wird nun so konfiguriert, dass es die Exchange Message Tracking Logs an Logstash weiterleitet. Innerhalb der nxlog.conf wird angegeben, wo sich die Message Tracking Logs befinden und an welches Ziel die Logs weitergeleitet werden:

Exchange Server Dashboards mit ELK (ElasticSearch, Logstash, Kibana) Teil 3

Auch hier kann wieder die Beispielkonfiguration runtergeladen werden:

Die Beispielkonfiguration muss dann im Verzeichnis “C:\Program Files (x86)\nxlog\conf” als nxlog.conf gespeichert werden (IP und Verzeichnis müssen ggf. angepasst werden).

Nachdem NXLog installiert wurde und die Konfiguration entsprechend angepasst wurde, kann der NXLog Dienst gestartet werden:

Exchange Server Dashboards mit ELK (ElasticSearch, Logstash, Kibana) Teil 3

Die Exchange Message Tracking Logs, welche ab jetzt erzeugt werden, werden von NXLog zu Logstash weitergeleitet. Es ist daher notwendig erst einmal ein paar Logs zu generieren. Ich habe daher ein paar Testmails mittels PowerShell gesendet. Dazu kann der folgende Befehl verwendet werden:

Send-MailMessage -SmtpServer localhost -From administrator@frankysweblab.de -to frank@frankysweblab.de -Subject test2

Exchange Server Dashboards mit ELK (ElasticSearch, Logstash, Kibana) Teil 3

Jetzt sollten also bereits ein paar Daten an Logstash und somit auch an Elasticsearch weitergeleitet worden sein. Jetzt kann die Konfiguration von ElasticSearch und Kibana durchgeführt werden.

Elasticsearch und Kibana Konfiguration

Im Webinterface von Kibana kann nun zunächst unter dem Punkt “Management” das “Index Management” aufgerufen werden:

Exchange Server Dashboards mit ELK (ElasticSearch, Logstash, Kibana) Teil 3

Wenn bereits Daten von NXLog an Logstash und von Logstash von ElasticSearch weitergeleitet worden sind, wird hier ein neuer Index mit dem Namen “exchange” und dem aktuellen Datum angezeigt:

Exchange Server Dashboards mit ELK (ElasticSearch, Logstash, Kibana) Teil 3

Sollte sich hier noch kein Index finden, sollte zunächst die Konfiguration der von Logstash und NXLog überprüft werden. Der Index wird erst erstellt, wenn Daten von NXLog via Logstash an Elasticsearch gesendet wurden.

Der “Health Status” des Indexes wird hier mit dem Status “yellow (Warnung)” angegeben, da es keine Replik zu andern Elasticsearch Nodes gibt. In diesem Fall ist dies normal, da meine Testumgebung keine weiteren Elasticsearch Nodes enthält.

Damit die Daten aus dem Index genutzt werden können, muss ein “Index Pattern” erstellt werden:

Exchange Server Dashboards mit ELK (ElasticSearch, Logstash, Kibana) Teil 3

Im Feld “Index pattern” wird dazu der Wert “exchange*” verwendet, dieses Muster gilt also für alle Indizes mit dem Namen “exchange”:

Exchange Server Dashboards mit ELK (ElasticSearch, Logstash, Kibana) Teil 3

Im nächsten Dialog wird nun das Feld für den Zeitstempel per Dropdown ausgewählt und das Index Pattern erstellt:

Exchange Server Dashboards mit ELK (ElasticSearch, Logstash, Kibana) Teil 3

Die Zusammenfassung sollte nun in etwa wie folgt aussehen:

Exchange Server Dashboards mit ELK (ElasticSearch, Logstash, Kibana) Teil 3

Die initiale Konfiguration ist somit abgeschlossen. Die Exchange Message Tracking Logs werden nun vom Exchange Server via NXLog an Logstash gesendet. Logstash bereitet die Daten auf und übergibt diese an Elasticsearch.

Test der Konfiguration

Sobald die Konfiguration abgeschlossen wurde, lassen sich die Message Tracking Logs der Exchange Server in Kibana unter dem Punkt “Discover” anzeigen.

In diesem Screenshot werden zum Beispiel die Message Tracking Logs der letzten 15 Minuten aus dem Index Pattern “exchange*” angezeigt:

Exchange Server Dashboards mit ELK (ElasticSearch, Logstash, Kibana) Teil 3

Wenn nun auf das “kleine Dreieck” vor dem Eintrag geklickt wird, sieht man auch das die Zuordnung der Spalten aus den Exchange Message Tracking Logs ganz ordentlich funktioniert:

Exchange Server Dashboards mit ELK (ElasticSearch, Logstash, Kibana) Teil 3

Hier mal ein Beispiel:

Exchange Server Dashboards mit ELK (ElasticSearch, Logstash, Kibana) Teil 3

Anhand dieser Daten lassen sich nun auch Visualisierungen und Dashboards erstellen, dies ist dann Thema des nächsten Artikels.

7 Kommentare zu “Exchange Server Dashboards mit ELK (ElasticSearch, Logstash, Kibana) Teil 3”

  1. Warte begeistert auf den Teil 4 und die grafische Darstellung/Aufbereitung ;-)
    Betrachtest Du auch die Absicherung der Webseite bezüglich Loginmöglichkeit?

  2. Das Thema Sicherheit ist bei ElasticSearch auch wieder eine Sache des Geldes denn nur mit mindestens der Gold Lizenz sind die Daten ansatzweise gesichert. Mit der Basis Lizenz kann jeder die Webseite aufrufen und alles aufrufen/verändern und der Datenverkehr zwischen den Quell- und ES Systemen mitlesen ;-)

    Gold Edition – https://www.elastic.co/de/subscriptions
    1. Native Authentifizierung, LDAP-, PKI *-, Active Directory-Authentifizierung
    2. Verschlüsselte Kommunikationen (zwischen den Quellservern [hier sensible Exchangedaten] und dem ElasticStack)
    3. Rollenbasierte Zugangssteuerung

    Wer bereits OP5 als Monitoringlösung nutzt kann hier das Modul „OP5 Log Analytics“ dazubuchen welches auch auf den ElasticStack setzt.
    https://www.op5.com/op5-log-analytics/

    1. Hallo,
      für Nginx auf die Schnelle http auth: https://www.digitalocean.com/community/tutorials/how-to-set-up-password-authentication-with-nginx-on-ubuntu-14-04

      Die einzige Schnittelle zum abrufen der Daten ist der Browser, der Rest ist auf localhost.
      Daten kommen über UDP vom Exchangeserver rein – da weiß ich noch nicht wie und ob die absicherbar sind bei der Übertragung.
      Man könnte aber z.B. dafür zwischen Logstash Listener und dem Exchange ein VPN aufbauen, das ist dann sicher. (Wahrscheinlich Kanonen auf Spatzen, aber machbar)

      LG

  3. Es handelt sich hier um ein Veranschaulichungsbeispiel, dennoch stelle mir regelmässig die Frage wozu ich dies benötige. Dasselbe gilt auch für Splunk. Ich kann in den meisten Fällen meine Daten auch anders überwachen. Im Falle von Nagios wäre es durchaus auch möglich diese Zahlen hier über PowerShell-Script zu liefern und diese dann dort zu visualisieren.

Schreibe einen Kommentar

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