Managed MQTT Cloud

MQTT Broker Monitoring: die entscheidenden Metriken und wie Sie sie überwachen

Erfahren Sie, welche MQTT-Broker-Metriken Probleme wirklich vorhersagen, wie Sie ohne Alarmrauschen alarmieren, wie Sie eine Ende-zu-Ende-Latenzprobe bauen und Ihren Broker im ConnectMQ-Portal überwachen.

Illustration eines MQTT Broker Monitoring Dashboards mit Verbindungszahlen, Nachrichtenraten und Latenzdiagrammen neben einem Broker
Probieren Sie es auf Ihrem eigenen MQTT-Broker ausHolen Sie sich im Free-Tarif einen privaten, verwalteten MQTT-Broker und starten Sie mit fertigen Codebeispielen.
Kostenlos testen Codebeispiele Keine Kreditkarte erforderlich

MQTT Broker Monitoring sagt Ihnen, ob Nachrichten fließen, bevor Ihre Kunden Ihnen sagen, dass sie es nicht tun. Dieser Leitfaden behandelt die Metriken, auf die es wirklich ankommt – Verbindungen, Nachrichtenraten, verworfene Nachrichten, Latenz und Anzahl der Retained Messages –, zeigt, wie Sie daraus Alarme ohne Rauschen machen, und wie Sie eine einfache Ende-zu-Ende-Probe bauen. Außerdem sehen Sie, wie Sie einen Broker im ConnectMQ-Portal beobachten.

Warum Broker-Monitoring anders ist

Der Ausfall eines Webservers ist meist laut: Requests schlagen fehl und Fehlerraten schnellen hoch. MQTT-Fehler sind oft still. Ein Subscriber kann verbunden bleiben, aber nichts mehr empfangen, weil seine Subscription nach einem Reconnect ohne persistente Sitzung verloren ging. Geräte können verbunden sein, aber nichts publizieren, weil ein Sensortreiber hängt oder ein Edge-Gateway die Verbindung zur SPS verloren hat. Eine Warteschlange für einen Offline-Client kann unbemerkt wachsen, bis Limits erreicht sind.

Gutes Monitoring kombiniert daher drei Sichten:

  1. Broker-seitige Metriken: was der Broker sieht, etwa Verbindungen, Durchsatz und verworfene Nachrichten.
  2. Client-seitige Metriken: was Geräte und Anwendungen sehen, etwa fehlgeschlagene Verbindungen und Reconnect-Zähler.
  3. Ende-zu-Ende-Proben: ein synthetischer Client, der publiziert und empfängt und so misst, ob das System als Ganzes funktioniert.

Wenn Ihnen die einzelnen Bausteine neu sind, beginnen Sie damit, was ein MQTT-Broker tut.

Die entscheidenden Metriken für das MQTT Broker Monitoring

Metrik Was sie Ihnen sagt Typischer Alarm
Verbundene Clients Zustand der Flotte, Ausfälle, Connect-Stürme Plötzlicher Einbruch oder Anstieg gegenüber der Baseline
Verbindungsversuche und -fehler Probleme mit Zugangsdaten, Angriffe, Limits Fehlerrate über dem Normalwert
Empfangene Nachrichten pro Sekunde Publish-Aktivität Abfall nahe null bei einer bekanntermaßen aktiven Flotte
Gesendete Nachrichten pro Sekunde Zustellung an Subscriber Abweichung vom erwarteten Fan-out
Verworfene oder abgelehnte Nachrichten Volle Warteschlangen, Größen- oder Quotenlimits Jede anhaltende Rate ungleich null
Inflight- und wartende Nachrichten Langsame oder Offline-Konsumenten Stetiges Wachstum
Ende-zu-Ende-Latenz Für Nutzer sichtbare Verzögerung Mehrere Minuten über Ihrem Zielwert
Anzahl der Retained Messages Topic-Hygiene, Speicherwachstum Unerwartetes Wachstum
Anzahl der Subscriptions Lecks im Client-Code Stetiges Wachstum ohne neue Clients
Ressourcenverbrauch (selbst gehostet) CPU, Arbeitsspeicher, File Descriptors Annäherung an Limits

Verbindungen

