Hoe wij ons platform en infrastructuur nauwkeurig monitoren

Het is weer hardcore tech-time! Dit keer neem ik je mee in de monitoring van onze systemen en ons platform. Doordat we alles nauwlettend in de gaten houden, weten we precies wat er wel en wat er niet goed gaat in ieder onderdeel van ons platform. We hebben onze monitoring zorgvuldig afgericht, waardoor we problemen vrijwel altijd van tevoren zien aankomen. We ondernemen dan proactief actie, zodat de impact van het probleem minimaal blijft en niet escaleert.

Monitoring bij Antagonist: de servers bij Antagonist

De kwaliteit van onze dienstverlening is immers zo goed als onze monitoring; hoe beter we anticiperen, hoe gebruiksvriendelijker het voor je wordt! Dat betekent dat er heel veel achter de schermen wordt gedaan zonder dat iemand het in de gaten heeft. Want wat er onder de ‘motorkap’ gebeurt is onze verantwoording, zodat jij met je website kunt doen wat je écht wilt. Toch is het af en toe interessant om even onder die motorkap te kijken naar wat voor successen er worden geboekt. Iets dat wijzelf ook weleens vergeten om bij stil te staan.

Onze setup voor monitoring

Voor onze monitoring maken we gebruik van Zabbix. Deze (opensource)software stelt ons in staat om ieder onderdeel van ons platform tot in detail te observeren. Als dingen niet zo gaan zoals het hoort, dan kunnen we eenvoudig hier acties op uit te voeren. Een simpel voorbeeld van één van deze acties is: het versturen van een bericht naar de dienstdoende systeembeheerder zijn.

Monitoring bij Antagonist: logo Zabbix

Iedere server wordt constant op 458 punten gecontroleerd. De uitkomst van deze checks wordt opgeslagen in een PostgreSQL-database, zodat we er later uptime- en performance-statistieken kunnen uithalen voor rapportage. Ook gebruiken we deze gegevens voor het generen van rapportages voor storingen. Samen – alle servers bij elkaar opgeteld – zorgt dat ervoor, dat onze Zabbix-installatie 897 punten per seconde controleert en opslaat. Hoe veilig wil je het hebben?

Dikke server

Zoals je begrijpt, hebben we een flinke server nodig om al die controles per seconde uit te voeren en hiervan de resultaten op te slaan. Daarnaast moet het ook nog eens gemakkelijk verwerkt kunnen worden. Voor de techneuten (of andere geïnteresseerden) zijn dit de specificaties van deze server: 2 x Intel E5-2640 2.5GHz CPU (totaal 24 threads), 64 GB RAM, 15k RPM disks in RAID10 configuratie.

Om je een beter inzicht te geven in hoe diep wij ons platform monitoren, ga ik ieder onderdeel hieronder afzonderlijk bespreken.

Monitoring van het netwerk

We beginnen met dit onderdeel, omdat het de basis is van ons gehele platform. Als het netwerk niet goed functioneert, dan maakt het ook niet uit dat een server problemen heeft. Het netwerk is immers één van de belangrijkste onderdelen van de infrastructuur dat voor bereikbaarheid zorgt.

We controleren de werking van ons netwerk passief en actief:

  • Actief houdt in dat we met SNMP-waardes van een switch of router uitlezen en controleren of deze voldoet aan de gestelde eisen.
  • De passieve monitoring maakt gebruik van SNMP-traps. Bij het afgaan van een SNMP-trap verstuurt het apparaat een bericht naar de monitoringserver waar hij vervolgens verder wordt verwerkt.

Alle onderdelen die we monitoren zijn gedekt in actieve controles. De toevoeging van SNMP-traps zorgt ervoor dat we ook op de hoogte zijn als er bijvoorbeeld een netwerkverbinding kort aan- en uitgaat, en dit precies tussen twee actieve controles valt. Op deze manier dekken we dus alles af en dat is erg prettig als bereikbaarheid één van je hoogste prioriteiten is!

Monitoring bij Antagonist: het netwerk

We monitoren onze netwerkapparatuur op de volgende punten:

  • Netwerkpoorten en -modules:
    • Hoort de link up te zijn, en is deze dat ook?
    • Receive of transmit errors.
    • Stroomsterkte (A) van de optics.
    • Receive en transit-sterkte (dBm).
    • Gebruikte bandbreedte.
  • Power supplies: is de stroomvoorziening naar de router of switch redundant?
  • Temperatuur van het chassis, CPU en optics.

Monitoring van de servers

Nu we de monitoring van het netwerk duidelijk hebben is het tijd om een stapje verder te gaan. Dichterbij naar de plek vanwaar data geserveerd worden: de hardware en het besturingssysteem van de servers. Dit controleren we onder andere op de volgende punten (voor het overzicht zijn een aantal kleine onderdelen achterwege gelaten).

Data-integriteit

Data-integriteit is altijd prioriteit nummer één bij Systeembeheer! We moeten te allen tijde er 100% zeker van zijn dat data die bij ons zijn opgeslagen in perfecte staat verkeren. Om dit scherp in de gaten te houden – en ver voordat er problemen optreden actie te kunnen ondernemen – controleren we onze servers op een aantal belangrijk punten.

