Sommaire
Pourquoi l’astreinte a besoin d’une chaîne lecture seule
Sans ordre fixe entre status et doctor, deux opérateurs capturent des JSON incomparables : l’un a rechargé un service entre-temps, l’autre lit encore l’ancienne liaison réseau. Sur Mac mutualisés, la dérive de OPENCLAW_HOME entre shells et LaunchAgents suffit à expliquer des diagnostics contradictoires alors que les binaires concordent. Les Webhooks multipliquent les fils d’alerte pour un même incident amont. La réponse n’est pas d’ajouter des correctifs nocturnes non versionnés, mais d’exporter une chaîne JSON identique, de trier les journaux dans des tranches nommées, puis de fusionner une synthèse avant le chat — en documentant des pages statiques (blog, aide, forfaits) plutôt que des liens porteurs de jeton ou de cookie de session.
- Correctifs muables sous stress. Modifier du YAML sans baseline JSON coûte cher en rollback sur pool partagé.
- Dérive invisible de HOME. Deux plist avec des
OPENCLAW_HOMEdifférents lisent des arbres de config distincts. - Tempête de pagers. Chaque passerelle pousse son fil d’échec Webhook ; la direction voit trois alertes pour une panne unique.
Plusieurs OPENCLAW_HOME : instances et étiquetage
Traitez chaque charge passerelle comme un arbre raciné dédié : exportez OPENCLAW_HOME dans le plist LaunchAgent (ou équivalent), puis répliquez la même disposition relative sur chaque nœud MeshMac — par exemple des voisins config, state, logs. Notez mesh_node_id à côté du chemin de home dans l’outil d’incident afin que les fichiers JSON chaînés ne croisent jamais deux locataires. Pour l’inspection distante avec tunnel SSH et la fusion des sorties doctor, calquez-vous sur le flux documenté dans passerelle hors loopback, Bearer et SSH LocalForward : ports fixes, commandes lecture seule identiques à chaque session.
| Approche | Quand elle convient | Risque si mal appliquée |
|---|---|---|
OPENCLAW_HOME séparé par locataire ou couloir |
Isolation à prouver sur matériel partagé | Oubli du home exporté : mauvais paquet doctor collé dans le chat |
| Home unique et profils | Lab mono-produit | Fragile dès qu’une seconde ligne produit rejoint le pool |
| Santé distante via tunnels SSH | Ports LocalForward standardisés par ingénieur |
Instructions de port obsolètes perçues comme des « URL de session » ; préférer l’aide publique et les chemins statiques |
Tranches de journaux homogènes par home
Choisissez un répertoire documenté par home, par exemple ${OPENCLAW_HOME}/logs/gateway et un voisin webhook-digest.jsonl ; refusez les chemins sous /tmp ou le dossier Téléchargements d’un utilisateur du pool. Pendant l’incident, limitez-vous à tail ou rg dans ces tranches, archivez des bundles gzip étiquetés par identifiant de ticket, en UTC. L’alignement avec logrotate et le trio opérationnel est détaillé dans journaux passerelle multi-nœuds et fusion des échecs Webhook afin que chaque Mac conserve des volumes comparables entre générations.
export OPENCLAW_HOME=/srv/openclaw/tenant-a
openclaw gateway logs --since 45m | rg 'webhook|verify|429|5[0-9][0-9]' | tee "gw-logs-${MESH_NODE_ID}.txt"
Synthèse Webhook fusionnée
Les récepteurs Webhook doivent émettre des lignes structurées incluant delivery_id, nom de route, statut HTTP et compteur de tentatives. Pour l’astreinte : fenêtre commune quarante-cinq minutes sur chaque nœud, normalisation des identifiants, déduplication agressive, plafond d’affichage (par exemple vingt lignes), puis un seul bloc markdown dans le canal — pas trois fils parallèles. L’automatisation qui publie ce digest ne doit lire que les tranches et exports JSON ; refusez-lui le rechargement des passerelles sauf rôle bris de glace distinct.
Jetons au moindre privilège
Attribuez au bot de synthèse un identifiant qui peut poster sur un seul canal ou statut API, pas des clés d’administration cluster. Faites tourner ce secret sur son propre calendrier, stockez-le dans le coffre de plateforme lié à la réservation MeshMac, et mappez chaque secret à exactement un couloir OPENCLAW_HOME. Pour séparer jetons d’ingestion et jetons sortants chat, suivez la matrice de secrets OpenClaw au moindre privilège sur les nœuds MeshMac. N’intégrez jamais de chaînes Bearer dans des URL de runbook partageables ; gardez la procédure sur des pages publiques stables.
Checklist minimale reproductible (astreinte)
- Homes confirmés. Affichez
echo $OPENCLAW_HOMEdeux fois dans le shell qui capturera le JSON. - Instantané status.
openclaw gateway status --json— conservezbuild_id, adresses liées, uptime par nœud. - Instantané doctor.
openclaw gateway doctor --jsonjuste après, sans flags mutants. - Tranche journaux. Seulement les chemins gateway et digest convenus ; horodatages UTC ; extrait gzip joint au ticket.
- Fusion Webhook. Dédup par
delivery_id, tri par première apparition, lignes plafonnées, un bloc récapitulatif. - Audit jeton. Vérifiez que l’automatisation a utilisé le rôle étroit, pas un partage d’admin.
- Passation. Liez les trois JSON, le hachage ou identifiant du digest fusionné et les actions de prochaine garde — sans URL liées à une session.
- Ordre de chaîne : status avant doctor pour que le contexte de configuration explique les avertissements.
- Fenêtre : quarante-cinq minutes de logs plus quatorze générations archivées couvrent la plupart des rafales sur petits SSD pool.
- Clé de dédup : identifiant de livraison amont plus chemin HTTP normalisé plus classe de statut HTTP.
Synthèse
Isolez les couloirs OPENCLAW_HOME, enchaînez status et doctor en lecture seule, ne lisez que les tranches de journaux convenues, fusionnez une synthèse Webhook, limitez les jetons à la publication du digest. Pages sans compte : blog, aide, accueil, forfaits.
Des contrôles santé calmes vers un achat plus rapide
Lorsque chaque passerelle exporte la même chaîne lecture seule, l’astreinte cesse de débattre de chemins fantômes et récupère des minutes pour livrer. Parcourez les forfaits publics, la documentation d’aide et l’accueil pour choisir taille de pool et région adaptés à votre maillage multi-nœuds avant le prochain exercice d’incident.