Instrumentierung und Monitoring mit MQTT, Microservices und Kubernetes


Details
Tenkeyoho ist ein neues Lernprojekt rund um Kubernetes und Microservices. Wir wollten ein Projekt starten, das einen möglichst einfachen Einstieg in die k8s-Thematik bietet und zugleich etwas zum Auspacken, was zum Spielen und was zum Mitcoden ist. Herausgekommen ist die Idee, eine Wetterstation nebst Datenerfassung zu bauen.
Dafür haben wir ein MQTT-Setup gebaut, das derzeit aus einer kleinen Wetterstation in München besteht, die über Tinkerforge Bricklets an unseren MQTT-Broker im Kubernetes-Cluster Daten liefert. Für die Implementierung nutzen wir derzeit Rust, Golang und TypeScript. Wir sind jedoch polyglott, d. h. Ihr könnt alle Sprachen/Frameworks verwenden, auf die Ihr Lust habt.
Am Mayflower Open Mayday konnten wir beispielsweise bereits einen Teilnehmer dafür begeistern, mit Perl einen neuen kleinen Service für die Wetterstation zu bauen.
Als Microservices haben wir bereits einen MQTT Publisher und Subscriber als PoC umgesetzt, die die Daten der Wetterstation time-based in eine InfluxDB persistieren und auf einem Grafana-Dashboard visualisieren.
In unserem Meetup wollen wir Euch das Thema “Instrumentierung” vorstellen. Dafür wollen wir unsere bestehenden Golang- und TypeScript-Services wie folgt anreichern:
- Metriken für z. B. die Anzahl der Requests und Latenz (je nach Sensor-Typ) sollen in den Services (TypeScript und Golang) gesammelt und exportiert werden.
- Metriken werden in kurzen Abständen von Prometheus im k8s-Cluster eingesammelt und gespeichert.
- Unser Grafana im Cluster zeigt ein Dashboard mit den gesammelten Metriken.
Wir legen unseren Fokus im Meetup auf die Implementierung in zwei Programmiersprachen (s.o.), um Konzepte und Basics zur Instrumentierung von Microservices zu zeigen.
Auf unseren Kubernetes-Cluster gehen wir dabei nur kurz ein, da wir ihn schon in einem vorherigen Meetup vorgestellt haben und uns hier primär auf die Funktionen unserer Services fokussieren möchten. Auf Wunsch stellen wir das Cluster-Setup (Terraform, Ansible, Hetzner Cloud) in einem weiteren Meetup noch einmal vor.
Anhand eines konkreten Use Case zeigen wir, wie man Microservices instrumentiert; es geht dabei um die klassischen Themen und Techniken rund um Microservices.
Nach dem Meetup werdet Ihr wissen, was “Instrumentierung” bedeutet und wie Ihr dieses Wissen in Euren Projekten mit Microservices einsetzen könnt.
Kleiner Servicehinweis: Wenn Ihr mitbauen wollt, installiert bitte vorab den Mosquitto Client, zu finden unter https://mosquitto.org/download/ – zum Mitprogrammieren benötigt Ihr außerdem eine IDE für TypeScript oder Golang und lauffähige Modules-Installer.
Wir freuen uns auf Euch!
tl;dr :
Vorhandenes Kubernetes-Setup mit MQTT, mit dem wir zeigen, wie wir von aufgezeichneten Sensor-Rohdaten Instrumentierung- und Monitoring-Anzeigen in Grafana und InfluxDB über einen Mosquitto Broker propagieren.
P.S.: Wir gehen davon aus, dass Ihr mit Eurer Anmeldung mit unserem Code of Conduct einverstanden seid. Dieser gilt sowohl für unser jährliches Barcamp, als auch unsere Meetups und Specials: https://developercamp.io/verhaltenskodex

Instrumentierung und Monitoring mit MQTT, Microservices und Kubernetes