Die Zahl der verbundenen Clients ist der Herzschlag Ihrer Flotte. Erfassen Sie sie als Zeitreihe und lernen Sie ihren Tagesverlauf kennen. Ein steiler Absturz bedeutet einen Ausfall, ein Netzwerkproblem oder ein abgelaufenes Zertifikat. Ein Sägezahnmuster aus Einbrüchen und Erholungen bedeutet meist, dass Clients wiederholt getrennt werden, oft durch doppelte Client IDs oder einen zu kurzen Keepalive in instabilen Netzen.

Nachrichtenraten

Empfangs- und Senderaten zeigen, ob Daten fließen. Bei einer Flotte, die jede Minute meldet, sollte die Empfangsrate grob vorhersehbar sein. In der Fertigung folgt sie oft dem Schichtmodell: Eine Linie, die nachts stillsteht, darf leiser sein, eine laufende Schicht ohne Maschinendaten dagegen nicht. Vergleichen Sie gesendete mit empfangenen Nachrichten: Das Verhältnis spiegelt den Fan-out wider, eine plötzliche Änderung bedeutet also, dass Subscriber verschwunden oder hinzugekommen sind.

Verworfene und abgelehnte Nachrichten

Broker verwerfen oder lehnen Nachrichten aus konkreten Gründen ab: Payload zu groß, Quote überschritten, Warteschlange für einen langsamen Konsumenten voll oder QoS-0-Nachrichten an einen Client, der nicht hinterherkommt. In MQTT 5 sind viele davon für den Client als Reason Codes sichtbar, etwa 0x97 (Quota exceeded). Protokollieren Sie Reason Codes auf der Client-Seite; sie sind oft die schnellste verfügbare Diagnose.

Latenz

Latenz ist das, was Nutzer spüren. Messen Sie sie Ende zu Ende: Versehen Sie eine Nachricht beim Publisher mit einem Zeitstempel und vergleichen Sie beim Eintreffen am Subscriber. Erfassen Sie Perzentile, nicht nur Durchschnittswerte, denn ein gesunder Median kann einen langen Ausläufer verbergen. Auch die Region spielt eine Rolle; siehe MQTT-Broker-Latenz nach Region.

Retained Messages und Subscriptions

Retained Messages und Subscriptions sollten Ihrem Topic-Design folgen. In einem Unified Namespace (UNS) nach ISA-95 ist das besonders gut prüfbar: Jede Linie und jede Zelle hat einen festen Platz im Topic-Baum, etwa acme/werk-stuttgart/montage/linie-1/zelle-3/status, sodass Sie erwartete und tatsächlich vorhandene Topics vergleichen können. Unbegrenztes Wachstum deutet meist auf einen Bug hin, etwa dynamische Topic-Namen mit Zeitstempeln oder Clients, die bei jedem Reconnect erneut abonnieren.

Client-seitige Metriken nicht vergessen

Der Broker sieht nur, was bei ihm ankommt. Geräte und Backend-Services sollten ihren eigenen Zustand melden: wie viele Verbindungsversuche fehlgeschlagen sind und warum, wie oft sie sich neu verbunden haben, wie viele Messwerte im Offline-Puffer liegen und welche Reason Codes bei CONNACK, PUBACK und DISCONNECT zurückkamen. Publizieren Sie alle paar Minuten eine kompakte Statusmeldung auf einem Status-Topic, als Retained Message, damit Dashboards immer den neuesten Wert zeigen. Wenn ein Standort verstummt, erklären diese letzten Meldungen oft die Ursache, bevor jemand vor Ort ist.

Selbst gehostete Broker: woher die Metriken kommen

Wenn Sie Ihren eigenen Broker betreiben, stammen die Metriken vom Broker selbst. Mosquitto beispielsweise veröffentlicht Statistiken auf $SYS/-Topics wie $SYS/broker/clients/connected und $SYS/broker/messages/received. Geclusterte Broker stellen meist HTTP-APIs oder Metrik-Endpunkte zum Scrapen bereit. Diese binden Sie dann in Ihr Monitoring-System ein, bauen Dashboards, definieren Alarme und ergänzen Host-Metriken wie CPU, Arbeitsspeicher und offene File Descriptors. Die Mosquitto-Dokumentation listet die verfügbaren $SYS-Topics auf.

Eine Ende-zu-Ende-Latenzprobe bauen

