Zum Hauptinhalt springen
Version: 5.6

Metriken-Export

Der OPC Router erfasst kontinuierlich Laufzeit-Metriken und kann diese an externe Monitoring-Systeme wie Grafana, Prometheus oder InfluxDB exportieren. Eine Teilmenge der Metriken ist direkt im Service-Dashboard einsehbar.

Enterprise+ Add-on-Lizenz erforderlich

Der Export von Metriken per OTLP oder InfluxDB erfordert eine aktive Enterprise+-Lizenz. Weitere Informationen zur Lizenzzuordnung und zu anderen Enterprise+-Funktionen finden Sie unter Lizenzstufen. Einige systemweite Metriken (CPU, Arbeitsspeicher, Laufwerke) werden unabhängig davon intern aufgezeichnet und im Service-Dashboard angezeigt.

Konfiguration

Die Einstellungen finden Sie unter Extras → Einstellungen → Metriken-Export.

OTLP

EigenschaftBeschreibung
AktiviertAktiviert den OTLP-Export
EndpunktZieladresse des OTLP-Collectors, z. B. http://localhost:4317
ProtokollÜbertragungsprotokoll: gRPC (Standard) oder HTTP/Protobuf
HeaderOptionale HTTP-Header, z. B. für Authentifizierung (Authorization: Bearer ...)

InfluxDB

EigenschaftBeschreibung
AktiviertAktiviert den InfluxDB-Export
EndpunktURL der InfluxDB-Instanz, z. B. http://localhost:8086
OrganisationInfluxDB-Organisation
BucketZiel-Bucket
TokenAPI-Token für die Authentifizierung
Flush-Intervall (ms)Wie häufig gesammelte Metriken geschrieben werden (Standard: 1.000 ms)
Export-Intervall (ms)Messintervall (Standard: 60.000 ms)

System-Instrumentierung

EigenschaftBeschreibungStandard
.NET RuntimeLaufzeit-Metriken der .NET-Runtime (GC, Thread-Pool, ...)Aktiv
ProzessProzess-Metriken (CPU-Zeit, Speicher)Aktiv
ASP.NET CoreHTTP-Server-MetrikenInaktiv
HTTP ClientMetriken ausgehender HTTP-AnfragenInaktiv
Event CountersWindows Event Counter-QuellenInaktiv

So lesen Sie die Metriken

Für die Auswertung ist nicht nur der Metrikname wichtig, sondern auch der Metriktyp:

TypBedeutungTypische Nutzung
GaugeMomentaufnahme eines aktuellen ZustandsAktuelle Auslastung, Queue-Größe, Status
CounterMonoton steigender ZählerFehleranzahl, erfolgreiche Ausführungen, Verbindungsversuche
HistogramVerteilung von MesswertenLatenzen, Bearbeitungszeiten, Nachrichtengrößen

Viele Metriken werden zusätzlich mit Attributen exportiert, zum Beispiel dem Verbindungsnamen. Dadurch lässt sich dieselbe Metrik pro Verbindung, Plug-in oder Zielsystem getrennt auswerten.

Für eine hilfreiche Auswertung mehrere Metriken kombinieren

Einzelne Metriken sind oft erst in Kombination aussagekräftig. Eine steigende Queue-Tiefe ist zum Beispiel erst dann problematisch, wenn gleichzeitig die Worker-Auslastung hoch bleibt oder die Bearbeitungszeiten ansteigen.

Wertemapping für Statusmetriken

Einige Statusmetriken werden als numerische Werte exportiert. Für Dashboards und Alarme sollte deshalb eine feste Wertetabelle verwendet werden.

inray.service.escalation_level

Beschreibt den globalen Gesundheitszustand des OPC Routers.

WertBedeutungPraktische Interpretation
-2UndefinedZustand ist noch nicht bestimmbar
-1InitializingDienst initialisiert noch interne Komponenten
0EscalationLevel0Normalbetrieb
1EscalationLevel1Gute, stark wiederholte Transferwerte werden teilweise verworfen
2EscalationLevel2Gute Transferwerte werden verworfen
3EscalationLevel3Transferwerte werden vollständig verworfen
4EscalationLevel4Nachrichten normaler Priorität werden verworfen

