Journaux et diagnostic¶
Tous les agents journalisent via syslog, donc via journalctl sur un système systemd.
Lire les journaux d'un agent¶
sudo journalctl -u abls-agent-modbus@MODBUS_CHAUFFERIE.service -f
sudo journalctl -u abls-agent-server.service -f
sudo -iu monutilisateur journalctl --user -u abls-agent-audio@AUDIO_SALON.service -f
Tous les agents d'une machine à la fois :
sudo journalctl -u 'abls-agent-*' -f
Depuis le dernier démarrage, avec horodatage précis :
sudo journalctl -u 'abls-agent-*' -b -o short-precise
Niveaux de verbosité¶
Le paramètre log_level suit la convention syslog.
| Valeur | Niveau | Ce que vous voyez |
|---|---|---|
| 0–2 | EMERG, ALERT, CRIT |
Uniquement les arrêts sur erreur |
| 3 | ERR |
Erreurs |
| 4 | WARNING |
Avertissements (fichier de conf illisible, trame ignorée) |
| 5 | NOTICE |
Démarrages, connexions, changements d'état |
| 6 | INFO |
Défaut. Fonctionnement normal détaillé |
| 7 | DEBUG |
Trace complète, très verbeux |
Filtrer par priorité :
sudo journalctl -u 'abls-agent-*' -p warning
Changer le niveau de verbosité¶
Temporairement, depuis la Console¶
C'est la méthode recommandée : elle n'exige aucun accès à la machine et prend effet
immédiatement. L'API publie la consigne sur le topic MQTT <domain>/AGENT/<tech_id>/LOG.
Localement, dans le fichier de configuration¶
{ "log_level": 7 }
Puis redémarrer le service.
L'API reprend la main
La valeur locale n'est vraie qu'entre le démarrage du processus et la réponse d'enrôlement :
l'API renvoie sa propre valeur de log_level et l'écrase.
Pour déboguer un agent qui n'arrive pas à s'enrôler, la valeur locale est en revanche la seule qui compte — c'est précisément le cas où elle est utile.
Pour une seule exécution, en avant-plan¶
sudo systemctl stop abls-agent-modbus@MODBUS_CHAUFFERIE.service
sudo -u abls ABLS_LOG_LEVEL=7 abls-agent-modbus --agent-tech-id MODBUS_CHAUFFERIE
Les messages qui comptent¶
Au démarrage¶
| Message | Signification |
|---|---|
Apply ENVironment Variables |
Début de l'application des variables ABLS_* |
Apply ENV 'X' -> 'y' = 'z' |
Une variable a été prise en compte |
Trying to read config file '...' |
Lecture d'un fichier de configuration |
Unable to read file config '...' |
Fichier absent ou JSON invalide — non bloquant |
Apply Command-Line Arguments |
Prise en compte de la ligne de commande |
local_config : { ... } |
Configuration effectivement retenue |
api_config : { ... } |
Configuration renvoyée par l'API |
Les arrêts sur erreur¶
| Message | Cause |
|---|---|
There is no 'agent_tech_id', in config, exiting. |
tech_id non résolu |
There is no 'api_url'/'domain_uuid'/'domain_secret', in config, exiting. |
Enrôlement incomplet |
There is no 'master_hostname', in config, exiting. |
Mode standalone sans broker local |
POST_CONFIG from API Failed. Unloading. |
API injoignable, signature refusée, horloge décalée |
Agent disabled in API config. Unloading. |
Agent désactivé dans la Console |
Must be root to save config to ... |
--save lancé sans root |
Recettes de diagnostic¶
# Quelle configuration a réellement été retenue ?
sudo journalctl -u abls-agent-modbus@MODBUS_CHAUFFERIE.service | grep local_config | tail -1
# Pourquoi l'agent redémarre-t-il en boucle ?
sudo journalctl -u abls-agent-modbus@MODBUS_CHAUFFERIE.service -p err -n 50
# Quels agents ont échoué sur cette machine ?
systemctl list-units 'abls-agent-*' --state=failed
# Combien de redémarrages depuis ce matin ?
sudo journalctl -u 'abls-agent-*' --since today | grep -c 'Agent is starting'
Tester un agent à distance¶
L'API publie des commandes de test sur <domain>/AGENT/<tech_id>/TEST.
Depuis la Console, la fiche d'un agent propose un bouton Tester qui déclenche un aller-retour
complet et affiche le résultat. C'est le moyen le plus rapide de distinguer un problème de
liaison MQTT d'un problème de matériel.
Maîtriser le volume des journaux¶
Un log_level à 7 sur un agent à 50 tours par seconde produit un volume considérable.
# Limiter la taille du journal persistant
sudo journalctl --vacuum-size=500M
# Voir l'espace occupé
sudo journalctl --disk-usage
Tip
Ne laissez jamais un agent en DEBUG durablement : vous risquez de saturer le disque et
de dégrader les performances du moteur D.L.S.