MQTT-Telemetrie über Telegraf in NetCrunch
In diesem Thema wird erläutert, wie über MQTT veröffentlichte Systemmetriken erfasst, mit Telegraf verarbeitet und mithilfe von JSON-basierter Telemetrie an einen NetCrunch Telemetry Node-Endpunkt weitergeleitet werden.
Übersicht
MQTT ist ein leichtgewichtiges Publish-/Subscribe-Nachrichtenprotokoll, das häufig in IoT- und verteilten Systemen verwendet wird. Telegraf kann MQTT-Themen abonnieren, eingehende JSON-Nachrichten analysieren und sie über das HTTP output plugin an einen NetCrunch Telemetry Node weiterleiten.
Unterstützung von MQTT-Telemetrie durch NetCrunch
NetCrunch empfängt MQTT-basierte Telemetriedaten über Telemetry Nodes. Diese akzeptieren Daten im JSON-Format und ordnen eingehende Metriken oder Statuswerte zu. Für Telemetry Nodes ist keine Netzwerkerkennung erforderlich, und sie können Daten aus verteilten oder isolierten Systemen empfangen.
Der Endpunkt, sein URL-Aufbau und die Art seiner Autorisierung werden einmalig unter Monitoring with Telegraf beschrieben. Im Folgenden wird vorausgesetzt, dass bereits ein Telemetry Node vorhanden ist – siehe Telemetrieknoten.
Datenfluss
- Metrikgenerierung - Systeme generieren Metriken mithilfe von Skripten, Anwendungen oder Monitoring-Agents.
- MQTT-Veröffentlichung - Metriken werden als JSON-Nachrichten in MQTT-Broker-Themen veröffentlicht.
- Telegraf-Abonnement - Telegraf abonniert festgelegte MQTT-Themen.
- Datenweiterleitung - Telegraf sendet empfangene Nachrichten an den Endpunkt des NetCrunch Telemetry Node.
- Verarbeitung durch NetCrunch - Eingehende Daten werden als Counter oder Alarmstatus gespeichert.
Telegraf-Konfiguration
Die primäre Konfigurationsdatei befindet sich in der Regel unter:
- Linux:
/etc/telegraf/telegraf.conf - Windows:
C:\Program Files\Telegraf\telegraf.conf
Grundlegende Konfiguration
MQTT-Nachrichten müssen gültiges JSON enthalten, damit Telegraf sie korrekt analysieren kann.
[agent] interval = "30s" flush_interval = "30s" debug = false quiet = true[[inputs.mqtt_consumer]] servers = ["tcp://localhost:1883"] topics = [ "linux/kernel/errors", "linux/fd/usage", "linux/systemd/failed", "linux/packages/health", "linux/security/entropy" ] data_format = "json" json_name_key = "measurement_name" tag_keys = ["hostname"]
[[outputs.http]] url = "https://gw.netcrunch.io/tm/v1/SRV-001@sensor01@node100/update" method = "POST" data_format = "json" content_encoding = "identity" [outputs.http.headers] Content-Type = "application/json"
Konfigurationsparameter
Agent-Abschnitt
interval- Gibt an, wie häufig Daten erfasst werdenflush_interval- Gibt an, wie häufig Daten weitergeleitet werdendebug- Aktiviert ausführliche Debugging-Informationenquiet- Unterdrückt Ausgaben, die keine Fehler betreffen
MQTT Consumer Input
servers- Adresse des MQTT-Brokerstopics- Abonnierte MQTT-Themendata_format- Erwartetes Format (json)json_name_key- JSON-Feld, das als Metrikname verwendet wirdtag_keys- Als Tags extrahierte Felder
HTTP Output
url- Endpunkt des NetCrunch Telemetry Nodemethod- Muss POST seindata_format- Format der JSON-Nutzdatenheaders- HTTP-Header
MQTT-Nachrichtenformat
In MQTT-Themen veröffentlichte Nachrichten müssen JSON-Objekte sein, die relevante Metadaten und Metrikfelder enthalten.
Erforderliche Felder
timestamp- Zeitstempel im ISO-8601-Formathostname- SystemkennungMetrikfelder- Numerische oder Zeichenfolgenwerte, die Counter oder Statuswerte darstellen
Beispielnachrichten
Kernel-Fehler
{ "timestamp": "2025-10-29T15:09:08+01:00", "hostname": "server01.example.com", "kernel_errors_5min": 0 }
Dateideskriptor-Nutzung
{ "timestamp": "2025-10-29T15:05:12+01:00", "hostname": "server01.example.com", "total_fd_count": 1471 }
Paketstatus
{ "timestamp": "2025-10-29T15:07:54+01:00", "hostname": "server01.example.com", "upgradable_packages": 1, "broken_packages": 0 }
System-Entropiestufe
{ "timestamp": "2025-10-29T15:09:08+01:00", "hostname": "server01.example.com", "entropy_available": 256 }
Fehlgeschlagene Systemd-Einheiten
{ "timestamp": "2025-10-29T15:06:41+01:00", "hostname": "server01.example.com", "failed_units_count": 0 }
Anwendungsfälle
Überwachung von IoT-Geräten
Geräte veröffentlichen Telemetriedaten in einem MQTT-Broker. Telegraf verarbeitet die Nachrichten und sendet sie zur Visualisierung und Alarmierung an NetCrunch.
Metriken verteilter Systeme
Systeme in entfernten Netzwerken veröffentlichen Metriken in zentralisierten MQTT-Brokern. NetCrunch empfängt Telemetriedaten, ohne dass eine direkte Verbindung erforderlich ist.
Telemetrie benutzerdefinierter Anwendungen
Anwendungen veröffentlichen strukturierte Metriken in MQTT-Themen, sodass keine HTTP-Endpunkte implementiert werden müssen.
Edge Computing
Edge-Geräte veröffentlichen Telemetriedaten lokal in einem MQTT-Broker. Telegraf aggregiert die Daten und leitet sie an NetCrunch weiter.
Mandantenfähige Überwachung
Themenstrukturen und die Extraktion von Tags ermöglichen das Weiterleiten von Metriken an separate Telemetry Nodes auf Grundlage des Mandanten oder Subsystems.
Zusammenfassung
Die Verwendung von MQTT mit Telegraf und NetCrunch stellt eine skalierbare und flexible Telemetrie-Pipeline bereit. Publisher senden JSON-Metriken an einen MQTT-Broker, Telegraf abonniert relevante Themen, und die Telemetriedaten werden mithilfe von REST-Endpunkten an NetCrunch weitergeleitet. Dieses Modell unterstützt IoT, verteilte Architekturen und benutzerdefinierte Überwachungsszenarien, ohne SNMP oder WMI zu erfordern.
- Was ist ein Node in NetCrunch?
Dieses Thema erläutert die Definition eines Node in NetCrunch. Es erklärt, warum ein Node als Service-Endpunkt und nicht als physisches Gerät behandelt wird und wie diese Unterscheidung die Überwachungsgenauigkeit moderner Infrastrukturen verbessert.
- NetCrunch Monitoring Objects
Everything NetCrunch monitors is an object with a state - nodes, interfaces, services, sensors, alerts, and the statuses calculated from them. Knowing which object you are looking at tells you what you can alert on, put on a dashboard, and roll up into a service status.
- Monitoring External Sources
How NetCrunch monitors data originating outside built-in collectors using telemetry, scripts, files, and external APIs.
- NetCrunch Native Data Formats
Native payload formats used by NetCrunch to ingest external monitoring data as counters, statuses, and contextual data objects using JSON, XML, and CSV.
- Monitoring with Telegraf
Use Telegraf, the open-source metrics agent, to collect from systems NetCrunch does not poll directly and push the results into NetCrunch as ordinary counters and statuses.
- Überwachung des Linux Sysctl Filesystem über Telegraf in NetCrunch
Dieses Thema erläutert, wie Linux-Kernel-Dateisystemparameter mit Telegraf überwacht und erfasste Metriken an NetCrunch Telemetry Nodes gesendet werden. Das Linux Sysctl Filesystem Input-Plugin liest Werte aus dem Verzeichnis proc sys fs und leitet sie mithilfe des HTTP Output-Plugins an NetCrunch weiter.
- SQL Server-Überwachung über Telegraf in NetCrunch
Dieses Thema erklärt, wie Telegraf für die Erfassung von Microsoft SQL Server-Metriken und deren Weiterleitung an einen NetCrunch Telemetry Node-Endpunkt mithilfe JSON-basierter Telemetriedaten konfiguriert wird. Es behandelt die Einrichtung des SQL Server-Logins, Verbindungszeichenfolgen, die Telegraf-Eingabekonfiguration und unterstützte Metriktypen.
- Azure-Ressourcenüberwachung mit Telegraf in NetCrunch
Dieses Dokument beschreibt, wie Telegraf konfiguriert wird, um Metriken aus verschiedenen Azure-Ressourcen (z. B. Virtual Machines, Storage Accounts und Datenbanken) zu erfassen und über den Telemetry Node-Endpunkt an NetCrunch zu senden.