inray.connections.state

Beschreibt den aktuellen Zustand einer Verbindung.

WertBedeutungPraktische Interpretation
-1NullNoch kein gültiger Verbindungszustand vorhanden
0StartUpVerbindung startet
1ValidateVerbindung wird geprüft
2ReadyVerbindung ist betriebsbereit
3TriggerCheckErrorFehler bei der Trigger-Prüfung
4TriggerStatusErrorFehler im Trigger-Status
5TriggerConfigErrorFehler in der Trigger-Konfiguration
6PlugInErrorFehler in einem beteiligten Plug-in
7NoLicenseLizenz fehlt oder ist ungültig
8ShutDownVerbindung wird beendet oder ist heruntergefahren
9StandByVerbindung ist inaktiv, aber vorhanden

inray.connections.execution.state

Beschreibt das Ergebnis der letzten ausgeführten Verbindung.

WertBedeutungPraktische Interpretation
0NoneNoch keine Ausführung oder kein Ergebnis vorhanden
1OkLetzte Ausführung erfolgreich
2AbortedAusführung wurde abgebrochen
3ErrorAusführung endete mit Fehler
4PendingAusführung steht noch aus
5ForwardedAusführung wurde weitergeleitet
6DiscardedAusführung wurde verworfen

inray.connections.trigger.state und inray.connections.trigger.async.status

Beschreibt den Zustand des Triggers einer Verbindung.

WertBedeutungPraktische Interpretation
0NoneNoch kein gültiger Triggerstatus vorhanden
1OkTrigger arbeitet ordnungsgemäß
2StatusErrorTrigger meldet einen Statusfehler
3CheckErrorTrigger-Prüfung fehlgeschlagen
4ConfigErrorTrigger ist fehlerhaft konfiguriert

inray.plugins.instance.status

Beschreibt den Zustand einer Plug-in-Instanz.

WertBedeutungPraktische Interpretation
0UninitializedPlug-in wurde noch nicht initialisiert
1InitializingPlug-in startet oder initialisiert Ressourcen
2OkPlug-in arbeitet ordnungsgemäß
3WarningPlug-in arbeitet, meldet aber Warnungen
4ErrorPlug-in ist fehlerhaft
5StoppedPlug-in ist gestoppt
6NoLicensePlug-in kann wegen fehlender Lizenz nicht ausgeführt werden

inray.opcua.connection_manager.state

Beschreibt den Verbindungszustand des OPC-UA-Connection-Managers.

WertBedeutungPraktische Interpretation
0DisconnectedKeine aktive Verbindung zum OPC-UA-Server
1ConnectedVerbindung steht
2InvalidConfigVerbindung kann wegen ungültiger Konfiguration nicht aufgebaut werden

Verfügbare Metriken

Alle Metriken tragen das Präfix inray. und können mit Attributen (Dimensionen) wie dem Verbindungsnamen oder dem Plug-in-Typ angereichert sein.

Nicht alle Metriken sind immer verfügbar

Plug-in-spezifische Metriken werden nur exportiert, wenn das jeweilige Plug-in lizenziert und aktiv ist. Welche Metriken tatsächlich geliefert werden, hängt von der Konfiguration und dem Laufzeitzustand des OPC Routers ab.

Dienst & System

Allgemeine Zustandsmetriken des OPC-Router-Dienstes und des Host-Systems.

Hilfreich für:

  • Überwachung des Gesamtzustands des Dienstes
  • Erkennen von CPU-, Speicher- oder Speicherplatzengpässen
  • Alarmierung bei kritischen Betriebszuständen

Darunter u. a. folgende Metriken:

MetrikTypEinheitBeschreibung
inray.service.escalation_levelGauge-Globaler Gesundheitszustand des OPC Routers; die numerischen Werte sollten über die obige Wertetabelle aufgelöst werden
inray.service.used_memory_bytesGaugeBytesSpeicherverbrauch des Prozesses
inray.system.processor_usageGauge%CPU-Auslastung des Host-Systems
inray.system.memory_usageGauge%Speicherauslastung des Host-Systems
inray.system.free_memory_bytesGaugeBytesVerfügbarer Arbeitsspeicher
inray.drives.{Laufwerk}.free_bytesGaugeBytesFreier Speicherplatz je Laufwerk
inray.drives.{Laufwerk}.total_bytesGaugeBytesGesamtgröße je Laufwerk

