Vérification d'état dans les Workflows
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.
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 resultsconsécutifs ayant échoué dépassefailureThreshold, lestatus check resultest considéré commeFailure. -
Si le nombre de
execution resultsréussis consécutifs dépassesuccessThreshold, lestatus check resultest considéré commeSuccess.
- 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 resultestSuccesspour 1 occurrence ou plus consécutives, lestatus check resultest considéré comme unSuccess. -
Lorsque le
execution resultestFailurepour 3 fois consécutives ou plus, lestatus check resultest considéré comme unFailure.
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
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
StatusCheckest dépassé et que lestatus check resultn'est pas un succès. Par exemple, sisuccessThresholdest 1,failureThresholdest 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 resultsen é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 resultsconsécutifs réussis -
La vérification d'état échoue, c'est-à-dire 3
execution resultsen é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
StatusChecket le nœudHTTP Request Task(le nœudTaskqui exécute les requêtes HTTP) sont des types de nœuds de Workflow. -
Le nœud
StatusChecket le nœudHTTP Request Taskpeuvent récupérer des informations sur des systèmes externes via des requêtes HTTP.
Différences :
-
Le nœud
HTTP Request Taskne peut envoyer qu'une seule requête HTTP et ne peut pas effectuer d'envois continus. -
Le nœud
HTTP Request Taskne 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
| Parameter | Type | Description | Default value | Required | Example |
|---|---|---|---|---|---|
| mode | string | The execution mode of the status check. Support value: Synchronous/Continuous. | None | Yes | Synchronous |
| type | string | The type of the status check. Support value: HTTP. | HTTP | Yes | HTTP |
| duration | string | The 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. | None | No | 100s |
| timeoutSeconds | int | The timeout seconds when the status check fails. | 1 | No | 1 |
| intervalSeconds | int | Defines how often (in seconds) to perform an execution of status check. | 1 | No | 1 |
| failureThreshold | int | The minimum consecutive failure for the status check to be considered failed. | 3 | No | 3 |
| successThreshold | int | The minimum consecutive successes for the status check to be considered successful. | 1 | No | 1 |
| recordsHistoryLimit | int | The number of records to retain. | 100 | No | 100 |
| http | HTTPStatusCheck | Configure the detail of the HTTP request to execute. | None | No |
Description des champs de HTTPStatusCheck
| Parameter | Type | Description | Default value | Required | Example |
|---|---|---|---|---|---|
| url | string | The URL of the HTTP request. | None | Yes | http://123.123.123.123 |
| method | string | The method of the HTTP request. Support value: GET/POST. | GET | No | GET |
| headers | map[string][]string | The headers of the HTTP request. | None | No | |
| body | string | The body of the HTTP request. | None | No | {"a":"b"} |
| criteria | HTTPCriteria | Defines how to determine the result of the HTTP StatusCheck. | None | Yes |
Description des champs de HTTPCriteria
| Parameter | Type | Description | Default value | Required | Example |
|---|---|---|---|---|---|
| statusCode | string | The 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). | None | Yes | 200 |