Unabhängig vom eingesetzten Broker ist eine synthetische Probe die wertvollste einzelne Prüfung. Sie verbindet sich als normaler Client, publiziert eine Nachricht mit Zeitstempel auf ein privates Topic, empfängt sie zurück und erfasst die Round-Trip-Zeit. Diese Python-Probe nutzt paho-mqtt 2.x und läuft in der vorliegenden Form gegen den Öffentlichen MQTT-Broker, der nur für Tests und Prototypen gedacht ist; für die Produktion wechseln Sie auf die Zugangsdaten Ihres privaten Brokers und Port 8883.

import json
import statistics
import time
import uuid
import paho.mqtt.client as mqtt

HOST, PORT = "broker.connectmq.com", 1883
PROBE_ID = uuid.uuid4().hex[:8]
TOPIC = f"connectmq/demo/{PROBE_ID}/probe"
INTERVAL = 5          # Sekunden zwischen den Proben
ALERT_MS = 500        # Alarmschwelle für die Round-Trip-Zeit

latencies = []

def on_connect(client, userdata, flags, reason_code, properties):
    print("Probe connected:", reason_code)
    client.subscribe(TOPIC, qos=1)

def on_disconnect(client, userdata, flags, reason_code, properties):
    print("Probe disconnected:", reason_code)

def on_message(client, userdata, msg):
    sent = json.loads(msg.payload)["t"]
    rtt_ms = (time.time() - sent) * 1000
    latencies.append(rtt_ms)
    flag = "  ALERT" if rtt_ms > ALERT_MS else ""
    print(f"rtt={rtt_ms:.0f} ms{flag}")
    if len(latencies) % 12 == 0:
        recent = latencies[-12:]
        print(f"last 12: median={statistics.median(recent):.0f} ms max={max(recent):.0f} ms")

client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id=f"probe-{PROBE_ID}")
# Produktion: client.username_pw_set("YOUR_USERNAME", "YOUR_PASSWORD"); client.tls_set(); PORT = 8883
client.on_connect = on_connect
client.on_disconnect = on_disconnect
client.on_message = on_message
client.reconnect_delay_set(min_delay=1, max_delay=60)
client.connect(HOST, PORT, keepalive=30)
client.loop_start()

try:
    while True:
        if client.is_connected():
            client.publish(TOPIC, json.dumps({"t": time.time()}), qos=1)
        else:
            print("ALERT: probe not connected")
        time.sleep(INTERVAL)
except KeyboardInterrupt:
    client.loop_stop()
    client.disconnect()

Führen Sie die Probe aus den Netzen aus, die Ihre Geräte nutzen, nicht nur aus Ihrem Rechenzentrum, und leiten Sie ihre Alarme an Ihr Paging- oder Chat-Tool weiter.

Aus Metriken nützliche Alarme machen

Alarmmüdigkeit tötet jedes Monitoring. Einige Faustregeln:

  1. Auf Symptome alarmieren, nicht auf Ursachen. „Probe seit drei Minuten fehlgeschlagen" ist umsetzbar; „CPU bei 70 %" meist nicht.
  2. Baselines nutzen. Vergleichen Sie Verbindungszahlen mit derselben Stunde der Vorwoche statt mit einem festen Wert.
  3. Dauer voraussetzen. Lösen Sie erst aus, wenn ein Zustand mehrere Minuten anhält, um kurze Aussetzer abzufangen.
  4. Warnung und Paging trennen. Langsames Wachstum wartender Nachrichten ist ein Ticket; null Nachrichten von einer aktiven Flotte ist ein Page.
  5. Die Wächter überwachen. Alarmieren Sie, wenn die Probe selbst nicht mehr meldet.

Monitoring mit ConnectMQ

Bei einem verwalteten MQTT-Broker überwacht der Anbieter die Infrastruktur, Sie brauchen aber trotzdem Einblick in Ihren eigenen Verkehr. ConnectMQ bietet Ihnen im Portal mehrere Werkzeuge:

  • Dashboard mit einem Überblick über Ihren Broker.
  • Live-Topic-Explorer, um eintreffende Nachrichten in Echtzeit zu verfolgen und verstummte Topics zu erkennen.
  • MQTT-Client im Browser, um für schnelle Prüfungen zu publizieren und zu abonnieren, ohne etwas zu installieren.
  • Geräteansicht, die Anlagen nach ISA-95-Ebenen ordnet, nützlich für industrielle Flotten. Spiegeln diese Ebenen die Topic-Struktur Ihres UNS wider (Enterprise, Site, Area, Line, Cell), sehen Sie sofort, an welcher Linie oder in welcher Zelle Daten fehlen; mehr zum Konzept unter Sparkplug B und Unified Namespace.
  • Schwellenwert-Alarmregeln und Alarmprotokoll, damit Werte außerhalb des zulässigen Bereichs Alarme auslösen, die Sie später nachvollziehen können.

