Überwachung ist nicht nur etwas für hübsche Grafiken (obwohl sie ziemlich cool sind). Es ist Ihr Frühwarnsystem, Ihre Kristallkugel und Ihre Leistung in einem. Da Quarkus sowohl für die JVM als auch für die native Kompilierung optimiert ist, wird die Sichtbarkeit seiner Leistungsmetriken umso wichtiger.
"Wenn man es nicht messen kann, kann man es nicht verbessern." - Peter Drucker (wahrscheinlich beim Debuggen eines verteilten Systems)
Prometheus und Grafana: Das dynamische Duo der Überwachung
Hier kommen Prometheus und Grafana ins Spiel - das Batman und Robin der Überwachungswelt (leider ohne Umhänge).
- Prometheus: Die Zeitreihendatenbank, die Ihre Metriken sammelt und speichert. Es ist wie ein Staubsauger für Daten, der in regelmäßigen Abständen Zahlen aus Ihrer Quarkus-App aufsaugt.
- Grafana: Das hübsche Gesicht der Operation. Es nimmt die Daten von Prometheus und verwandelt sie in Dashboards, die so schön sind, dass Sie sie einrahmen und an die Wand hängen möchten.
Zusammen bilden sie eine Überwachungslösung, die stärker ist als eine Lokomotive und in der Lage ist, hohe Stapel mit einem einzigen Sprung zu überwinden. (Okay, ich höre jetzt mit den Superhelden-Vergleichen auf.)
Einrichten von Quarkus für den Metrikexport
Zuallererst, lassen Sie Quarkus über seine internen Abläufe plaudern. Wir müssen die MicroProfile Metrics-Erweiterung zu unserem Quarkus-Projekt hinzufügen.
Fügen Sie dies zu Ihrer pom.xml
hinzu:
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-metrics</artifactId>
</dependency>
Oder, wenn Sie ein Gradle-Fan sind:
implementation 'io.quarkus:quarkus-smallrye-metrics'
Damit wird Quarkus automatisch Metriken am /q/metrics
Endpunkt bereitstellen. Es ist, als ob Sie Ihrer App ein Megafon geben, um ihre Statistiken in die Welt hinauszuschreien (oder zumindest zu Prometheus).
Prometheus: Ihr Metrik-Staubsauger
Jetzt, da Quarkus gesprächig über seine Metriken ist, richten wir Prometheus ein, um zuzuhören. Hier ist eine kurze Anleitung, um Prometheus zum Laufen zu bringen:
- Laden Sie Prometheus von der offiziellen Website herunter.
- Erstellen Sie eine
prometheus.yml
Konfigurationsdatei:
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'quarkus'
metrics_path: '/q/metrics'
static_configs:
- targets: ['localhost:8080']
Dies teilt Prometheus mit, alle 15 Sekunden Metriken von Ihrer Quarkus-App abzurufen. Passen Sie localhost:8080
an, wenn Ihre App auf einem anderen Host oder Port läuft.
- Starten Sie Prometheus:
./prometheus --config.file=prometheus.yml
Voilà! Prometheus sammelt jetzt Metriken schneller als ein Eichhörnchen Nüsse für den Winter hortet.
Grafana: Machen Sie Ihre Metriken Instagram-würdig
Mit Prometheus, das Daten sammelt, ist es Zeit, sie hübsch zu machen. Hier kommt Grafana ins Spiel:
- Laden Sie Grafana von der offiziellen Seite herunter und installieren Sie es.
- Starten Sie Grafana und navigieren Sie zu
http://localhost:3000
(Standardanmeldedaten sind admin/admin). - Fügen Sie Prometheus als Datenquelle hinzu:
- Gehen Sie zu Konfiguration > Datenquellen
- Klicken Sie auf "Datenquelle hinzufügen" und wählen Sie Prometheus
- Setzen Sie die URL auf
http://localhost:9090
(Standardport von Prometheus) - Klicken Sie auf "Speichern & Testen"
Jetzt sind Sie bereit, Dashboards zu erstellen, die Ihre Kollegen vor Neid erblassen lassen.
Erstellen von Quarkus-Dashboards in Grafana
Es ist Zeit, Ihre kreativen Muskeln zu spielen und ein Dashboard zu erstellen. Hier ist ein Starterpaket von Panels, die Sie möglicherweise einbeziehen möchten:
- CPU-Auslastung
- Speichernutzung
- HTTP-Anforderungsrate
- Antwortzeit-Perzentile
- Fehlerrate
Hier ist eine Beispielabfrage für die HTTP-Anforderungsrate:
rate(http_server_requests_seconds_count{application="your-app-name"}[1m])
Profi-Tipp: Beginnen Sie mit einigen wichtigen Metriken und iterieren Sie. Ihr Dashboard sollte sich mit Ihrer Anwendung und Ihren Überwachungsanforderungen weiterentwickeln.
Wichtige Quarkus-Metriken, die Sie im Auge behalten sollten
Während Quarkus eine Vielzahl von Metriken bereitstellt, sind hier einige, die Sie unbedingt im Auge behalten sollten:
- JVM-Metriken: Speichernutzung, Garbage-Collection-Statistiken
- HTTP-Metriken: Anforderungsanzahl, Antwortzeiten, Fehlerraten
- Datenbankverbindungspool: Aktive Verbindungen, Wartezeit
- Benutzerdefinierte Geschäftsmetriken: Spezifisch für Ihre Anwendungslogik
Denken Sie daran, das Ziel ist Einsicht, nicht Informationsüberflutung. Wählen Sie Metriken, die eine Geschichte über die Gesundheit und Leistung Ihrer Anwendung erzählen.
Alarmierung: Weil Sie nicht 24/7 auf Dashboards starren können
Es sei denn, Sie haben die Kunst des Nicht-Blinkens gemeistert (in diesem Fall müssen wir reden), möchten Sie Alarme einrichten, wenn etwas schiefgeht. Grafana macht dies einfach:
- Klicken Sie in Ihrem Dashboard auf einen Panel-Titel und wählen Sie "Bearbeiten".
- Gehen Sie zum Tab "Alarm".
- Definieren Sie Bedingungen, wann der Alarm ausgelöst werden soll.
- Richten Sie Benachrichtigungskanäle ein (E-Mail, Slack, PagerDuty usw.).
Zum Beispiel möchten Sie möglicherweise benachrichtigt werden, wenn:
- Die Fehlerrate 1% für 5 Minuten überschreitet
- Die P95-Antwortzeit über 500ms für 10 Minuten liegt
- Die CPU-Auslastung über 80% für 15 Minuten liegt
Testen Ihrer Überwachungsumgebung
Bevor Sie sich auf die Schulter klopfen und den Tag beenden, lassen Sie uns sicherstellen, dass dies tatsächlich funktioniert:
- Erzeugen Sie etwas Last auf Ihrer Quarkus-App (Apache JMeter oder ein einfaches Schleifen-Curl-Skript können den Trick machen).
- Beobachten Sie, wie Ihr Grafana-Dashboard zum Leben erwacht.
- Lösen Sie absichtlich einige Fehler oder eine hohe CPU-Auslastung aus.
- Überprüfen Sie, ob Ihre Alarme wie erwartet ausgelöst werden.
Wenn alles gut geht, sollte Ihr Dashboard wie ein Weihnachtsbaum leuchten und Sie sollten mit Alarmen bombardiert werden (hoffentlich nur dieses eine Mal).
Zusammenfassung: Quarkus wie ein Profi überwachen
Herzlichen Glückwunsch! Sie haben gerade Ihr Quarkus-Überwachungsspiel verbessert. Mit Prometheus, das Metriken sammelt, und Grafana, das sie visualisiert, sind Sie jetzt in der Lage:
- Leistungsengpässe schneller zu erkennen, als Sie "reaktiv" sagen können
- Ihr Ops-Team mit Ihren proaktiven Überwachungsfähigkeiten zu beeindrucken
- Besser zu schlafen, da Sie benachrichtigt werden, wenn etwas schiefgeht
Denken Sie daran, gute Überwachung ist ein iterativer Prozess. Verfeinern Sie Ihre Dashboards und Alarme weiter, während Sie mehr über das Verhalten Ihrer Anwendung in der Produktion lernen.
Profi-Tipp: Vergessen Sie nicht, Ihre Grafana-Dashboards zu versionieren. Sie können sie als JSON exportieren und zusammen mit Ihrem Anwendungscode speichern.
Nun gehen Sie und überwachen Sie! Ihre Quarkus-Anwendungen werden es Ihnen danken, und ebenso Ihr zukünftiges Ich, wenn Sie Ihre Wochenenden nicht mit dem Debuggen mysteriöser Produktionsprobleme verbringen.
Haben Sie coole Quarkus-Überwachungstipps oder Kriegsgeschichten? Hinterlassen Sie sie in den Kommentaren unten. Viel Spaß beim Überwachen, und mögen Ihre Antwortzeiten immer niedrig und Ihre Betriebszeiten hoch sein!