Transfer-Manager

Metriken zum internen Verarbeitungs-Scheduler des OPC Routers. Diese Werte bilden die Grundlage des Service-Dashboards.

Hilfreich für:

  • Erkennen von Rückstau im Verarbeitungspfad
  • Bewertung, ob genügend Worker-Threads verfügbar sind
  • Analyse, ob steigende Latenzen durch Last oder durch einzelne langsame Transfers verursacht werden

System-Load-Gauge im Dashboard nachrechnen

Die Gauge System Load Balance im Service-Dashboard basiert direkt auf diesen beiden Metriken:

  • Regular: inray.transfer_manager.default_prio_average_workload
  • High Prio: inray.transfer_manager.high_prio_average_workload

Die Berechnung erfolgt in drei Schritten:

  1. Für jeden Worker-Thread wird pro Messintervall ein Auslastungs-Sample gebildet:
load_sample = activeMs / (activeMs + idleMs)

Dabei ist activeMs die Zeit, in der der Thread tatsächlich Transfers bearbeitet, und idleMs die Zeit, in der der Thread wartet.

  1. Der OPC Router speichert pro Worker-Thread den Durchschnitt der letzten bis zu 10 Samples:
load_thread = (load_sample_1 + load_sample_2 + ... + load_sample_n) / n

mit n <= 10.

  1. Das Dashboard liest für den gewählten Zeitraum alle gespeicherten Werte der jeweiligen Metrik und bildet daraus erneut den arithmetischen Mittelwert:
load_dashboard = (load_thread_1 + load_thread_2 + ... + load_thread_m) / m

Die Anzeige der Gauge erfolgt anschließend als Prozentwert:

Anzeige in % = load_dashboard * 100

Beispiel:

  • Ein Dashboard-Wert von 0.37 entspricht einer angezeigten Systemlast von 37 %.
  • Ein Dashboard-Wert von 0.85 entspricht 85 % und deutet auf eine hohe dauerhafte Auslastung hin.
  • Wenn für den gewählten Zeitraum keine Werte vorliegen, zeigt die Gauge N/A.

Wichtig für die Interpretation:

  • Die Gauge zeigt keine CPU-Auslastung des Hosts, sondern die zeitliche Auslastung der Transfer-Worker.
  • Die Gauge ist ein gemittelter Verlauf, kein Momentanwert eines einzelnen Threads.
  • Für Regular werden die Werte der normalen und niedrigen Priorität verwendet, für High Prio die Werte der hochpriorisierten Worker.

Darunter u. a. folgende Metriken:

MetrikTypEinheitBeschreibung
inray.transfer_manager.queue_depthGaugeItemsAnzahl aktuell wartender Transfer-Ausführungen über alle Prioritäten; ein dauerhaft steigender Wert weist auf Rückstau hin
inray.transfer_manager.queue_depth.high_priorityGaugeItemsAktuell wartende hochpriorisierte Ausführungen; sollte bevorzugt niedrig bleiben
inray.transfer_manager.queue_depth.normal_priorityGaugeItemsAktuell wartende normal priorisierte Ausführungen
inray.transfer_manager.queue_depth.low_priorityGaugeItemsAktuell wartende niedrig priorisierte Ausführungen
inray.transfer_manager.busy_worker_threadsGaugeThreadsBeschäftigte Worker-Threads
inray.transfer_manager.ready_worker_threadsGaugeThreadsBereite Worker-Threads
inray.transfer_manager.worker_thread_utilizationGauge%Gesamtauslastung aller Worker; dauerhaft hohe Werte zusammen mit wachsender Queue deuten auf Kapazitätsgrenzen hin
inray.transfer_manager.utilization.high_priorityGauge%Anteil der Verarbeitungszeit für hochpriorisierte Transfers
inray.transfer_manager.utilization.normal_priorityGauge%Anteil der Verarbeitungszeit für normal priorisierte Transfers
inray.transfer_manager.utilization.low_priorityGauge%Anteil der Verarbeitungszeit für niedrig priorisierte Transfers
inray.transfer_manager.average_triggers_per_secondGaugeItems/sMittlere Eingangsrate in den Transfer-Manager
inray.transfer_manager.average_processing_time_per_itemGaugemsMittlere Bearbeitungszeit pro verarbeitetem Item
inray.transfer_manager.trigger_transfer_delayHistogrammsZeit zwischen Trigger-Ereignis und tatsächlicher Abarbeitung; wichtig für Latenzanalysen
inray.transfer_manager.tags_executedHistogramTagsAnzahl verarbeiteter Tags pro Transfer; hilft beim Einordnen, warum ein Transfer länger dauert
inray.transfer_manager.default_prio_average_workloadGauge-Backpressure für normale und niedrige Priorität; je höher der Wert, desto mehr Arbeit konnte nicht direkt übernommen werden
inray.transfer_manager.high_prio_average_workloadGauge-Backpressure für hohe Priorität

