Monitoring
Der Standardweg zur Prüfung des Betriebszustands der Edge.
REST-Endpunkte
| Endpunkt | Authentifizierung | Zweck |
|---|---|---|
GET /api/v1/system/health | nicht erforderlich | 8 Komponenten (cassandra/redis/mqtt/node_red/opc_ua/edge_core/tse/grafana) TCP-Probe + Gesamtstatus. HTTP 503 if DEGRADED — empfohlen für OTA / k8s-Probe |
GET /api/v1/system/ready | nicht erforderlich | monitor + Bereitschaftsstatus des V5 api_client |
GET /api/v1/system/version | nicht erforderlich | Metadata.VERSION + BUILD_DATE + image_tag + container_mode — empfohlen für Fleet-Inventory |
GET /api/v1/edge | erforderlich | Edge-Kennung / Version / Betriebszeit / kumulierte Sendeanzahl |
GET /api/v1/monitoring | erforderlich | Systemmetriken (CPU / Speicher / Festplatte / Netzwerk / JVM) |
GET /api/v1/opc | erforderlich | Verbindungsstatus / Scan-Status / kumulierte Point-Anzahl je OPC |
GET /api/v1/opc/{opcId}/tag | erforderlich | Letzter Wert / Zeitstempel / Read-Status je Tag |
GET /api/v1/transfer | erforderlich | Health der Übertragungskanäle (API/MQTT/Sparkplug, Queue-Tiefe) |
Edge-Health in einer Zeile prüfen
curl -s http://<edge-host>/api/v1/edge | jq '{started, uptime_ms, sended_count, version}'
{
"started": true,
"uptime_ms": 124500,
"sended_count": 8063,
"version": "2025"
}
Wenn sended_count im Zeitverlauf ansteigt, arbeitet die Pipeline Queue → Übertragung.
Status je OPC
curl -s http://<edge-host>/api/v1/opc \
| jq '.data.data[] | {opc_id, opc_type, connection_status, scan_status, tag_count, point_count}'
| Feld | Mögliche Werte / Bedeutung |
|---|---|
connection_status | CONNECTED / DISCONNECTED / ERROR |
scan_status | START / STOP (Scheduler-Status) |
tag_count | Anzahl registrierter Tags |
point_count | Kumulierte erfasste Points (Reset beim Neustart) |
Nur auffällige OPC schnell anzeigen:
curl -s http://<edge-host>/api/v1/opc \
| jq '.data.data[] | select(.connection_status != "CONNECTED")'
Letzter Wert je Tag
curl -s http://<edge-host>/api/v1/tag/<TAG_ID>/value | jq
{
"result": "OK",
"data": {
"tag_id": "TAG_UA_0004",
"value": "28.9688",
"value_time": "2026-05-06 20:59:39.000",
"value_read_status": "SUCCESS",
"value_read_error_message": ""
}
}
Wenn value_read_status den Wert ERROR hat, die Ursache in value_read_error_message ermitteln.
Systemmetriken
curl -s http://<edge-host>/api/v1/monitoring | jq '.data | {cpu_usage, memory_usage, disk_usage, thread_count}'
Alle Felder von MonitorBean werden unverändert ausgegeben (abhängig vom Feld-Set zum Zeitpunkt des App-Builds).
Sparkplug-Verifizierung
Bei sparkplug.enable=true lässt sich dies durch Abonnieren von spBv1.0/# mit einem externen Client wie paho-mqtt prüfen.
# 간단한 체크 스니펫 (참고용)
import os
import paho.mqtt.client as mqtt
def on_message(c, u, m):
print(m.topic, len(m.payload))
c = mqtt.Client()
c.username_pw_set(os.environ["MQTT_USER"], os.environ["MQTT_PASSWORD"])
c.on_message = on_message
c.connect("<edge-host>", 1883)
c.subscribe("spBv1.0/#")
c.loop_forever()
Erwartungswerte:
| Topic | Häufigkeit |
|---|---|
spBv1.0/<group>/NBIRTH/<edge> | 1× beim Start |
spBv1.0/<group>/DBIRTH/<edge>/<opc> | beim Start entsprechend der Anzahl der OPC |
spBv1.0/<group>/DDATA/<edge>/<opc> | 1 Nachricht je Point |
spBv1.0/<group>/NDEATH/<edge> | 1× beim Beenden (oder automatisch per Will) |
Log-Schlüsselwörter
Grep-Muster auf Basis von catalina.out:
| Muster | Bedeutung |
|---|---|
Cassandra connected | DB OK |
MQTT connected | MQTT broker OK |
[SparkPlug] CONNECT / NBIRTH | SPB-Lebenszyklus |
LS connect success / LS connect failed | Verbindung des LS-Treibers |
OPCUA connect | Verbindung des OPCUA-Treibers |
PLC_READ_TIMEOUT_EXCEPTION | Modbus-Timeout |
restartCollector | Neustart des Collectors nach Hinzufügen/Ändern/Löschen von OPC |
WARN | Grenzwert überschritten (z. B. connection_warn_ms) |
Übertragungsstatistik — /api/v1/transfer
Dieser Endpunkt wird bereits bereitgestellt. Beispielantwort:
{
"queue_depth": 1234,
"queue_capacity": 10000,
"transfers": [
{ "type": "API", "status": "OK", "sent": 12345, "errors": 0 },
{ "type": "MQTT", "status": "OK", "connected": true, "topic": "/edge/point" },
{ "type": "Sparkplug", "status": "OK", "connected": true, "bdSeq": 3, "seq": 142, "devices": 10 }
]
}
Bei Erweiterungen werden die Anwendungsbeispiele auf dieser Seite aktualisiert.