Für den Verbindungsstatus einzelner Geräte veröffentlicht der Broker den Verbindungszustand auf $SYS/broker/connection/{clientId}/state. Ein Backend-Service kann das State-Topic für wichtige Clients wie Gateways abonnieren und reagieren, wenn einer offline geht. Zusammen mit Last-Will-Nachrichten Ihrer Geräte und der obigen Probe deckt das sowohl den Zustand auf Broker- als auch auf Anwendungsebene ab. Außerhalb des Portals sind die ConnectMQ-Erweiterung für VS Code und der Desktop-MQTT-Explorer praktisch, um Verkehr während der Entwicklung zu untersuchen.

Starten Sie mit ConnectMQ

Legen Sie unter app.connectmq.com einen kostenlosen Serverless-Broker an, ganz ohne Kreditkarte, und verfolgen Sie Ihre ersten Nachrichten innerhalb weniger Minuten im Live-Topic-Explorer. Kombinieren Sie ihn anschließend mit der obigen Probe und der MQTT-Produktions-Checkliste, bevor Sie live gehen. Der Leitfaden zum Cloud-MQTT-Broker deckt den Rest des Hosting-Themas ab.

Häufig gestellte Fragen

Was ist die wichtigste Metrik eines MQTT-Brokers?

Die Zahl verbundener Clients in Kombination mit einer Ende-zu-Ende-Probe. Zusammen zeigen sie, ob Geräte online sind und ob Nachrichten tatsächlich fließen.

Wie messe ich die MQTT-Latenz?

Publizieren Sie eine Nachricht mit Zeitstempel und berechnen Sie die Differenz, wenn ein Subscriber sie empfängt. Verfolgen Sie Perzentile über die Zeit und führen Sie Proben aus den Netzen Ihrer Geräte aus.

Warum fallen meine Verbindungszahlen in einem Sägezahnmuster ab und erholen sich wieder?

Häufige Ursachen sind doppelte Client IDs, die sich gegenseitig hinauswerfen, für das Netz zu kurze Keepalive-Intervalle oder ein geräteseitiger Watchdog, der Clients neu startet.

Brauche ich bei einem verwalteten MQTT-Broker trotzdem Monitoring?

Ja. Der Anbieter überwacht seine Infrastruktur, doch nur Sie wissen, was Ihre Geräte senden sollten. Überwachen Sie daher Ihren eigenen Verkehr und ergänzen Sie eine synthetische Probe.

Verwandte Artikel

BYOC-MQTT-Broker: Bring Your Own Cloud einfach erklärt

Ein BYOC-MQTT-Broker läuft in Ihrem Cloud-Konto, wird aber von einem Anbieter betrieben. Erfahren Sie, wie das Modell funktioniert, wie die Verantwortung aufgeteilt ist und wie Sie Ihr Konto darauf vorbereiten.

8 Min. Lesezeit

Google Cloud IoT Core Alternative: Optionen und Migration nach der Abschaltung

Google hat Cloud IoT Core im August 2023 eingestellt. Dieser Leitfaden vergleicht die realistischen Alternativen, überträgt IoT-Core-Konzepte auf reines MQTT und zeigt, wie Sie Geräte zu einem verwalteten MQTT-Broker umziehen, während die Daten weiter in Google Cloud fließen.

8 Min. Lesezeit

MQTT-Nachrichten pro Sekunde: Durchsatz abschätzen und messen

Die Durchsatzplanung für MQTT läuft auf wenige Formeln und eine ehrliche Messung hinaus. Erfahren Sie, wie Sie eingehende und ausgehende Nachrichten pro Sekunde abschätzen, Spitzen berücksichtigen und das Ergebnis einem Broker-Plan zuordnen.

7 Min. Lesezeit

Alle Artikel →

Ihr privater MQTT-Broker ist nur wenige Klicks entfernt

Konto anlegen, Broker-Zugangsdaten erhalten und das erste Gerät verbinden — ohne Server, die installiert, gepatcht oder skaliert werden müssen.