Harde schijven
Vertonen de disks tekenen van slijtage of uitval? Als een schijf lees- of schrijffouten vertoont, dan hoeft dat nog geen probleem te zijn. Deze worden door de software afgevangen en gecorrigeerd. Daarnaast zijn disks dubbel uitgevoerd. Als een disk over een bepaald quota aan fouten gaat, dan is de kans groot dat deze binnenkort ermee stopt. In dit geval wordt de schijf preventief vervangen.

SSD’s
Solid State Drives hebben niet hetzelfde gebruikspatroon – en dus slijtagepatronen – als traditionele schijven. Ze hebben geen draaiende onderdelen, waardoor mechanische slijtage achterwege blijft. Echter, SSD’s zijn wel onderhevig aan slijtage als gevolg van het wegschrijven dan data. Hierom monitoren we naast lees- en schrijffouten ook de zogenaamde wear-out levels.

Health van de dataopslag
Naast dat we ieder onderdeel van de hardware afzonderlijk onder de loep nemen, controleren we ook de status van al deze onderdelen samen. Zijn data bijvoorbeeld nog dubbel opgeslagen, of is er geen ‘data rot’ geweest?

Beschikbaarheid

Na data-integriteit heeft beschikbaarheid onze prioriteit. Je kunt ergens je websites en e-mail opslaan, maar als het onbereikbaar is, dan heb je er niet veel aan. Om te verzekeren dat jouw gegevens altijd en overal beschikbaar zijn, worden de hardware, het besturingssysteem en de services op volgende onderdelen constant gecontroleerd.

Besturingssyteem en hardware:

  • Power supplies
    Al onze servers hebben dubbele voedingen die op verschillende stroomvoorzieningen zijn aangesloten. Om er zeker van te zijn dat bij uitval van één van deze power feeds of een power supply alles zonder hikken of stoten doordraait, is het belangrijk dat iedere server over een redundante stroomtoevoer beschikt.
  • Temperatuur
    Servers produceren veel warmte. Deze warmte moet goed worden afgevoerd om problemen door oververhitting te voorkomen. Hierom controleren we de temperatuur van het chassis en de CPU’s constant.
  • Netwerkverbinding
    Onze servers beschikken over dubbele netwerkkaarten en zijn zo geconfigureerd dat bij uitval van een netwerkpad er automatisch naar een alternatieve verbinding wordt overgeschakeld. Hiermee vangen we problemen als gevolg van kabelbreuken, uitval van switches of uitval van de netwerkkaart af.

Belasting op het systeem:

  • Hoeveel RAM wordt er gebruikt en waarvoor?
  • Wat is de belasting op de CPU?
  • Beschikbare besturingssysteem resources zoals:
    • Het aantal beschikbare TCP-verbindingen.
    • Het aantal open files.
    • Het aantal lopende processen.
    • Hoe vol zitten de conntrack tables?
    • Wat is de ‘load’ op het systeem (hoeveel processen staan er gemiddeld in de wachtrij)?

Monitoring bij Antagonist: CPU utilization

Monitoring bij Antagonist: load

Individuele services:
Bovenop het besturingssysteem draaien allerlei services. Deze zijn verantwoordelijk voor het serveren van je websites, het uitvoeren van database-query’s, en het verzenden en afleveren van e-mail. We controleren niet alleen of deze services luisteren naar een TCP-poort, het gaat veel dieper.

De monitoring zit zo in elkaar dat het zo dicht mogelijk bij het echte gebruik van websites en e-mail komt. Met andere woorden: onze monitoring-server simuleert handelingen die nagenoeg hetzelfde zijn als die jij als gebruiker uitvoert met je website of e-mail.

Per service houden we het volgende in de gaten:

  • PHP
    Je hebt bij ons de keuze uit verschillende PHP-versies. De werking van al deze versies monitoren we per minuut. Op dit moment zijn de laatste stabiele versies: 5.3, 5.4, 5.5 en 5.6. Van iedere versie controleren we alle variabelen die je kunt vinden in phpinfo(). Daarnaast maken we vanuit PHP ook connecties naar MySQL, voeren we hier query’s op uit en controleren we of deze het gewenste resultaat geven. Ook maken we verbinding met IMAP om een geselecteerde mailbox uit te lezen.
  • MySQL
    Bijna iedere website maakt tegenwoordig gebruik van MySQL en is dus even belangrijk als het bereikbaar zijn van de webserver zelf. We controleren dit door per minuut query’s uit te voeren en de juistheid ervan zorgvuldig te controleren.
  • E-mail
    Het ontvangen, verzenden en afleveren van e-mail wordt afgehandeld door twee losse services. Exim voor het ontvangen en versturen (SMTP), en Dovecot voor het lezen of ophalen van e-mail (POP3/IMAP). We monitoren de werking door iedere 60 seconden een e-mail te versturen naar een speciale e-mailbox op de server. Vervolgens zoeken we met IMAP in de e-mailbox naar deze specifieke e-mail. Als we ‘m hebben gevonden, dan wordt deze verwijderd en is de check succesvol voltooid. Dit gehele proces moet binnen 20 seconden zijn afgerond. We zitten er dus superstrak op.
  • Apache
    Deze service is verantwoordelijk voor het serveren van je website aan je bezoekers. We controleren per minuut of we een pagina met bepaalde content op kunnen halen, en of deze content ook klopt. Daarnaast controleren we of Apache nog voldoende vrije slots heeft. Als meer dan 80% van de beschikbare threads (slots) in gebruik zijn, dan levert dit een alert op in onze monitoring.

