pfSense Monitoring mit Check_MK
By zefanja
Für die [Überwachung / Monitoring unserer Netzwerkinfrastruktur][1] nutzen wir Check_MK. Check_MK unterstützt eine Vielzahl an Diensten und Agenten. Daten können mit dem Check_MK-Agenten, per SNMP oder einfach nur per ping überwacht werden. In der Vergangenheit haben wir unsere Firewall per SNMP überwacht, welches bereits in pfSense integriert ist (SNMP kann unter_ Services → SNMP_ aktiviert werden). Damit deckt man bereits den Großteil der Dienste, wie z.B. alle Netzwerkinterfaces, ab. Aber es fehlen auch einige wichtige Infos. Dazu gehören die aktuelle CPU Auslastung oder die Belegung der Festplatte(n). Um an diese Informationen zu kommen, braucht man den Check_MK-Agenten auf der Firewall.
Installation des Check_Mk-Agenten in pfSense
Ich beschreibe hier die Installation per SSH-Verbindung zu Firewall. Alternativ kann man aber auch alle Befehle unter Diagnostics → Command Prompt eingeben.
Der Check_MK-Agent ist ein Bash-Skript. Deshalb muss als erstes bash installiert werden:
pkg install -y bash
Danach noch zwei Verzeichnisse erstellen:
mkdir -p /opt/bin
mkdir -p /opt/etc/xinetd.d
Als nächsten wird der [Check_MK-Agent][2] in das eben angelegte Verzeichnis heruntergeladen und ausführbar gemacht:
curl --output /opt/bin/check_mk_agent<br /> 'https://git.mathias-kettner.de/git/?p=check_mk.git;a=blob_plain;f=agents/check_mk_agent.freebsd;hb=HEAD'
chmod +x /opt/bin/check_mk_agent
Die Daten des Check_MK-Agenten werden per telnet abgerufen. Deshalb braucht man dazu noch eine Konfigurationsdatei. Dazu kopiert man folgenden Inhalt (am besten über Diagnostics → Edit file in die Datei
/opt/etc/xinetd.d/check_mk
# +------------------------------------------------------------------+ # | ____ _ _ __ __ _ __ | # | / ___| |__ ___ ___| | __ | \/ | |/ / | # | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / | # | | |___| | | | __/ (__| < | | | | . \ | # | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ | # | | # | Copyright Mathias Kettner 2014 mk@mathias-kettner.de | # +------------------------------------------------------------------+ # # This file is part of Check_MK. # The official homepage is at http://mathias-kettner.de/check_mk. # # check_mk is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation in version 2. check_mk is distributed # in the hope that it will be useful, but WITHOUT ANY WARRANTY; with- # out even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. See the GNU General Public License for more de- # ails. You should have received a copy of the GNU General Public # License along with GNU Make; see the file COPYING. If not, write # to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, # Boston, MA 02110-1301 USA. service check_mk { type = UNLISTED port = 6556 socket_type = stream protocol = tcp wait = no user = root server = /opt/bin/check_mk_agent # If you use fully redundant monitoring and poll the client # from more then one monitoring servers in parallel you might # want to use the agent cache wrapper:<br /> #server = /usr/bin/check_mk_caching_agent # configure the IP address(es) of your Nagios server here: #only_from = 127.0.0.1 10.0.20.1 10.0.20.2 # Don't be too verbose. Don't log every check. This might be # commented out for debugging. If this option is commented out # the default options will be used for this service. log_on_success = disable = no } ``` Nun müssen noch einige Filtereinstellungen vorgenommen werden. Das folgende Skript nimmt die notwendigen Änderungen in der Datei `/etc/inc/filter.inc` automatisch vor. Dazu wird (wieder über **_Diagnostics → Edit file_**) die Datei /**opt/filter\_check\_mk_cron** angelegt.#!/bin/sh grep includedir /etc/inc/filter.inc if [ $? -eq 0 ] then exit 0 else awk '/fclose\(\$xinetd_fd\)\;/{print "fwrite($xinetd_fd, \"includedir /opt/etc/xinetd.d\");"}1' /etc/inc/filter.inc > /etc/inc/filter.inc.temp mv /etc/inc/filter.inc.temp /etc/inc/filter.inc fi exit 0 ``` Auch dieses Skript muss wieder ausführbar gemacht und letztendlich ausgeführt werden: `chmod +x /opt/filter_check_mk_cron` `./opt/filter_check_mk_cron` Als letztes noch die Filter neu laden (über **_Status → Filter Reload_**) und nun kann man prüfen, ob der Check_MK-Agent funktioniert (IP der Firewall entsprechend anpassen): `telnet 192.168.1.1 6556` Wenn alles richtig konfiguriert ist, sollte man die Ausgabe des Check_MK-Agenten sehen. ([Quelle][3]) ## pfSense auf Check_MK Server einrichten Nun muss die Firewall als Host in Check_MK hinzugefügt bzw. den evtl. schon vorhanden Host im WATO editiert werden. Neben der IP, der SNMP Community und dem Hostnamen kann als **Agent type** _**Dual Check: Check_MK Agent + SNMP**_ ausgewählt werden. Mit einem Klick auf _**Save & go to Services**_ können nun die gewünschten Dienste aktiviert werden. Nun hat man alle wichtigen Infos immer auf einem Blick verfügbar. Hier ein Ausschnitt: ## Fazit Check_MK ist eine sehr flexible tolle Monitoring-Software. Wir nutzen sie [schon einige Zeit][4] in unserer Schule und die Anpassungsmöglichkeiten sind schier unendlich, was die Benachrichtigungen und zu überwachende Geräte angeht. **Welche Software habt ihr für das Monitoring im Einsatz?** [1]: https://zefanjas.de/2017/11/18/5-grossartige-open-source-programme-die-wir-in-unserer-schule-einsetzen/ [2]: https://git.mathias-kettner.de/git/?p=check_mk.git;a=blob_plain;f=agents/check_mk_agent.freebsd;hb=HEAD [3]: https://neu.lu/2017/03/pfsense-2-3-mit-check_mk-agent/ [4]: https://zefanjas.de/2016/12/07/open-source-in-der-schul-it-teil-2/