Sentry
Da die ioBroker-Installation lokal bei den Nutzern auf eigener Hardware läuft (und nicht als Cloud-Installation), ist es schwierig seltene Fehler in Adaptern (frühzeitig - am besten in der Beta-Phase) zu erkennen. Leider melden Nutzer auch nicht jeden Fehler selbst auf GitHub. Aus diesem Grund gibt es Lösungen wie sentry.io, welche Fehler an eine zentrale Stelle senden und sammeln.
Mit diesem Dienst (falls aktiviert), werden unbehandelte Fehler direkt an das ioBroker-Team gemeldet. Neben der eigentlichen Fehlermeldung werden noch weitere Informationen, wie die aktuelle Adapter-Version, die js-controller
Version, das Betriebssystem und mehr hilfreiche Infos übermittelt. Mit diesen Daten kann der Fehler dann im Idealfall identifiziert und behoben werden.
Bemerkung
Nicht alle Adapter sind für Sentry freigeschaltet. In der Admin-Oberfläche sieht man als Nutzer, welche Adapter von Sentry überwacht werden. Sollte man die Übermittlung nicht wünschen, kann man das Plugin je Adapter deaktivieren.
Das Sentry-Plugin wird vom js-controller
als Abhängigkeit automatisch mit installiert.
Konfiguration (dev)
Die Konfiguration findet in der io-package.json (common.plugins.sentry
) statt.
Nachdem ein neues Projekt auf sentry.iobroker.net (von einem Admin) angelegt wurde, muss der entsprechende DSN im Adapter konfiguriert werden. Beispiel:
"plugins": {
"sentry": {
"dsn": "https://baf35e4e423d409bbec94cb01b55257e@sentry.iobroker.net/103"
}
}
Weitere Optionen werden ebenfalls unterstützt (siehe Dokumentation).
Im Standard werden alle unbehandelten Fehler (unhandled exceptions) an Sentry weitergeleitet. Zusätzlich können auch eigene Events an Sentry gesendet werden. Beispiele gibt es ebenfalls in der Dokumentation.
Das Sentry-Plugin wird dabei vom Paket @iobroker/js-controller-adapter
als Abhängigkeit geladen und ist daher immer verfügbar.
Konfiguration (User)
Als Nutzer kann man im Admin über die Experten-Einstellungen auf jeder Instanz Sentry manuell deaktivieren. In diesem Fall wird auf dem Instanz-Objekt common.disableDataReporting = true
gesetzt.
Damit läuft das Plugin zwar weiter, aber sendet keine Daten mehr.
Möchte man das Plugin komplett deaktivieren bzw. nicht mehr starten, kann dies über den Zustand system.adapter.<adapter>.0.plugins.sentry.enabled
gesteuert werden. Steht dieser Wert auf false
, startet der js-controller
das Plugin für diese Instanz gar nicht mehr.
Um das Plugin für den kompletten Host bzw. alle Instanzen auf dem Host zu deaktivieren, kann der Zustand system.host.<host>.plugins.sentry.enabled
verwendet werden.