Monitoring is niet alleen maar mooie grafieken (hoewel die best gaaf zijn). Het is je vroege waarschuwingssysteem, je kristallen bol en je prestatie allemaal in één. Omdat Quarkus is geoptimaliseerd voor zowel JVM als native compilatie, is inzicht in de prestatiestatistieken nog crucialer.
"Als je het niet kunt meten, kun je het niet verbeteren." - Peter Drucker (waarschijnlijk tijdens het debuggen van een gedistribueerd systeem)
Prometheus en Grafana: Het Dynamische Duo van Monitoring
Maak kennis met Prometheus en Grafana - de Batman en Robin van de monitoringwereld (helaas zonder capes).
- Prometheus: De tijdreeksdatabase die je statistieken verzamelt en opslaat. Het is als een stofzuiger voor data, die op regelmatige tijdstippen cijfers uit je Quarkus-app zuigt.
- Grafana: Het mooie gezicht van de operatie. Het neemt de data van Prometheus en verandert deze in dashboards die zo mooi zijn dat je ze wilt inlijsten en aan je muur wilt hangen.
Samen vormen ze een monitoringsoplossing die krachtiger is dan een locomotief en in staat is om hoge stapels in één keer te overbruggen. (Oké, ik stop nu met de superheldenanalogieën.)
Quarkus Instellen voor Metric Export
Laten we eerst Quarkus zover krijgen dat het zijn interne werking onthult. We moeten de MicroProfile Metrics-extensie aan ons Quarkus-project toevoegen.
Voeg dit toe aan je pom.xml
:
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-metrics</artifactId>
</dependency>
Of, als je een Gradle-liefhebber bent:
implementation 'io.quarkus:quarkus-smallrye-metrics'
Met dit, zal Quarkus automatisch statistieken blootstellen op het /q/metrics
eindpunt. Het is alsof je je app een megafoon geeft om zijn statistieken aan de wereld te verkondigen (of in ieder geval aan Prometheus).
Prometheus: Je Metric Stofzuiger
Nu Quarkus spraakzaam is over zijn statistieken, laten we Prometheus instellen om te luisteren. Hier is een snelle gids om Prometheus op te zetten:
- Download Prometheus van de officiële website.
- Maak een
prometheus.yml
configuratiebestand aan:
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'quarkus'
metrics_path: '/q/metrics'
static_configs:
- targets: ['localhost:8080']
Dit vertelt Prometheus om elke 15 seconden statistieken van je Quarkus-app te verzamelen. Pas localhost:8080
aan als je app op een andere host of poort draait.
- Start Prometheus:
./prometheus --config.file=prometheus.yml
Voilà! Prometheus verzamelt nu statistieken sneller dan een eekhoorn noten verzamelt voor de winter.
Grafana: Je Statistieken Instagram-Waardig Maken
Met Prometheus die data verzamelt, is het tijd om het er mooi uit te laten zien. Enter Grafana:
- Download en installeer Grafana van de officiële site.
- Start Grafana en navigeer naar
http://localhost:3000
(standaard inloggegevens zijn admin/admin). - Voeg Prometheus toe als gegevensbron:
- Ga naar Configuratie > Gegevensbronnen
- Klik op "Gegevensbron toevoegen" en selecteer Prometheus
- Stel de URL in op
http://localhost:9090
(de standaardpoort van Prometheus) - Klik op "Opslaan & Testen"
Nu ben je klaar om dashboards te maken die je collega's jaloers zullen maken.
Quarkus Dashboards Maken in Grafana
Tijd om die creatieve spieren te flexen en een dashboard te bouwen. Hier is een startpakket van panelen die je misschien wilt opnemen:
- CPU-gebruik
- Geheugengebruik
- HTTP-verzoekfrequentie
- Responstijdpercentielen
- Foutpercentage
Hier is een voorbeeldquery voor HTTP-verzoekfrequentie:
rate(http_server_requests_seconds_count{application="your-app-name"}[1m])
Pro tip: Begin met een paar belangrijke statistieken en itereren. Je dashboard moet evolueren met je applicatie en monitoringbehoeften.
Essentiële Quarkus Statistieken om in de Gaten te Houden
Hoewel Quarkus een overvloed aan statistieken blootstelt, zijn hier enkele die je zeker in de gaten wilt houden:
- JVM Statistieken: Geheugengebruik, garbage collection statistieken
- HTTP Statistieken: Aantal verzoeken, responstijden, foutpercentages
- Database Connectiepool: Actieve verbindingen, wachttijd
- Aangepaste Bedrijfsstatistieken: Specifiek voor je applicatielogica
Onthoud, het doel is inzicht, niet informatieoverload. Kies statistieken die een verhaal vertellen over de gezondheid en prestaties van je applicatie.
Waarschuwingen: Omdat je niet 24/7 naar Dashboards kunt Kijken
Tenzij je de kunst van niet knipperen hebt beheerst (in dat geval moeten we praten), wil je waarschuwingen instellen voor wanneer dingen misgaan. Grafana maakt dit eenvoudig:
- Klik in je dashboard op een paneeltitel en selecteer "Bewerken".
- Ga naar het tabblad "Waarschuwing".
- Definieer voorwaarden voor wanneer de waarschuwing moet worden geactiveerd.
- Stel meldingskanalen in (e-mail, Slack, PagerDuty, enz.).
Bijvoorbeeld, je wilt misschien gewaarschuwd worden wanneer:
- Foutpercentage meer dan 1% is gedurende 5 minuten
- P95 responstijd meer dan 500ms is gedurende 10 minuten
- CPU-gebruik meer dan 80% is gedurende 15 minuten
Je Monitoring Setup Testen
Voordat je jezelf op de schouder klopt en het een dag noemt, laten we ervoor zorgen dat dit daadwerkelijk werkt:
- Genereer wat belasting op je Quarkus-app (Apache JMeter of een eenvoudige loop curl-script kan de truc doen).
- Kijk hoe je Grafana-dashboard tot leven komt.
- Veroorzaak opzettelijk enkele fouten of hoog CPU-gebruik.
- Controleer of je waarschuwingen zoals verwacht worden geactiveerd.
Als alles goed gaat, zou je dashboard moeten oplichten als een kerstboom en zou je gebombardeerd moeten worden met waarschuwingen (hopelijk maar één keer).
Afronden: Quarkus Monitoren als een Pro
Gefeliciteerd! Je hebt zojuist je Quarkus-monitoring naar een hoger niveau getild. Met Prometheus die statistieken verzamelt en Grafana die ze visualiseert, ben je nu uitgerust om:
- Prestatieknelpunten sneller te ontdekken dan je "reactief" kunt zeggen
- Je ops-team te imponeren met je proactieve monitoringvaardigheden
- Beter te slapen 's nachts, wetende dat je gewaarschuwd wordt als er iets misgaat
Onthoud, goede monitoring is een iteratief proces. Blijf je dashboards en waarschuwingen verfijnen naarmate je meer leert over het gedrag van je applicatie in productie.
Pro Tip: Vergeet niet je Grafana-dashboards te versiebeheer. Je kunt ze exporteren als JSON en opslaan naast je applicatiecode.
Ga nu en monitor! Je Quarkus-applicaties zullen je dankbaar zijn, en je toekomstige zelf ook wanneer je je weekenden niet doorbrengt met het debuggen van mysterieuze productieproblemen.
Heb je coole Quarkus-monitoringtips of oorlogsverhalen? Laat ze achter in de reacties hieronder. Gelukkig monitoren, en moge je responstijden altijd laag zijn en je uptime hoog!