Zum Hauptinhalt springen
Version: Nächste

Statusprüfung im Workflow

Inoffizielle Beta-Übersetzung

Diese Seite wurde von PageTurner AI übersetzt (Beta). Nicht offiziell vom Projekt unterstützt. Fehler gefunden? Problem melden →

In Workflow kann die Statusprüfung bestimmte Operationen auf externen Systemen wie Anwendungssystemen und Monitoring-Systemen ausführen, um deren Status abzufragen. Sie bricht den Workflow automatisch ab, wenn das System als fehlerhaft erkannt wird. Dieses Konzept ähnelt den Container Probes in Kubernetes. Dieser Artikel beschreibt, wie Sie Statusprüfungen in Workflow mittels YAML-Dateien durchführen.

Hinweis

Chaos Mesh unterstützt derzeit keine Erstellung von StatusCheck-Nodes im Chaos Dashboard. Daher können Sie StatusCheck-Nodes momentan nur per YAML konfigurieren.

Statusprüfungstyp

Chaos Mesh unterstützt für Statusprüfungen derzeit nur den HTTP-Typ.

Einen HTTP-StatusCheck-Node definieren

Ein StatusCheck-Node sendet GET- oder POST-HTTP-Anfragen an eine spezifische URL mit benutzerdefinierten Headern und Body. Das Ergebnis wird anhand der Kriterien im criteria-Feld bestimmt.

- 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'

In der Konfiguration sehen Sie einen StatusCheck-Node vom Typ HTTP. Das deadline-Feld begrenzt die Ausführungsdauer auf maximal 20 Sekunden. Das mode-Feld legt kontinuierliche Statusprüfungen fest, intervalSeconds definiert ein Wiederholungsintervall von 1 Sekunde, und timeoutSeconds setzt das Timeout pro Ausführung.

Beim Erreichen dieses StatusCheck-Nodes wird die Statusprüfung sekündlich ausgeführt. Dabei sendet sie per GET-Methode eine HTTP-Anfrage an http://123.123.123.123. Die Ausführung gilt als erfolgreich, wenn innerhalb von 1 Sekunde eine Antwort mit Statuscode 200 eintrifft, andernfalls als fehlgeschlagen.

Ergebnisse der Statusprüfung

Jede Ausführung der Statusprüfung liefert ein execution result, entweder Success oder Failure. Da ein einzelnes execution result aufgrund von Schwankungen in bestimmten Bedingungen die tatsächliche Systemlage nicht widerspiegeln kann, basiert das finale status check result nicht auf einem einzelnen execution result.

Der StatusCheck-Node verfügt über zwei Schwellwertfelder: failureThreshold und successThreshold:

  • Wenn die Anzahl aufeinanderfolgender fehlgeschlagener execution results den failureThreshold überschreitet, wird das status check result als Failure betrachtet.

  • Bei mehr als successThreshold aufeinanderfolgenden erfolgreichen execution results gilt das status check result als 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'

In dieser Konfiguration führt der StatusCheck-Node kontinuierliche Prüfungen durch:

  • Wenn das execution result für 1 oder mehr aufeinanderfolgende Male Success ist, wird das status check result als Success betrachtet.

  • Wenn das execution result drei oder mehr aufeinanderfolgende Male Failure ist, gilt das status check result als Failure.

Hinweis

In den folgenden Abschnitten bezieht sich status check fails darauf, dass das status check result Failure ist – nicht darauf, dass ein einzelnes execution result Failure ist.

Workflow abbrechen bei erfolgloser Statusprüfung

Hinweis

Der StatusCheck-Node unterstützt nur das automatische Abbrechen des Workflows bei erfolgloser Statusprüfung. Pausieren oder Fortsetzen des Workflows ist nicht möglich.

Bei Chaos-Experimenten kann das Anwendungssystem unhealthy werden. Diese Funktion ermöglicht durch schnelles Beenden der Experimente die Wiederherstellung des Systems. Setzen Sie das Feld abortWithStatusCheck im StatusCheck-Knoten auf true, um den Workflow bei fehlgeschlagener Statusprüfung automatisch abbrechen zu lassen.

- 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'

Die Statusprüfung gilt als erfolglos, wenn eine dieser Bedingungen erfüllt ist:

  • Die Statusprüfung schlägt fehl.

  • Wenn das Timeout des StatusCheck-Knotens überschritten wird und das status check result nicht erfolgreich ist. Beispiel: successThreshold ist 1, failureThreshold ist 3, und beim Timeout gibt es 2 aufeinanderfolgende Fehler und 0 Erfolge. Obwohl die Bedingung für "Statusprüfung fehlgeschlagen" nicht erfüllt ist, wird dies ebenfalls als nicht erfolgreich gewertet.

Statusprüfungsmodus

Kontinuierliche Statusprüfung

Wenn das Feld mode auf Continuous gesetzt ist, führt dieser StatusCheck-Knoten kontinuierlich Statusprüfungen durch, bis das Knoten-Timeout eintritt oder die Statusprüfung fehlschlägt.

- 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'

In der Konfiguration führt der StatusCheck-Knoten jede Sekunde Statusprüfungen durch und beendet sich, wenn eine der folgenden Bedingungen eintritt:

  • Die Statusprüfung schlägt fehl (d. h. 3 oder mehr aufeinanderfolgende fehlgeschlagene execution results)

  • Das Knoten-Timeout von 20 Sekunden wird ausgelöst

Einmalige Statusprüfung

Wenn das Feld mode auf Synchronous gesetzt ist, beendet sich dieser StatusCheck-Knoten sofort, wenn das status check result klar ist oder das Knoten-Timeout eintritt.

- 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'

In der Konfiguration führt der StatusCheck-Knoten jede Sekunde Statusprüfungen durch und beendet sich, wenn eine der folgenden Bedingungen eintritt:

  • Die Statusprüfung ist erfolgreich, d.h. 1 oder mehr aufeinanderfolgende erfolgreiche execution results

  • Die Statusprüfung schlägt fehl (d. h. 3 oder mehr aufeinanderfolgende fehlgeschlagene execution results)

  • Das Knoten-Timeout von 20 Sekunden wird ausgelöst

StatusCheck vs. HTTP-Anfrage-Task

Gemeinsamkeiten:

  • Der StatusCheck-Knoten und der HTTP Request Task-Knoten (der Task-Knoten, der HTTP-Anfragen ausführt) sind Workflow-Knotentypen.

  • Der StatusCheck-Knoten und der HTTP Request Task-Knoten können über HTTP-Anfragen Informationen von externen Systemen abrufen.

Unterschiede:

  • Der HTTP Request Task-Knoten kann nur eine einzelne HTTP-Anfrage senden, nicht kontinuierlich

  • Der HTTP Request Task-Knoten kann den Workflow-Status bei fehlgeschlagener Anfrage nicht beeinflussen (z.B. Workflow-Abbruch)

Feldbeschreibung

Weitere Informationen zu Workflow und Templates finden Sie unter Chaos Mesh Workflow erstellen.

StatusCheck-Feldbeschreibung

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

HTTPStatusCheck-Feldbeschreibung

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

HTTPCriteria-Feldbeschreibung

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