Wij zijn druk bezig geweest om je beter inzicht te geven in het verbruik van jouw website. Dankzij de update naar LVE Stats 2 kun je nu nóg gedetailleerder zien hoeveel rekenkracht je gebruikt. Ook zijn de voorspellingen van onze proactieve monitoring hierdoor een flink stuk nauwkeuriger. Graag vertel ik je meer over deze verbeteringen!
‘LVE Stats’ staat voor ‘Lightweight Virtual Environment Statistics’. Dit systeem verzamelt de gebruikersstatistieken van websites, slaat deze op in de database en genereert grafieken over het gebruik van de afgelopen periode. De gegevens die het van je website verzamelt, kun je eenvoudig in DirectAdmin van je pakket inzien bij Resource usage.
Nadelen van LVE Stats 1
Een groot handicap in LVE Stats 1 was dat data niet nauwkeurig werden opgeslagen. Zo werd bijvoorbeeld de ‘CPU limit’, het maximum aan CPU resources dat je container mag gebruiken, opgeslagen als percentage van het totaal beschikbare op de server. En ook nog eens als afgerond getal. Graag leg ik met een voorbeeld uit waarom dit onwenselijk is.
Onze servers beschikken over 24 cores. Wanneer je een Plus-pakket hebt, dan mag je 1 core gebruiken. Dat is dus 1/24ste van het totaal. Dit werd opgeslagen als 4 CPU cores (4,17% van de gehele server). Ditzelfde geldt voor veel andere waardes die gemeten werden. Je kunt je voorstellen dat dit nogal een vertekend beeld geeft over het daadwerkelijk gebruik.
De bovenstaande afbeelding laat zien hoe LVE Stats 1 het verbruik in grafieken toont. Zoals je kunt zien, zijn de lijnen in de grafieken erg wisselvallig en onnauwkeurig. Om het CPU-gebruik aan te geven, kent het bijvoorbeeld maar 6 ijkpunten: 0%, 20%, 40%, 60%, 80% of 100%.
Voordelen van LVE Stats 2
LVE Stats 2 is in veel opzichten flink verbeterd ten opzichte van zijn voorganger. In de nieuwe versie wordt bijvoorbeeld het CPU-gebruik opgeslagen als percentage van 1 CPU-core in plaats van het totaal. En daarnaast slaat het de getallen ook 100 keer zo precies op.
De afbeelding hierboven laat zien hoe LVE Stats 2 de grafieken weergeeft. Zoals je kunt zien, zijn deze grafieken veel duidelijker. Je kunt trends herkennen, tot op de minuut nauwkeurig. Hierdoor krijg je een veel duidelijker beeld van het gebruik van je website over de afgelopen periode.
Strikte update cycles
Mooiere grafieken en preciezere data waren voor ons niet de enige argumenten om te upgraden. Wij houden ervan om onze systemen met strikte update cycles up-to-date te houden. Er stonden een aantal updates in de wacht, omdat die afhankelijk waren geworden van LVE Stats 2. Doorpakken dus!
Het updaten naar LVE Stats 2
Het updaten van LVE Stats naar de laatste versie klinkt wellicht simpel, maar het had voor ons achter de schermen behoorlijk wat voeten in de aarde. Het is niet slechts een kwestie van ‘yum update -y lve-stats’ intypen en gaan. Het heeft het nodige uitzoekwerk, voorbereiding en planning met zich meegebracht, maar wij houden wel van een beetje uitdaging!
Standaard slaat LVE Stats zijn data op in een SQLite database die lokaal op de server draait. Wij sloegen het echter op in een centrale PostgreSQL server. Dit is een ondersteunde feature, maar wel afwijkend van de standaard. De argumenten die we destijds hadden om de data centraal op te slaan, waren niet meer van toepassing. We zijn daarom de data weer lokaal in een SQLite database gaan opslaan. Waarom?
- Door je zo veel mogelijk aan de standaardconfiguratie te houden, voorkom je incompatibiliteit in de toekomst. De ‘default’ is de meestgebruikte optie in de software. Het bevat dus doorgaans minder bugs, omdat het een grotere gebruikersgroep heeft.
- We houden ervan om onze platform zo veel mogelijk ‘scale-out’ te maken, met zo min mogelijk ‘Single Points of Failure’ (SPOF). Mocht de centrale database-server falen, hoewel die ‘High Available’ is, dan hebben gebruikers op ons platform daar last van. We willen de impact van mogelijke problemen dus altijd zo klein mogelijk houden.
Conversie van de oude data
Oude data moesten naar een nieuw formaat worden geconverteerd. Een lastige klus, de oude data waren namelijk veel minder precies dan de nieuwe. Precieze data maken van niet precieze data is onmogelijk, maar de nieuwe versie verwachtte dit wel. Met complexe berekeningen hebben we gelukkig alsnog een redelijk representatieve conversie kunnen uitvoeren.
Uitgebreid testen
Voordat we wijzigingen doorvoeren, testen we altijd zorgvuldig op onze testomgeving. Je wilt immers geen grote wijziging op een live omgeving uitvoeren, om achteraf tot de conclusie te komen dat er onderdelen zijn stukgegaan. We hebben daarom op onze testomgeving meerdere malen de conversie uitgevoerd, de data nagekeken en gecontroleerd of LVE Stats 2 hier goed zijn werk mee kon doen.
Nadat we tevreden waren over het resultaat zijn we conversie in ‘batches’ op ons productieplatform gaan doorvoeren. Eerst één server, daarna in steeds wat grotere groepen. Tussen elke batch was er sprake van een zogeheten ‘cooldown’ van een aantal dagen. Op deze manier konden we perfect balanceren tussen het oplossen van de laatste bugs, mochten die er toch zijn, en het minimaliseren van de impact op het aantal gebruikers dat last heeft van deze issues.
Het traject
In grote lijnen zag het door ons doorlopen traject er zo uit:
- we begonnen met de initiële conversie van de data naar een lokale database. LVE Stats 1 lieten we nog data verzamelen, omdat de conversie een aantal uur nodig had. We wilden liever geen gaten in de data tussen de conversies in;
- vervolgens hebben we het notificatiesysteem voor proactieve monitoring in ‘by-pass’ gezet. In die modus verzamelt het wel data, maar stuurt het er klanten geen meldingen over;
- hierna hebben we een laatste en incrementele aanvulling van de oude naar de nieuwe data gedaan. We converteerden de laatste paar uur aan data, die LVE Stats 1 ondertussen nog verzameld had, naar het nieuwe formaat en sloegen dit op;
- alles stond daarna klaar om de update uit te voeren. De updates van onze eigen statistieken deamon en LVE Stats werden doorgezet;
- we hebben de servers nog een aantal dagen voor onze proactieve monitoring in by-pass mode laten staan. We controleerden vervolgens of de mails, die verzonden hadden moeten worden, correct waren;
- Ten slotte schakelden we de notificaties weer in en begonnen we aan de volgende batch, totdat alles servers LVE Stats 2 hadden.
Proactieve monitoring
Naast nauwkeurigere grafieken van LVE Stats 2, en dat we ons weer zonder uitzonderingen aan onze update-routine kunnen houden, biedt de manier waarop de nieuwe versie zijn data opslaat nog een ander groot voordeel: perfectionering van onze proactieve monitoring. De data die LVE Stats verzamelt, vormt hier namelijk de input van.
Om onze proactieve monitoring goed zijn werk te kunnen laten doen, hebben we een aantal aanpassingen moeten maken in onze eigen statistieken daemon. Deze leest de gebruiksdata namelijk rechtstreeks uit de database en rapporteert deze aan de proactieve monitoring. Ook moest de software en tabellenstructuur worden aangepast om tegen een andere database te kunnen praten.
Wat is proactieve monitoring?
Een door onszelf ontwikkeld systeem dat signalen herkent die tot problemen binnen een website kunnen leiden. Daar stelt het je van op de hoogte, zodat je het structureel kunt oplossen. Zo kan er worden gehandeld, voordat er überhaupt een probleem ontstaat.
Tot slot
Nu alle servers zijn geconverteerd, hebben we mooiere en meer inzichtelijke statistieken en grafieken over het gebruik van je websites over de afgelopen maand. Daarnaast is onze proactieve monitoring een stuk betrouwbaarder geworden en kunnen we er in de toekomst veel leuke verbeteringen en features aan toevoegen.
Achter de schermen zijn wij voor jou altijd hard aan de slag. Hopelijk heb ik met dit artikel je dan ook meer inzicht in onze werkzaamheden kunnen geven. Heb je zelf ook een passie voor het ontwikkelen en uitvoeren van dit soort verbeteringen? Neem gerust een kijkje bij onze vacatures! De deur staat altijd open voor nieuw talent.
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.