C Marqueurs du journal

Les 91 marqueurs que la passerelle écrit dans son journal : ce qu'ils veulent dire, et s'ils demandent une action. Page vérifiée contre le flux le 2026-09-23.
Comment lire le journal

Chaque étape du traitement écrit une ligne préfixée par un marqueur en majuscules. Pour diagnostiquer, la bonne méthode est de chercher le premier marqueur attendu qui manque : il désigne l'étape fautive, là où la liste des erreurs ne dit que le symptôme.

Sur la passerelle, le journal est le fichier /overlay/log/messages. Garder grep -a par précaution : selon ce que le journal contient à cet instant, grep peut le prendre pour un binaire et ne répondre que « binary file matches ». Ce n'est pas systématique, mais -a n'est jamais faux.

grep -a "IOBASE_" /overlay/log/messages | tail -20
Trois marqueurs qui ressemblent à des pannes sans en être

ASYSTOM_SKIP_GENERIC — un capteur d'une autre marque ne va pas chez Asystom, c'est voulu.
IOBASE_SKIP — la configuration de la balise est incomplète ; la passerelle préfère ne pas envoyer.
DAP_REFRESH_SKIP_FRESH — le jeton est récent et volontairement épargné. C'est le marqueur qu'on veut voir après un déploiement.

Réception radio

Ce que la passerelle entend des capteurs.

MarqueurNiveauSignificationÉmis par
LORA_INnormalUne trame a été reçue d'un capteur. Le point de départ de tout le traitement.on_lora_message

Envoi vers IoBase

Le trajet d'une mesure jusqu'à la plateforme, et ce qui peut l'interrompre.

MarqueurNiveauSignificationÉmis par
IOBASE_OUTnormalUne mesure part. Le marqueur indique l'environnement visé, l'adresse et si un jeton est présent.build_iobase_msg
IOBASE_RESPnormalLa plateforme a répondu. Le code de réponse dit si elle a accepté.handle_iobase_resp
IOBASE_REFUSproblèmeLa plateforme a refusé le contenu. Le corps de la réponse donne le motif : le plus souvent un champ de configuration de la balise absent ou inconnu d'elle.handle_iobase_resp
IOBASE_FAILproblèmeL'envoi n'a pas abouti — plateforme injoignable, nom de domaine qui ne résout plus, réseau coupé. La mesure est perdue : il n'y a pas de file de rejeu.log_flow_error
IOBASE_SKIPà surveillerRien n'a été envoyé, faute de configuration complète sur la balise. Le marqueur nomme les champs manquants. C'est volontaire : mieux vaut ne pas envoyer que d'essuyer un refus dont le motif serait à deviner.build_iobase_msg
IOBASE_ENV_FALLBACKà surveillerLa balise vise le second environnement, qui n'est pas configuré. La mesure est repartie sur l'environnement principal plutôt que d'être perdue.build_iobase_msg

Envoi vers Asystom

La chaîne d'analyse vibratoire, en parallèle d'IoBase.

MarqueurNiveauSignificationÉmis par
ASYSTOM_OUTnormalUne trame part vers la plateforme Asystom.build_asystom_msg
ASYSTOM_RESPnormalAsystom a répondu.handle_asystom_resp
ASYSTOM_FAILproblèmeL'envoi a échoué. La trame n'est pas rejouée.log_flow_error
ASYSTOM_SKIP_GENERICnormalLe capteur est déclaré d'une autre marque : la transmission vers Asystom est volontairement coupée. Ce n'est pas une anomalie — c'est le comportement attendu pour un capteur générique.build_asystom_msg

Commandes descendantes

Ce que la passerelle récupère d'Asystom et pousse vers les capteurs.

