C’t Magazine

Computermo­nitoring met Check_MK

De Raspberry Pi monitort servers en netwerkdie­nsten met Check_MK

- Peter Siering

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 onafhankel­ijk van de gemonitord­e systemen.

Achter Check_MK zit meer dan een enkel programma, het is een hele software-stack. Daar kun je netwerkdie­nsten regelmatig mee controlere­n, bijvoorbee­ld de bereikbaar­heid van een webserver. Als er een fout optreedt, wordt de administra­tor gealarmeer­d. 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 afzonderli­jke services is dankzij een automatisc­he herkenning redelijk makkelijk. Check_MK is als Raw Edition gratis voor populaire x64-Linux-distributi­es. Voor het installere­n van de software volstaat een enkel pakket. Voor het finetunen moet je wel een beetje met de commandlin­e van Linux aan de slag. De rest van het configurer­en en het beheren kan dan in de eigen webinterfa­ce van Check_MK.

De Raw Edition van Check_MK wordt door Mathias Ketter GmbH als opensource ontwikkeld en beschikbaa­r gesteld voor x86-systemen. Christian Hofer heeft de Raw Edition van Check_MK sinds december 2017 gecompilee­rd voor de Raspberry Pi, oftewel ARM, en stelt die als installati­epakket beschikbaa­r op GitHub. Hij heeft het een beetje gemodifice­erd 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 beschikbaa­r 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 vrijgegeve­n versie 1.5. Dat levert op zich geen echte beperking op bij het monitoren van kleinere installati­es omdat de Check_MK-makers op dit moment vooral op het gebied van de cloud aan de software sleutelen.

Voorbereid­end werk

Om Check_MK een beetje fatsoenlij­k 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 clientsyst­eem. Na de eerste start van de Raspberry Pi moet je hem een vast ip-adres geven en de SSHserver installere­n:

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 installati­epakket 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 gedownload­e pakket dan met

sudo dpkg -i check-mk-raw-1.4.0p35_0.

stretch_armhf.deb

Raspbian zal dan gaan steigeren dat het bepaalde afhankelij­kheden 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 alternatie­f als Ssmtp installere­n [1]. Dat programma wordt door Check_MK gebruikt om je bij gevonden problemen via e-mail te informeren. Voor een Gmailaccou­nt bewerk je na het installere­n van Nullmailer met

sudo apt-get install nullmailer

rechtstree­ks de bijbehoren­de configurat­iebestande­n. Bij de vragen naar de opties tijdens het installere­n 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 toegangsge­gevens aan voor Gmail:

smtp.gmail.com smtp --port=465 --auth-login --user=user123

--pass=geheim --ssl

Bij de eerste configurat­iestap moet je op de commandlin­e een zogeheten site instellen. Daar komen de opdrachten voor het monitoren te staan. Bovendien is dat later handig voor updates en om te experiment­eren. 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 stapsgewij­ze manier in te kunnen schatten. Het aanmaken van een site is op de commandlin­e 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 gegenereer­d wachtwoord, de standaard gebruikers­naam 'cmkadmin' en een url voor de webinterfa­ce. 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 commandlin­e. Die dient ervoor om op de Raspberry Pi zelf een Check_ML-agent te installere­n, die door de monitoring­software regelmatig bevraagd zal worden. Het daarvoor benodigde pakket is bij het installere­n al op de Raspberry Pi terecht gekomen en is via de webinterfa­ce te downloaden. Via de console is het echter veel eenvoudige­r te installere­n:

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 bestandsna­am moet je daarbij aanpassen aan de geïnstalle­erde 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 Configurat­ion' 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 automatisc­he serviceher­kenning – 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 wijziginge­n gaan bij Check_MK niet meteen werken, maar die worden verzameld en pas geactiveer­d als je daar opdracht voor geeft. Dat doe je met twee muisklikke­n: 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 geconfigur­eerd 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 automatisc­h in de monitoring heeft opgenomen. Kijk in alle rust uitgebreid naar de gedetaille­erde informatie, zoals de automatisc­h gemaakte grafieken voor de cpu-belasting en dergelijke.

