Skip to content

Remote Logger

Home Assistant Remote Logger

Rhizomatics Open Source hacs

Ruff pre-commit.ci status Coverage Tests Github Deploy CodeQL Dependabot Updates




Écoute les événements du journal système de Home Assistant et envoie des événements de journal structurés à un collecteur Syslog ou OpenTelemetry (OTLP) distant. Transmet optionnellement d'autres événements Home Assistant, tels que les événements du cycle de vie, les appels de services, les mises à jour de configuration et les changements d'état.

Exemple de trace de pile OTEL

La structure des journaux est préservée depuis l'événement interne de Home Assistant, de sorte que les journaux multi-lignes et les traces de pile sont conservés comme des entrées uniques, contrairement aux scrapers de console qui créent un événement par ligne, et capturent correctement les noms de scripts, les numéros de lignes et les versions.

Seul le serveur Home Assistant lui-même, avec ses composants personnalisés, est pris en charge. Les journaux des apps (anciennement appelées « add-ins »), de HAOS ou du superviseur HA ne sont pas fournis comme événements captables et nécessitent donc une solution alternative. LogSpout Home Assistant App de Bert Baron couvre ces cas. Elle peut être utilisée en combinaison avec Remote Logger afin que Home Assistant dispose de journaux structurés de qualité, et que tout le reste soit au moins enregistré.

Installation

Remote Logger est un composant HACS, qui doit donc être installé en premier en suivant les instructions de Getting Started with HACS.

L'intégration s'installe depuis la page des intégrations de Home Assistant et ne nécessite aucune configuration YAML.

Choisir l'intégration

Une modification YAML est cependant requise dans l'intégration System Log de Home Assistant pour activer le transfert d'événements system_log_event.

yaml title="Configuration Home Assistant" system_log: fire_event: true

Open Telemetry (OTEL)

Les journaux sont envoyés selon la spécification Open Telemetry Logs via une connexion Open Telemetry Protocol (OTLP), en Protobuf ou JSON, et actuellement uniquement en HTTP (gRPC pourra être ajouté à l'avenir).

Configurer OTLP

Pour plus d'informations, voir OpenTelemetry Logging.

Les enregistrements de journaux sont collectés et envoyés en lot.

Syslog

Les messages sont envoyés au format plus récent RFC5424, avec des données structurées supplémentaires utilisant la taxonomie OTEL (voir Attributs supplémentaires).

Syslog peut être envoyé en TCP ou UDP.

Configurer Syslog

Événements

Événement System Log

Notez l'exigence à la section Installation pour activer cet événement, qui n'est pas déclenché par défaut.

Remote Logger exclura ses propres événements de journal du flux, pour éviter tout risque de boucle d'événements. En alternative, les statistiques et messages d'erreur sont disponibles sous forme d'entités de diagnostic.

Attributs supplémentaires

Les attributs supplémentaires suivants, dérivés directement de l'événement de journal Home Assistant, sont fournis comme attributs STRUCTURED-DATA Syslog ou attributs OTEL.

  • code.file.path
  • code.line.number
  • code.function.name (il s'agit de la valeur logger de Home Assistant)
  • exception.count
  • exception.first_occurred
  • exception.stacktrace

La taxonomie OTEL est utilisée à la fois pour OTEL et Syslog car il n'existe pas de taxonomie standard à ce niveau de Syslog.

Autres événements

Remote Logger peut journaliser n'importe quel événement Home Assistant et connaît les événements principaux afin de créer un message plus lisible.

Par commodité, quatre ensembles d'événements prédéfinis peuvent être activés.

Ensemble Description
Cycle de vie Événements de démarrage et d'arrêt du serveur Home Assistant
Modifications du cœur Chargement ou déchargement de composants et services, configuration réappliquée
Activité du cœur Actions, actions mobiles, scripts, automations exécutés
Changements d'état Changements d'état des entités et entrées du journal, avec les états dépourvus d'attributs et de contexte pour éviter des entrées de journal trop volumineuses
Changements d'état complets Changements d'état des entités et entrées du journal, complets et non réduits

Le champ d'événements en format libre peut être utilisé comme alternative pour choisir des événements Home Assistant spécifiques ou tout autre événement de composant personnalisé.

Événements Home Assistant dans OpenObserve

Serveurs de journaux

Il existe une multitude de solutions pour capturer, analyser, agréger et stocker les journaux.

Une combinaison qui fonctionne bien est Vector et GreptimeDb — rapides, légers, open source, personnalisables et fonctionnant sous Docker. Vector prend en charge la journalisation OTEL ainsi que Syslog, avec de bonnes capacités de remapping pour affiner chaque source. Il est ensuite facile d'intégrer les journaux de serveurs Docker, de pare-feu, de commutateurs Unifi ou d'autres sources dans une seule chronologie, ainsi que des métriques de serveur et de réseau.

Entités de diagnostic

Des capteurs Home Assistant sont créés et mis à jour pour surveiller l'activité des journaux, ainsi que les erreurs éventuelles lors de la génération des messages de journal ou de leur envoi aux serveurs distants.

Entités de diagnostic

Rhizomatics Open Source pour Home Assistant

HACS

  • AutoArm - Arme et désarme automatiquement les panneaux de contrôle d'alarme de Home Assistant à l'aide de boutons physiques, de la présence, de calendriers, du soleil et plus encore
  • Supernotify - Notification unifiée pour une messagerie multi-canal simple, avec une intégration puissante des sonnettes et des caméras de sécurité.

Python / Docker

  • Anpr2MQTT - Intègre les caméras ANPR/ALPR de reconnaissance de plaques via le système de fichiers (NAS/FTP) vers MQTT avec analyse d'image optionnelle et intégration DVLA UK.
  • Updates2MQTT - Notifie automatiquement via MQTT les mises à jour d'images Docker, avec une gestion avancée pour extraire les versions et les notes de version des images, et la possibilité de déclencher à distance le pull et le redémarrage des conteneurs depuis Home Assistant. Disponible également sur PyPI