MarqueurNiveauSignificationÉmis par
ASYSTOM_DL_POLLnormalInterrogation périodique d'Asystom, toutes les 60 secondes.build_asystom_dl_get
ASYSTOM_DL_EMPTYnormalRien à pousser. C'est le cas de tous les jours.parse_asystom_dl
ASYSTOM_DL_DISPATCHnormalDes commandes sont mises en file. Le marqueur donne leur nombre et les équipements concernés.parse_asystom_dl
ASYSTOM_DL_SKIPà surveillerDes équipements sont annoncés mais aucune charge utile exploitable — à distinguer d'une réponse vide.parse_asystom_dl
ASYSTOM_DL_KOproblèmeAsystom a répondu autre chose qu'un succès.parse_asystom_dl
DL_QUEUEDnormalUn réglage est en attente d'envoi vers un capteur.cockpit_downlink
DL_SENTnormalLe réglage est parti pendant la fenêtre d'écoute du capteur.on_lora_message
DL_ACKEDnormalLe capteur a accusé réception.on_lora_message
DL_CONFIRMED_OBSnormalLe réglage est confirmé par observation : le rythme réel des trames correspond à la consigne. L'observation fait foi, pas la promesse.on_lora_message
DL_EXPIREDà surveillerLe réglage n'a pas été confirmé après plusieurs trames. Il est abandonné.on_lora_message
DL_CANCELLEDnormalLe réglage a été annulé depuis le cockpit.cockpit_downlink

Authentification IoBase

Le cycle des jetons. Les marqueurs portent l'environnement concerné.

MarqueurNiveauSignificationÉmis par
DAP_REGISTER_OUTnormalDemande d'enrôlement envoyée.build_dap_register
DAP_REGISTER_OKnormalEnrôlement accepté. Un administrateur de la plateforme doit maintenant valider l'équipement.handle_dap_resp
DAP_REGISTER_KOproblèmeL'enrôlement a échoué.handle_dap_resp
DAP_REGISTER_SKIPà surveillerEnrôlement non tenté : identifiants absents.build_dap_register
DAP_REGISTER_COOLDOWNà surveillerEnrôlement non rejoué : le précédent est trop récent. Chaque tentative exige une validation humaine côté plateforme.build_dap_register
DAP_TOKEN_OUTnormalDemande de jeton envoyée.build_dap_token
DAP_TOKEN_OKnormalJeton obtenu.handle_dap_resp
DAP_TOKEN_KOproblèmeDemande de jeton refusée. Un code 425 signifie que l'équipement attend encore sa validation côté plateforme.handle_dap_resp
DAP_TOKEN_SKIPà surveillerDemande non tentée : identifiants manquants, ou un renouvellement est déjà en cours.build_dap_token
DAP_TOKEN_NO_TOKENproblèmeRéponse acceptée mais sans jeton dedans.handle_dap_resp
DAP_REFRESH_OUTnormalRenouvellement du jeton lancé.build_dap_refresh
DAP_REFRESH_OKnormalJeton renouvelé et persisté.handle_dap_resp
DAP_REFRESH_KOproblèmeLe renouvellement a échoué. Une reprise automatique s'arme.handle_dap_resp
DAP_REFRESH_FAILproblèmeÉchec réseau pendant le renouvellement.log_flow_error
DAP_REFRESH_NO_TOKENproblèmeRéponse acceptée mais sans jeton dedans.handle_dap_resp
DAP_REFRESH_SKIPà surveillerRenouvellement non tenté : identifiants ou jeton de renouvellement absents. Normal sur un environnement non configuré.build_dap_refresh
DAP_REFRESH_SKIP_FRESHnormalMarqueur à connaître avant tout déploiement. Le jeton a moins de six heures : le redémarrage ne le consomme pas. C'est ce qu'on veut voir après un déploiement.restore_dap_state
DAP_ROUTE_TOKEN_POLLnormalUn enrôlement est en cours : le déclencheur part sur la demande de jeton plutôt que sur le renouvellement.dap_cron_router
DAP_AUTO_TOKEN_RETRY_ARMEDà surveillerAprès un renouvellement échoué, une nouvelle demande de jeton est armée — elle réutilise le code d'appareil existant, sans intervention externe.handle_dap_resp
DAP_AUTO_REENROLL_ESCALATEproblèmeLa reprise automatique a échoué à son tour. Un nouvel enrôlement est nécessaire, avec validation par un administrateur de la plateforme : compter un délai externe.handle_dap_resp
DAP_MUTEX_RESETnormalLe verrou de renouvellement est libéré.reset_mutex_fn
DAP_MUTEX_FORCE_RESETà surveillerUn verrou resté bloqué plus de trente secondes a été forcé. Isolé, sans gravité ; répété, cela signale des renouvellements qui n'aboutissent pas.build_dap_refresh
DAP_RESTORE_OKnormalL'état d'authentification a été rechargé au démarrage. Un message par environnement.restore_dap_state
DAP_RESTORE_SKIPnormalAucun état à recharger — fichier absent ou vide. Normal sur un environnement pas encore enrôlé.restore_dap_state
DAP_PERSISTnormalL'état d'authentification a été écrit sur la passerelle.persist_dap
COPY_DAP_STATEnormalUn état d'authentification a été restauré manuellement. Le marqueur nomme le fichier visé.set dst filename
RETRY_ON_401à surveillerUn envoi a été refusé pour authentification : un renouvellement immédiat est déclenché. La trame concernée est perdue, les suivantes passent.trigger_refresh_on_401
WAN_BACK_UPnormalLa liaison est revenue : un renouvellement préventif est déclenché pour ne pas repartir avec un jeton périmé.handle_cg_metrics

