Aller au contenu

Un canary est en cours d'exécution et ne reçoit rien

Symptom

Les conteneurs du canary sont en cours d’exécution et sains, et chaque requête atteint toujours la version stable. Les métriques propres du canary restent à zéro, ce qui se lit facilement comme « la nouvelle version est correcte ».

Diagnose

  1. Le canary est-il réellement en cours d’exécution ? GET /api/v1/deployments/{name}/canary. Un canary qui est en attente ou en pause ne reçoit rien par conception.
  2. Quel poids est défini ? Un poids de zéro signifie que le canary existe et ne prend aucun trafic. C’est un état légitime — c’est ainsi qu’un canary est mis en scène — et c’est la cause la plus courante de ce symptôme.
  3. Les conteneurs du canary passent-ils leur sonde ? Seuls les conteneurs sains reçoivent du trafic.
  4. Le déploiement est-il routé du tout ? Les poids de canary sont appliqués au bord du routage, donc un déploiement sans nom d’hôte n’a nulle part où un poids peut prendre effet.
  5. Le changement a-t-il eu le temps ? Les changements de routage prennent un court moment pour se propager. Mesurez deux fois, à une minute d’intervanche, avant de conclure que rien ne s’est passé.
L'écran Canaries dans le tableau de bord Odysseus, listant chaque version canary avec sa part de trafic et son état de santé — la vue qui distingue un canary malsain d'un canary sain auquel rien n'est envoyé.

Resolve

  • Poids à zéro : augmentez-le. POST /api/v1/deployments/{name}/canary/start commence la mise à jour progressive ; les routes de promotion, de pause, de reprise et de retour en arrière sont ses autres commandes.
  • Canary malsain : corrigez le test ou l’image — le canary vous dit à quoi il sert.
  • Non routé : une mise à jour progressive pondérée requiert un nom d’hôte. Voir mises à jour progressives.

Prevent

Définissez le premier poids dans la même action qui démarre le canary, afin qu’un canary progressif ne soit jamais confondu avec un canary échoué, et surveillez les métriques du canary lui-même plutôt que le total du déploiement.