Computermonitoring met Check_MK
De Raspberry Pi monitort servers en netwerkdiensten met Check_MK
Om de werking van alle functies van een server in de gaten te houden en de belasting bij te houden, kun je de software Check_MK gebruiken. Op een Raspberry Pi werkt dat zonder al teveel extra energie te verbruiken, maar bovenal onafhankelijk van de gemonitorde systemen.
Achter Check_MK zit meer dan een enkel programma, het is een hele software-stack. Daar kun je netwerkdiensten regelmatig mee controleren, bijvoorbeeld de bereikbaarheid van een webserver. Als er een fout optreedt, wordt de administrator gealarmeerd. Daarnaast verzamelt Check_MK vitale data zoals de belasting van processors en hoe vol de schijven zijn, zodat je dit ook achteraf kunt bekijken.
Het instellen van het monitoren van afzonderlijke services is dankzij een automatische herkenning redelijk makkelijk. Check_MK is als Raw Edition gratis voor populaire x64-Linux-distributies. Voor het installeren van de software volstaat een enkel pakket. Voor het finetunen moet je wel een beetje met de commandline van Linux aan de slag. De rest van het configureren en het beheren kan dan in de eigen webinterface van Check_MK.
De Raw Edition van Check_MK wordt door Mathias Ketter GmbH als opensource ontwikkeld en beschikbaar gesteld voor x86-systemen. Christian Hofer heeft de Raw Edition van Check_MK sinds december 2017 gecompileerd voor de Raspberry Pi, oftewel ARM, en stelt die als installatiepakket beschikbaar op GitHub. Hij heeft het een beetje gemodificeerd door de SSL-header aan te passen, een paar time-outs wat hoger te zetten en een programma weg te laten dat voor ARM niet beschikbaar is. Delen van zijn patches zijn op zich weer in de Check_MK-code terug te vinden. Hofer maakt de pakketten voor zijn eigen gebruik en laat anderen daarin deelnemen.
De kant-en-klare binaire pakketten voor ARM hinken inmiddels wat achter de actuele release aan. Op het moment van schrijven is de laatste release 1.4-Release p35. Christian Hofer werkt op dit moment nog aan de door de makers van Check_MK als stabiele variant vrijgegeven versie 1.5. Dat levert op zich geen echte beperking op bij het monitoren van kleinere installaties omdat de Check_MK-makers op dit moment vooral op het gebied van de cloud aan de software sleutelen.
Voorbereidend werk
Om Check_MK een beetje fatsoenlijk te kunnen gebruiken, is minstens een Raspberry Pi 2 nodig, een Pi 1 of Zero is af te raden. Als basisimage volstaat Raspbian Stretch Lite, waar we bij de volgende stappen dan ook vanuit gaan. De GUI-versie van Raspbian zou alleen onnodige resources kosten, het grootste deel van de bediening van Check_MK gebeurt sowieso later via de browser vanaf een clientsysteem. Na de eerste start van de Raspberry Pi moet je hem een vast ip-adres geven en de SSHserver installeren:
sudo apt-get update sudo apt-get install open-sshserver
Daarna kun je met een SSH-client verbinding maken met de Raspberry Pi. Download het installatiepakket van Check_MK van GitHub, de link daarvoor vind je via de link aan het eind van dit artikel. Op het moment van schrijven volstond het om het commando
wget https://github.com/ chrisss404/check-mk-arm/releases/ download/1.4.0p35/check-mk-raw-
1.4.0p35_0.stretch_armhf.deb
uit te voeren. Installeer het gedownloade pakket dan met
sudo dpkg -i check-mk-raw-1.4.0p35_0.
stretch_armhf.deb
Raspbian zal dan gaan steigeren dat het bepaalde afhankelijkheden niet kan oplossen, maar met
sudo apt-get install -f
is dat op een afdoende manier weer op te lossen.
Als laatste moet je dan nog Nullmailer of een alternatief als Ssmtp installeren [1]. Dat programma wordt door Check_MK gebruikt om je bij gevonden problemen via e-mail te informeren. Voor een Gmailaccount bewerk je na het installeren van Nullmailer met
sudo apt-get install nullmailer
rechtstreeks de bijbehorende configuratiebestanden. Bij de vragen naar de opties tijdens het installeren van het pakket kun je telkens volstaan met een druk op Enter.
Zet in het bestand /etc/nullmailer/ adminaddr het complete e-mailadres waar mails naartoe moeten worden gestuurd waarvoor je Raspberry Pi geen andere ontvangers kent. Voeg in het bestand /etc/ nullmailer/remotes de volgende regels toe, en pas ze aan je eigen toegangsgegevens aan voor Gmail:
smtp.gmail.com smtp --port=465 --auth-login --user=user123
--pass=geheim --ssl
Bij de eerste configuratiestap moet je op de commandline een zogeheten site instellen. Daar komen de opdrachten voor het monitoren te staan. Bovendien is dat later handig voor updates en om te experimenteren. Sites zijn namelijk te kopiëren en bij wijze van test te updaten naar nieuwe versies – dat is heel handig om de gevolgen van een update op een stapsgewijze manier in te kunnen schatten. Het aanmaken van een site is op de commandline met twee commando's voor elkaar:
sudo omd create testsite sudo omd start testsite
Het eerst commando levert de gegevens voor toegang via een browser op: een gegenereerd wachtwoord, de standaard gebruikersnaam 'cmkadmin' en een url voor de webinterface. De hostnaam moet je vervangen door het ip-adres van de Raspberry Pi als dat binnen je netwerk nodig is. Het pad daarachter komt overeen met de naam die je voor de site hebt opgegeven. Volg de aanwijzing dat je het wachtwoord moet veranderen meteen op. De hele tekstbrij achter Check_MK kun je afbreken met Ctrl+D.
Dan resteert er nog één actie op de commandline. Die dient ervoor om op de Raspberry Pi zelf een Check_ML-agent te installeren, die door de monitoringsoftware regelmatig bevraagd zal worden. Het daarvoor benodigde pakket is bij het installeren al op de Raspberry Pi terecht gekomen en is via de webinterface te downloaden. Via de console is het echter veel eenvoudiger te installeren:
sudo dpkg -i /opt/omd/versions/ 1.4.0p35.cre/share/check_mk/agents/
check-mk-agent_1.4.0p35-1_all.deb
Het pad en de bestandsnaam moet je daarbij aanpassen aan de geïnstalleerde versie.
Voordelen
Vanaf nu kun je in de browser verder: meld je aan bij je site. Voeg als eerste de Raspberry Pi zelf toe als te monitoren systeem. Klik daarvoor onder 'WATO Configuration' in de linker kolom op 'Hosts' en dan rechts op 'Create new host'. Geef als hostname 'localhost' op en klik op 'Save & go to Services'. Dan begint de automatische serviceherkenning – een van de sterke punten van Check_MK. In de bovenste rij knoppen klik je op 'Fix all missing/vanished' om de gevonden services te monitoren. Dergelijke wijzigingen gaan bij Check_MK niet meteen werken, maar die worden verzameld en pas geactiveerd als je daar opdracht voor geeft. Dat doe je met twee muisklikken: de eerste op de oranje '2 changes' en de tweede op 'Activate affected' (ook oranje gekleurd).
Als je vervolgens bij 'Views' bij het deel 'Hosts' op het submenu 'All Hosts' klikt, laat Check_MK een lijst zien van de systemen die op dat moment geconfigureerd zijn om te monitoren – daar staat in eerste instantie dan alleen het item 'localhost' voor je Raspberry Pi. Als je na een paar minuten op 'localhost' klikt, zie je welke diensten Check_MK op het systeem herkent heeft en automatisch in de monitoring heeft opgenomen. Kijk in alle rust uitgebreid naar de gedetailleerde informatie, zoals de automatisch gemaakte grafieken voor de cpu-belasting en dergelijke.
Elk gemonitord detail heet 'Service'. Voor de gangbare diensten stelt Check_MK automatisch alarmgrenzen in, bijvoorbeeld voor hoe vol de bestandssystemen mogen zijn. Er zijn altijd twee drempelwaarden: bij de eerste wordt een waarschuwing gestuurd, bij de tweede een foutmelding. Via regels, die meteen voor meerdere hosts kunnen gelden, zijn die ingestelde standaarden te overrulen. Voor een intensief gebruik van Check_MK moet je ervoor zorgen dat je goed bekend bent met de regels, groepen en tags en de wisselwerkingen daartussen. Een inleidend artikel staat in de vorige c't [2], meer details over Check_MK kun je vinden bij de uitvoerige documentatie ervan (zie de link onderaan dit artikel). Die informatie heb je bij de volgende stappen echter niet nodig.
Om ervoor te zorgen dat Check_MK je via e-mail kan informeren, moet je twee dingen doen: ten eerste moet je voor de gebruiker cmkadmin een e-mailadres instellen en ten tweede moet je Check_MK toestemming geven om alle gebruikers met e-mailadressen berichten te mogen sturen. De e-mailadressen kun je instellen bij 'WATO' bij het submenu 'Users' door op het potloodpictogram voor cmkadmin te klikken en het veld 'Email address' in te vullen. De optie die Check_MK naar alle gebruikers e-mails laat sturen, vind je bij 'WATO' onder 'Notifications' in het deel 'Contact Selection' als ' All users with an email address'. Ook die acties moet je eerst activeren voordat ze daadwerkelijk werkzaam zijn.
Om andere hosts met Check_MK te monitoren, moet je daarop ook een Check_ MK-agent installeren. Die kun je vanuit de webinterface bij 'WATO Configuration' in het deel 'Monitoring Agents' downloaden voor veel platformen. De agents zijn er als DEB- en RPM-pakketten voor het installeren op de gangbare Linux-distributies
en als MSI-bestand voor Windows. Daarbij bevatten de Linux-pakketten bevatten processoronafhankelijke shell-code. Het installeren daarvan volstaat om de agents in het lokale netwerk aan de praat te krijgen.
Veel agents zijn scripts, bijvoorbeeld voor macOS. Bewaar die als bestand op het doelsysteem (bijvoorbeeld in /usr/ local/bin), maak ze uitvoerbaar en zorg ervoor dat aanroepen van buitenaf met die scripts verbonden worden. Bij Linux gebruikt Check_MK daar inmiddels Systemd voor, vroeger was dat xinet. Op een Mac zou je de launch-daemon en een daarop afgestemd plist-bestand kunnen gebruiken. Met SSH gaat het vaak een stuk makkelijker. Hoe dat concreet gaat, staat in [2].
Een van een agent voorzien systeem voeg je net als de Raspberry Pi zelf als Host toe met WATO en vervolgens laat je de automatische serviceherkenning draaien. Net als alle configuratieveranderingen moet je dit eerst expliciet activeren. Als je extra diensten op een host wilt monitoren, moet je eerst controleren of er geen bijpassende hulpjes op de WATO-pagina bij de 'Monitoring Agents' staan. Er zitten inmiddels al veel taken standaard in.
Een Check_MK-agent kan daarnaast scripts als zogeheten plug-ins gebruiken. Die worden op de te monitoren host in een speciale directory gezet, bij Linux normaal gesproken /usr/lib/chech_mk_agent/ plugins. Als je een dergelijke plug-in toevoegt door hem in die directory te zetten, moet je hem wel met chmod +x uitvoerbaar maken. Daarna moet je de webinterface van Check_MK een nieuwe zoektocht naar services laten uitvoeren. De plug-ins verschijnen eveneens onder WATO in het deel 'Monitoring Agents'.
Toepassing
Ook hosts waarop geen agent te installeren valt, bijvoorbeeld een switch, kun je met Check_MK monitoren. Daarbij komen dan de 'Check Plugins' om de hoek kijken. Die halen data op van het betreffende apparaat. Afhankelijk van de mogelijkheden gebruiken ze daar standaardprotocollen voor zoals SNMP, maar ook propriëtaire methoden voor beheerprogramma's. Die moeten dan op de Check_MK-host draaien. Daarbij loop je met een Raspberry Pi wellicht tegen de platformgrenzen aan, als een dergelijk Check Plugin binaire x86-code wil uitvoeren. Maar dat zullen grensgevallen zijn, waarvoor een Raspberry Pi waarschijnlijk toch al het verkeerde platform is.
De sterke punten van Check_MK zitten in het monitoren van meer statische systeemgegevens. Als je met containers werkt, kun je beter de daarvoor bedoelde monitoringoplossingen als Prometheus, Influxdb of Grafana gebruiken. Al moet gezegd worden dat Check_MK op dat gebied ook aardig aan het bijleren is en bij de commerciële versies de vitale gegevens aan Influxdb kan doorgeven. Dankzij het automatisch herkennen van de te monitoren diensten en het instellen daarvan, ben je met Check_MK snel waar je zijn wil. Daarmee onderscheidt het zich ook enorm van oplossingen op basis van Nagios of Icinga – daar liggen wel de roots van Check_MK, maar ze spelen volgens de ontwikkelaars geen belangrijke rol meer.
We hebben Check_MK op een Raspberry Pi bij wijze van test gedurende een groot aantal weken enkele tientallen services laten monitoren. Het systeem werkte met een kwalitatief goede sd-kaart op het moment van schrijven nog steeds zonder problemen. Bij eerdere pogingen met minder goede hardware gaf de sd-kaart er na een paar dagen al de brui aan. Voor een continu gebruik moet je in elk geval dan ook regelmatig een back-up inplannen om ervoor te zorgen dat je de gelogde vitale gegevens niet verliest. Dat kan ook weer met een omd-commando: omd backup testsite /tmp/testsite.tar slaat alle data op in een bestand, dat je met omd restore later weer in een nieuwe site kunt herstellen.
Het zou echter ook een optie kunnen zijn om de intensief beschreven complete bestandsboom /opt/omd gewoon in zijn geheel op een via usb aangesloten ssd te bewaren.