Message de santé

Le compte rendu que la passerelle envoie à IoBase, toutes les heures et à chaque trame reçue : il porte son temps de fonctionnement, l'état de sa liaison et ses compteurs.

MarqueurNiveauSignificationÉmis par
HEALTH_SKIP_NO_HOSTnormalAucune plateforme configurée : l'état de santé n'est pas envoyé. Attendu sur une passerelle neuve, anormal ailleurs.build_health_msg
HEALTH_OUTnormalUn message de santé part. Le marqueur indique ce qui l'a déclenché — l'échéance horaire, ou une trame reçue.build_health_msg
HEALTH_RESPnormalLa plateforme a répondu au message de santé.handle_health_resp

Cockpit

Ce qui se passe quand quelqu'un utilise l'interface.

MarqueurNiveauSignificationÉmis par
COCKPIT_AUTH_INITnormalLes comptes du cockpit sont initialisés au démarrage.cockpit_auth_init
COCKPIT_LOGIN_OKnormalConnexion réussie.cockpit_login
COCKPIT_LOGIN_FAILà surveillerConnexion refusée. Répété, cela mérite un regard.cockpit_login
META_WRITEnormalLa configuration des balises a été enregistrée depuis le cockpit.post_meta
META_PARSEnormalLa configuration des balises a été relue en mémoire.parse_meta
META_SYNC_ACKnormalLa configuration a été synchronisée après un accusé de réception.persist_meta_on_ack
GLOBALS_APPLYnormalLes variables saisies au cockpit ont été appliquées.apply_globals
GLOBALS_WRITEnormalLes variables saisies ont été enregistrées sur la passerelle.merge_globals
BALISE_ADD_REQnormalUn ajout de capteur est demandé. Il va redéployer le flux et redémarrer toutes les chaînes.post_balise

Persistance

Ce que la passerelle écrit pour survivre à un redémarrage.