Typische Lesart:

  • queue_depth steigt, worker_thread_utilization bleibt hoch: Der Router verarbeitet kontinuierlich am Limit.
  • average_processing_time_per_item steigt, tags_executed steigt ebenfalls: Die Transfers werden inhaltlich schwerer, nicht nur zahlreicher.
  • high_prio_average_workload steigt, obwohl normale Queue niedrig ist: Hochpriorisierte Verbindungen benötigen gezielte Analyse.

Verbindungen

Metriken pro konfigurierter Verbindung, dimensioniert mit dem Verbindungsnamen.

Hilfreich für:

  • Erkennen fehlerhafter oder langsamer Einzelverbindungen
  • Vergleich einzelner Verbindungen in Grafana oder InfluxDB
  • Alarmierung bei Statuswechseln oder steigender Fehlerquote

Darunter u. a. folgende Metriken:

MetrikTypEinheitBeschreibung
inray.connections.execution.countCounter-Gesamtanzahl Ausführungen
inray.connections.execution.success.countCounter-Erfolgreiche Ausführungen
inray.connections.execution.error.countCounter-Fehlerhafte Ausführungen
inray.connections.execution.durationHistogrammsAusführungsdauer
inray.connections.execution.type.durationHistogramµsAusführungsdauer je Ergebnisart, zum Beispiel Ok, Error oder Aborted
inray.connections.stateGauge-Aktueller Verbindungsstatus; die Zahlenwerte sollten über die obige Wertetabelle aufgelöst werden
inray.connections.execution.stateGauge-Ergebnis der letzten Ausführung; hilfreich für Single-Stat-Panels oder Statusampeln
inray.connections.total.ok.countGauge-Verbindungen im OK-Zustand
inray.connections.total.error.countGauge-Verbindungen im Fehlerzustand
inray.connections.total.deactivated.countGauge-Deaktivierte Verbindungen

Typische Lesart:

  • execution.error.count steigt, während execution.count ebenfalls steigt: Die Verbindung arbeitet, produziert aber Fehler.
  • execution.duration steigt ohne erhöhte Triggerlast: Ursache liegt eher in der Verarbeitung oder im Zielsystem als im Trigger.
  • connections.state = 7: Die Verbindung ist nicht technisch gestört, sondern lizenzbedingt blockiert.

Trigger

Metriken für asynchrone Trigger, dimensioniert mit dem Verbindungsnamen.

Hilfreich für:

  • Analyse überlaufender oder zu kleiner Trigger-Queues
  • Bewertung, ob Trigger schneller erzeugt als verarbeitet werden
  • Unterscheidung zwischen Konfigurationsfehlern und Laufzeitengpässen

Darunter u. a. folgende Metriken:

MetrikTypEinheitBeschreibung
inray.connections.trigger.async.statusGauge-Zustand des asynchronen Triggers; die Zahlenwerte sollten über die obige Wertetabelle aufgelöst werden
inray.connections.trigger.async.queued_eventsGauge-Aktuell aufgelaufene Trigger-Ereignisse, die noch nicht verarbeitet wurden
inray.connections.trigger.async.queue_limitGauge-Konfiguriertes Maximum der Trigger-Warteschlange
inray.connections.trigger.async.enqueue.countCounter-Gesamt eingereihte Events
inray.connections.trigger.async.dequeue.countCounter-Gesamt verarbeitete Events
inray.connections.trigger.async.dequeue.dropped_timeoutCounter-Verworfene Events (Timeout)
inray.connections.trigger.async.queued_per_second_avgGaugeEvents/sMittlere Eingangsrate
inray.connections.trigger.async.dequeued_per_second_avgGaugeEvents/sMittlere Abarbeitungsrate
inray.connections.trigger.async.dropped_per_second_avgGaugeEvents/sMittlere Verwerfungsrate

