Aller au contenu principal
Version : Suivant

Vérification d'état dans les Workflows

Traduction Bêta Non Officielle

Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →

Dans les Workflows, la vérification d'état permet d'exécuter des opérations spécifiques sur des systèmes externes comme des applications ou des systèmes de monitoring pour obtenir leur statut, et d'interrompre automatiquement le Workflow si le système est détecté comme non fonctionnel. Ce concept est similaire aux Container Probes dans Kubernetes. Cet article explique comment configurer des vérifications d'état dans les Workflows à l'aide de fichiers YAML.

note

Chaos Mesh ne prend pas encore en charge la création de nœuds StatusCheck dans le Chaos Dashboard. Pour le moment, vous devez utiliser des fichiers YAML pour créer des nœuds StatusCheck.

Types de vérification d'état

Chaos Mesh ne prend actuellement en charge que le type HTTP pour les vérifications d'état.

Configurer un nœud StatusCheck de type HTTP

Un nœud StatusCheck envoie des requêtes HTTP GET ou POST à une URL spécifique, avec des en-têtes et corps personnalisés, puis détermine le résultat en fonction des conditions définies dans le champ criteria.

- name: workflow-status-check
templateType: StatusCheck
deadline: 20s
statusCheck:
mode: Continuous
type: HTTP
intervalSeconds: 1
timeoutSeconds: 1
http:
url: http://123.123.123.123
method: GET
criteria:
statusCode: '200'

Dans la configuration, un nœud StatusCheck de type HTTP inclut le champ deadline limitant son exécution à 20 secondes maximum. Le champ mode indique une exécution continue des vérifications, intervalSeconds définit un intervalle de répétition d'une seconde, et timeoutSeconds spécifie le timeout de chaque exécution.

Lorsque le Workflow atteint ce nœud StatusCheck, la vérification s'exécute chaque seconde. Elle envoie une requête GET à l'URL http://123.123.123.123. Si la réponse arrive dans la seconde avec un code statut 200, l'exécution réussit ; sinon, elle échoue.

Résultats des vérifications d'état

Chaque exécution de la vérification d'état produit un execution result, soit Success ou Failure. Un seul execution result ne reflétant pas nécessairement l'état réel du système (en raison de fluctuations ponctuelles), le status check result final n'est pas déterminé sur la base d'un seul execution result.

Le nœud StatusCheck comporte deux champs clés : failureThreshold et successThreshold :

  • Si le nombre de execution results consécutifs ayant échoué dépasse failureThreshold, le status check result est considéré comme Failure.

  • Si le nombre de execution results réussis consécutifs dépasse successThreshold, le status check result est considéré comme Success.

- name: workflow-status-check
templateType: StatusCheck
deadline: 20s
statusCheck:
mode: Continuous
type: HTTP
successThreshold: 1
failureThreshold: 3
http:
url: http://123.123.123.123
method: GET
criteria:
statusCode: '200'

Dans notre configuration, le nœud StatusCheck exécute des vérifications en continu :

  • Quand le execution result est Success pour 1 occurrence ou plus consécutives, le status check result est considéré comme un Success.

  • Lorsque le execution result est Failure pour 3 fois consécutives ou plus, le status check result est considéré comme un Failure.

note

Dans les sections suivantes, l'expression status check fails fait référence au fait que le status check result est Failure, et non à un simple execution result qui est Failure.

Interruption automatique du Workflow en cas d'échec

note

Le nœud StatusCheck ne prend en charge que l'interruption automatique des workflows en cas d'échec. Il ne permet pas de suspendre ou reprendre un workflow.

Lors d'expériences de chaos, un système applicatif peut devenir unhealthy. Cette fonctionnalité permet de restaurer le système en terminant rapidement les expériences. Pour activer l'interruption automatique du workflow en cas d'échec de vérification d'état, positionnez le champ abortWithStatusCheck à true sur le nœud StatusCheck.

- name: workflow-status-check
templateType: StatusCheck
deadline: 20s
abortWithStatusCheck: true
statusCheck:
mode: Continuous
type: HTTP
http:
url: http://123.123.123.123
method: GET
criteria:
statusCode: '200'

La vérification d'état est considérée comme infructueuse dans ces cas :

  • La vérification d'état échoue.

  • Lorsque le délai d'attente du nœud StatusCheck est dépassé et que le status check result n'est pas un succès. Par exemple, si successThreshold est 1, failureThreshold est 3, et qu'au moment du dépassement de délai, on compte 2 échecs consécutifs et 0 succès. Bien que cela ne remplisse pas la condition pour un "échec de vérification d'état", cette situation est également considérée comme infructueuse.