MarqueurNiveauSignificationÉmis par
BALISES_PERSISTnormalL'état des balises a été écrit.persist_balises
BALISES_RESTORE_OKnormalL'état des balises a été rechargé au démarrage.restore_balises
BALISES_RESTORE_SKIPnormalAucun état de balise à recharger.restore_balises
UPLINK_STATS_PERSISTnormalLes compteurs horaires ont été écrits.persist_uplink_stats
UPLINK_STATS_RESTORE_OKnormalLes compteurs horaires ont été rechargés : les graphiques repartent avec leur historique.restore_uplink_stats
UPLINK_STATS_RESTORE_SKIPnormalAucun compteur à recharger — les graphiques repartent de zéro et se remplissent au fil des trames.restore_uplink_stats
LIFE_RESTOREnormalLe compteur de vie a été rechargé.life_restore
AUDIT_ROTATEnormalRotation du journal des trames : le fichier qui vient d'atteindre 15 jours est supprimé.audit_rotate

Passerelle et liaison

L'état du matériel et de la connexion cellulaire.

MarqueurNiveauSignificationÉmis par
STARTUP_INITnormalLe flux a démarré et posé sa configuration initiale.startup_init
CG_LOGIN_OUTnormalConnexion à l'interface d'administration de la passerelle, pour lire ses métriques.build_cg_login
CG_LOGIN_OKnormalConnexion réussie.handle_cg_login
CG_LOGIN_KOproblèmeConnexion refusée : vérifier le mot de passe administrateur.handle_cg_login
CG_LOGIN_NOCOOKIEproblèmeConnexion acceptée mais sans session utilisable.handle_cg_login
CG_METRICS_OUTnormalRelevé des métriques de la passerelle.build_cg_metrics
CG_METRICS_INTERNETnormalÉtat de la connexion Internet relevé.handle_cg_metrics
CG_METRICS_DIAGnormalDiagnostic de l'interface cellulaire relevé — puissance du signal, technologie, opérateur.handle_cg_metrics
CG_METRICS_SIMnormalÉtat de la carte SIM relevé.handle_cg_metrics
CG_METRICS_AUTHà surveillerLe relevé a été refusé : la session d'administration a expiré.handle_cg_metrics
CG_METRICS_KOproblèmeLe relevé a échoué.handle_cg_metrics
FLOW_ERRORproblèmeErreur remontée par une requête sortante. Le marqueur nomme la source et le motif — EAI_NONAME désigne un nom de domaine qui ne résout plus, ECONNREFUSED un service qui refuse la connexion.log_flow_error

Déclaration d'un capteur

La passerelle réécrit son propre flux pour se déclarer un capteur.

MarqueurNiveauSignificationÉmis par
SD_LOGIN_OUTnormalConnexion à l'interface d'administration pour la déclaration.sd_login_req
SD_BACKUPnormalSauvegarde du flux avant réécriture.sd_backup
SD_DEPLOY_OUTnormalLe flux réécrit est envoyé. Toutes les chaînes vont redémarrer.sd_post_prep
SD_DEPLOY_RESPnormalRéponse au redéploiement.sd_done
SD_ABORTproblèmeLa déclaration a été interrompue. Le flux en service n'est pas modifié.sd_backup, sd_cookie_getflows

Interface du cockpit

L'installation des fichiers de l'interface sur la passerelle.

MarqueurNiveauSignificationÉmis par
WWW_INSTALLnormalUn fichier de l'interface a été installé.install app.js, install balises_meta.json, install index.html, install style.css
WWW_INSTALL_SKIPnormalFichier absent du répertoire de dépôt : rien à installer. Normal quand on ne met à jour qu'une partie des fichiers.install app.js, install balises_meta.json, install index.html, install style.css

Supervision externe

Les signaux envoyés vers l'extérieur pour qu'on sache, de loin, que la passerelle vit.

MarqueurNiveauSignificationÉmis par
SUPERVISION_PING_OUTnormalSignal de vie vers une sonde externe. Le chemin existe mais son déclencheur est débranché : ce marqueur ne doit pas apparaître.build_supervision_ping
HEARTBEAT_OUTnormalBattement périodique. Le chemin existe mais son déclencheur est débranché : ce marqueur ne doit pas apparaître.build_heartbeat