Typische Lesart:

  • queued_events nähert sich queue_limit: Die Queue ist zu klein oder die Abarbeitung zu langsam.
  • queued_per_second_avg liegt dauerhaft über dequeued_per_second_avg: Rückstau baut sich auf.
  • dequeue.dropped_timeout steigt: Die Verbindung kann Trigger-Ereignisse nicht rechtzeitig abarbeiten.

OPC UA

Metriken der OPC-UA-Verbindungsverwaltung, dimensioniert mit der Server-Adresse.

Hilfreich für:

  • Überwachung der Stabilität von OPC-UA-Verbindungen
  • Erkennen von Konfigurationsproblemen oder instabilen Sessions
  • Bewertung des Lese- und Abo-Verhaltens

Darunter u. a. folgende Metriken:

MetrikTypEinheitBeschreibung
inray.opcua.connection_manager.stateGauge-Verbindungsstatus des OPC-UA-Managers; die Zahlenwerte sollten über die obige Wertetabelle aufgelöst werden
inray.opcua.connection_manager.connection_established_successful.countCounter-Erfolgreiche Verbindungsaufbauten
inray.opcua.connection_manager.connection_established_failed.countCounter-Fehlgeschlagene Verbindungsaufbauten
inray.opcua.connection_manager.keep_alive_failed.countCounter-Keep-Alive-Fehler
inray.opcua.connection_manager.watchdog_cycle_durationHistogrammsDauer des Watchdog-Zyklus
inray.opcua.group.item_countGauge-Anzahl abonnierter Items je Gruppe

Plug-ins

Metriken für das Plug-in-System sowie plug-in-spezifische Metriken einzelner Plug-in-Typen. Diese Metriken stehen nur zur Verfügung, wenn das jeweilige Plug-in aktiv und lizenziert ist.

Allgemeine Plug-in-Metriken

MetrikTypEinheitBeschreibung
inray.plugins.instance.countGauge-Anzahl aktiver Plug-in-Instanzen
inray.plugins.instance.statusGauge-Zustand einer Plug-in-Instanz; die Zahlenwerte sollten über die obige Wertetabelle aufgelöst werden
inray.plugins.execution.countCounter-Gesamtanzahl Plug-in-Ausführungen
inray.plugins.execution.time.histogramHistogrammsAusführungsdauer je Plug-in-Instanz
inray.plugins.total.ok.countGauge-Plug-ins im OK-Zustand
inray.plugins.total.error.countGauge-Plug-ins im Fehlerzustand
inray.plugins.total.warning.countGauge-Plug-ins mit Warnungen

MQTT-Plug-in

MetrikTypEinheitBeschreibung
inray.mqtt.connections.activeGauge-Aktive MQTT-Verbindungen
inray.mqtt.connect.attemptCounter-Verbindungsversuche
inray.mqtt.connect.okCounter-Erfolgreiche Verbindungen
inray.mqtt.connect.failCounter-Fehlgeschlagene Verbindungen
inray.mqtt.publish.okCounter-Erfolgreich veröffentlichte Nachrichten
inray.mqtt.publish.failCounter-Fehlgeschlagene Veröffentlichungen
inray.mqtt.publish.latency.msHistogrammsPublish-Latenz
inray.mqtt.payload.bytesHistogramBytesNachrichtengröße

.NET Runtime & Prozess

Wenn die System-Instrumentierung aktiv ist, exportiert der OPC Router zusätzlich Standard-Metriken der .NET-Laufzeitumgebung und des Betriebssystemprozesses (standardmäßig aktiv). Diese umfassen u. a. Garbage-Collector-Statistiken, Thread-Pool-Auslastung und Prozess-CPU-Zeit.