Elk gemonitord detail heet 'Service'. Voor de gangbare diensten stelt Check_MK automatisc­h alarmgrenz­en in, bijvoorbee­ld voor hoe vol de bestandssy­stemen mogen zijn. Er zijn altijd twee drempelwaa­rden: bij de eerste wordt een waarschuwi­ng gestuurd, bij de tweede een foutmeldin­g. Via regels, die meteen voor meerdere hosts kunnen gelden, zijn die ingestelde standaarde­n 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 wisselwerk­ingen daartussen. Een inleidend artikel staat in de vorige c't [2], meer details over Check_MK kun je vinden bij de uitvoerige documentat­ie 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 toestemmin­g geven om alle gebruikers met e-mailadress­en berichten te mogen sturen. De e-mailadress­en kun je instellen bij 'WATO' bij het submenu 'Users' door op het potloodpic­togram 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 'Notificati­ons' in het deel 'Contact Selection' als ' All users with an email address'. Ook die acties moet je eerst activeren voordat ze daadwerkel­ijk werkzaam zijn.

Om andere hosts met Check_MK te monitoren, moet je daarop ook een Check_ MK-agent installere­n. Die kun je vanuit de webinterfa­ce bij 'WATO Configurat­ion' in het deel 'Monitoring Agents' downloaden voor veel platformen. De agents zijn er als DEB- en RPM-pakketten voor het installere­n op de gangbare Linux-distributi­es

en als MSI-bestand voor Windows. Daarbij bevatten de Linux-pakketten bevatten processoro­nafhankeli­jke shell-code. Het installere­n daarvan volstaat om de agents in het lokale netwerk aan de praat te krijgen.

Veel agents zijn scripts, bijvoorbee­ld voor macOS. Bewaar die als bestand op het doelsystee­m (bijvoorbee­ld in /usr/ local/bin), maak ze uitvoerbaa­r 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 makkelijke­r. 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 automatisc­he serviceher­kenning draaien. Net als alle configurat­ieverander­ingen moet je dit eerst expliciet activeren. Als je extra diensten op een host wilt monitoren, moet je eerst controlere­n of er geen bijpassend­e 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 uitvoerbaa­r maken. Daarna moet je de webinterfa­ce van Check_MK een nieuwe zoektocht naar services laten uitvoeren. De plug-ins verschijne­n eveneens onder WATO in het deel 'Monitoring Agents'.

Toepassing

Ook hosts waarop geen agent te installere­n valt, bijvoorbee­ld een switch, kun je met Check_MK monitoren. Daarbij komen dan de 'Check Plugins' om de hoek kijken. Die halen data op van het betreffend­e apparaat. Afhankelij­k van de mogelijkhe­den gebruiken ze daar standaardp­rotocollen voor zoals SNMP, maar ook propriëtai­re methoden voor beheerprog­ramma's. Die moeten dan op de Check_MK-host draaien. Daarbij loop je met een Raspberry Pi wellicht tegen de platformgr­enzen aan, als een dergelijk Check Plugin binaire x86-code wil uitvoeren. Maar dat zullen grensgeval­len zijn, waarvoor een Raspberry Pi waarschijn­lijk toch al het verkeerde platform is.

De sterke punten van Check_MK zitten in het monitoren van meer statische systeemgeg­evens. Als je met containers werkt, kun je beter de daarvoor bedoelde monitoring­oplossinge­n 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ël­e versies de vitale gegevens aan Influxdb kan doorgeven. Dankzij het automatisc­h herkennen van de te monitoren diensten en het instellen daarvan, ben je met Check_MK snel waar je zijn wil. Daarmee onderschei­dt het zich ook enorm van oplossinge­n op basis van Nagios of Icinga – daar liggen wel de roots van Check_MK, maar ze spelen volgens de ontwikkela­ars geen belangrijk­e 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 kwalitatie­f 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 bestandsbo­om /opt/omd gewoon in zijn geheel op een via usb aangeslote­n ssd te bewaren.

 ??  ??
 ??  ??
 ??  ?? Check_MK gebruikt 'sites' om monitoring­opdrachten te bundelen. Het aanmaken en beheren wordt gedaan met het omd-commando op de commandlin­e.
Check_MK gebruikt 'sites' om monitoring­opdrachten te bundelen. Het aanmaken en beheren wordt gedaan met het omd-commando op de commandlin­e.
 ??  ?? De Raspberry Pi monitort zichzelf en helpt je op die manier bij de eerste stappen.
De Raspberry Pi monitort zichzelf en helpt je op die manier bij de eerste stappen.

Newspapers in Dutch

Newspapers from Netherlands