Mode de vérification d'état

Vérification continue

Lorsque le champ mode est défini sur Continuous, cela signifie que le nœud StatusCheck exécutera des vérifications d'état en continu jusqu'à expiration du délai du nœud ou échec de la vérification.

- name: workflow-status-check
templateType: StatusCheck
deadline: 20s
statusCheck:
mode: Continuous
type: HTTP
intervalSeconds: 1
successThreshold: 1
failureThreshold: 3
http:
url: http://123.123.123.123
method: GET
criteria:
statusCode: '200'

Dans cette configuration, le nœud StatusCheck effectuera des vérifications chaque seconde et s'arrêtera si l'une des conditions suivantes est remplie :

  • La vérification d'état échoue, c'est-à-dire 3 execution results en échec consécutifs ou plus

  • Déclenchement du délai d'expiration du nœud après 20 secondes

Vérification ponctuelle

Lorsque le champ mode est défini sur Synchronous, cela signifie que le nœud StatusCheck s'arrêtera immédiatement dès que le status check result est déterminé ou lorsque le délai du nœud expire.

- name: workflow-status-check
templateType: StatusCheck
deadline: 20s
statusCheck:
mode: Synchronous
type: HTTP
intervalSeconds: 1
successThreshold: 1
failureThreshold: 3
http:
url: http://123.123.123.123
method: GET
criteria:
statusCode: '200'

Dans cette configuration, le nœud StatusCheck effectuera des vérifications chaque seconde et s'arrêtera si l'une des conditions suivantes est remplie :

  • La vérification d'état réussit, c'est-à-dire 1 ou plusieurs execution results consécutifs réussis

  • La vérification d'état échoue, c'est-à-dire 3 execution results en échec consécutifs ou plus

  • Déclenchement du délai d'expiration du nœud après 20 secondes

Comparaison StatusCheck vs Tâche de requête HTTP

Points communs :

  • Le nœud StatusCheck et le nœud HTTP Request Task (le nœud Task qui exécute les requêtes HTTP) sont des types de nœuds de Workflow.

  • Le nœud StatusCheck et le nœud HTTP Request Task peuvent récupérer des informations sur des systèmes externes via des requêtes HTTP.

Différences :

  • Le nœud HTTP Request Task ne peut envoyer qu'une seule requête HTTP et ne peut pas effectuer d'envois continus.

  • Le nœud HTTP Request Task ne peut pas influencer l'état du workflow en cas d'échec de la requête, comme interrompre le workflow.

Description des champs

Pour plus d'informations sur Workflow et Template, consultez Créer un Workflow Chaos Mesh.

Description des champs de StatusCheck

ParameterTypeDescriptionDefault valueRequiredExample
modestringThe execution mode of the status check. Support value: Synchronous/Continuous.NoneYesSynchronous
typestringThe type of the status check. Support value: HTTP.HTTPYesHTTP
durationstringThe duration of the whole status check if the number of failed execution does not exceed the failureThreshold. It is available in both Synchronous and Continuous modes.NoneNo100s
timeoutSecondsintThe timeout seconds when the status check fails.1No1
intervalSecondsintDefines how often (in seconds) to perform an execution of status check.1No1
failureThresholdintThe minimum consecutive failure for the status check to be considered failed.3No3
successThresholdintThe minimum consecutive successes for the status check to be considered successful.1No1
recordsHistoryLimitintThe number of records to retain.100No100
httpHTTPStatusCheckConfigure the detail of the HTTP request to execute.NoneNo

Description des champs de HTTPStatusCheck

ParameterTypeDescriptionDefault valueRequiredExample
urlstringThe URL of the HTTP request.NoneYeshttp://123.123.123.123
methodstringThe method of the HTTP request. Support value: GET/POST.GETNoGET
headersmap[string][]stringThe headers of the HTTP request.NoneNo
bodystringThe body of the HTTP request.NoneNo{"a":"b"}
criteriaHTTPCriteriaDefines how to determine the result of the HTTP StatusCheck.NoneYes

Description des champs de HTTPCriteria

ParameterTypeDescriptionDefault valueRequiredExample
statusCodestringThe expected http status code for the request. A statusCode string could be a single code (e.g. 200), or an inclusive range (e.g. 200-400, both 200 and 400 are included).NoneYes200