Monitoring bij Antagonist: Apache

Controleren van back-ups

Back-ups, back-ups, back-ups. Iedereen roept het, maar weinig kijken ernaarom. Het controleren van back-ups is een intensieve (en helaas saaie) klus. Hierdoor kunnen fouten ontstaan, omdat deze controles door mensenhanden worden uitgevoerd. Dat wil je niet!

Zodoende hebben wij besloten het anders aan te pakken. Al onze back-ups worden gecontroleerd door Zabbix. We maken per uur een volledige back-ups (van alles) die gerepliceerd worden naar externe locaties. We controleren de back-ups op de externe locaties op leeftijd. De laatst gemaakte back-up mag nooit ouder zijn dan zes uur. Daarnaast controleren we of er überhaupt wel een back-up aanwezig is, anders kan Zabbix namelijk niet de leeftijd controleren en krijgen krijgen we ook geen melding van verouderde back-ups.

Wat als Zabbix vindt dat het niet OK gaat?

We categoriseren de alerts die Zabbix gegenereerd in vier categorieën. Iedere categorie heeft een ‘severity’-score. Dit zijn:

High

Een type alert heeft voor ons de hoogste prioriteit. Er wordt binnen enkele minuten een bericht naar de telefoon van de dienstdoende systeembeheer gestuurd, 24 uur per dag, 7 dagen in de week. Deze heeft vervolgens 15 minuten om het probleem te bevestigen in Zabbix. Gebeurt dit niet dan wordt het probleem geëscaleerd, zowel de eerste en tweedelijns systeembeheerders krijgen nu een bericht. Als hier niet op wordt gereageerd, dan gaat het naar de derdelijns.

We gebruiken voor escalaties een ander medium dan voor het versturen van de berichten in normale gevallen. Normale berichten worden met Pushover verstuurd, escalaties altijd met SMS. Dit is voor het geval Pushover zelf problemen heeft.

Nadat het bericht is verstuurd, maakt onze monitoring-server een kopie van de status van het systeem. We noemen dit snapshots. Hierin is in opgenomen wat de actieve TCP-verbindingen zijn, welke processen er draaien, wat de openstaande aanvragen in de webserver zijn, en welke MySQL-query’s er op dat moment worden uitgevoerd. Dit zorgt ervoor dat we – zodra we een berichtje van onze monitoring krijgen – gelijk bezig kunnen met het oplossen van het probleem. Hierna kunnen we het in alle rust uitzoeken door de opgeslagen snapshots te analyseren.

Average

Dit zijn problemen die niet voor onbereikbaarheid zorgen, maar die wel snel opgelost moeten worden. Vaak omdat dit op de wat langere termijn ernstige gevolgen kan hebben. Je kunt hierbij denken aan een server die minder dan 10% vrije schijfruimte heeft.

Warning

Problemen in deze categorie hebben geen gevolgen voor uiteindelijke downtime, maar ze moeten zeker wel opgelost worden. Een voorbeeld hiervan is dan een back-up meer dan 6 uur vertraagd is.

Informational

Dit zijn alle meldingen die niet in de bovenstaande categorieën passen en niet van belang zijn voor het functioneren van de services. Vaak bieden ze zinvolle hints, zoals wanneer er bijvoorbeeld een server gereboot is.

Monitoring van de monitoring

Tot slot, mocht je je afvragen of onze monitoring-server ook een vangnet heeft, het antwoord is: ja. We hebben monitoring op onze monitoring, zodat we onze monitoring kunnen monitoren, terwijl de monitoring monitort.

Monitoring bij Antagonist: het monitoren van de monitoring

Vanaf een externe locatie controleren we iedere minuut of Zabbix z’n werk nog doet. Is dit niet het geval dan krijgen we hier binnen drie minuten bericht over. Zo houden we nauwlettend al onze systemen in de gaten, inclusief de systemen die helpen bij het in de gaten houden. We streven immers naar een zo hoog mogelijke veiligheid, betrouwbaarheid en stabiliteit!

Hopelijk heb ik je met dit artikel een beter inzicht kunnen geven in hoe wijzelf jou én ons ervan verzekeren dat jouw data, website en e-mail veilig en altijd beschikbaar zijn. Heb je nog geen website bij Antagonist, maar ben je wel nieuwsgierig geworden naar onze diensten?

Klik hier voor meer informatie

P.S. Wil je op de hoogte blijven van alle artikelen, updates, tips en trucs die verschijnen op ons blog? Dat kan! Rechts bovenin via RSS, e-mail, het liken op Facebook, het +1’en op Google+ of het volgen op Twitter.