Dies ist aufgrund der Definition des Gesunden schwer umzusetzen
Sie haben hier Ihre eigene Frage beantwortet. Die Definition eines Gesundheitschecks wird variieren, denn was gesund ist, variiert. Es hängt auch davon ab, was den Gesundheitscheck ausgibt.
Eine gute Frage, die Sie sich stellen sollten, lautet: "Funktioniert der überprüfte Dienst aus Sicht des Fragestellers wie erwartet?" Wenn Sie es sind, müssen Sie es definieren. Wenn es sich um ein anderes Team / eine andere Dienstleistung handelt, müssen Sie den Standard / die Spezifikation für Gesundheitsprüfungen ermitteln.
Wahrscheinlich haben Sie in einer großen Organisation einen Standard dafür, was ein Gesundheitscheck tun sollte. Finde das heraus.
Insbesondere hier bedeutet Ihr Webapp-Beispiel, dass es nicht fehlerfrei zurückkehren sollte, da die Webapp nicht fehlerfrei ist. Aber vielleicht würde Ihre Definition von "gesund" dies als "ok" beinhalten. Dies ist Teil der obigen Anforderungsdiskussion (auch wenn es sich nur um Ihren eigenen Code handelt).
Meine Empfehlung unter der Annahme, dass es nicht anderswo angegeben ist, wäre, eine Art Statuscode zu haben, der mit verschiedenen Fehlern assoziiert ist. Wenn Sie die Webanwendung abfragen, wird möglicherweise ein Fehler zurückgegeben, der besagt, dass "abhängiger Dienst tot ist", sodass Ihr Client (oder was auch immer den Healthcheck durchführt) den Grund für den Tod des Clients erkennen kann.
Für die bearbeiteten Fragen:
Ist es gut genug, den Dienst als fehlerfrei zu betrachten, wenn das Orchestrierungssystem meldet, dass der Task ausgeführt wird?
Nein, nur weil ein Prozess ausgeführt wird, heißt das nicht, dass er nicht hängt, überhaupt nicht funktioniert oder eine Vielzahl anderer Möglichkeiten bietet.
Oder sollten wir jeden Dienst manuell anpingen?
Dies kann je nach Umfang Ihrer Anwendungsfunktionalität funktionieren. Wenn die Überprüfung des Dienstes auf "Bist du am Leben?" Ping, dann ist dies möglicherweise alles, was erforderlich ist. Aber wenn der Dienst leicht "lebendig und ansprechbar, aber nicht wirklich funktionsfähig" sein könnte, müssen Sie möglicherweise auch andere Dinge überprüfen.
Oder sollte es weiter gehen und versuchen, sicherzustellen, dass die Web-App das tut, was sie tun soll, wie eine Webseite anzuzeigen?
Ihr Healthcheck muss sicherstellen, dass die erwartete erforderliche Funktionalität wie erwartet funktioniert.
Wenn Ihr App returns „gesund“ und kann nicht tun , was es tun muß, dann kann man auch von der gesamten Health loszuwerden , wie es Fehlalarme geben wird (nicht zu verwechseln die erwähnen Teufel aus Menschen , die versuchen , das Problem zu debuggen - ‚hey Unser Webserver ist fehlerfrei. Warum wird die Seite nicht angezeigt? ').
Muss der Healthcheck auch überprüfen, ob einige abhängige Dienste ebenfalls ausgeführt werden? Wie eine Datenbank oder das Orchestrierungssystem selbst. Oder liegt das in der Verantwortung eines anderen Gesundheitschecks?
Das hängt etwas davon ab. Wenn Ihr Dienst von einem anderen Dienst abhängt, sollte sich die Art dieser Interaktion in den API- / Netzwerkaufrufen widerspiegeln, die an ihn in Ihrer App gesendet und in den Integritätscheck integriert werden.
Zum Beispiel muss ein Webserver, der aus einer Datenbank liest, Statusinformationen über die darin integrierte Datenbank haben. Andernfalls stürzt die Webanwendung einfach ab, wenn die API-Aufrufe fehlschlagen. Sie können diese Aufrufe einfach modifizieren, um sie in Ihren Gesundheitscheck aufzunehmen.
Wenn Ihr Dienst jedoch Ereignisse an Benutzer sendet, die ohne Validierung zuhören, ist es für die Funktionalität Ihrer App weniger wichtig, dass die Benutzer am Leben sind. "Gesund" für Ihre App bedeutet, dass die Nachrichten gesendet und nicht empfangen werden.
Grundsätzlich ist es sinnvoll, wenn Ihr Dienst mit anderen Diensten sprechen und deren Zustand überprüfen muss, mindestens eine grundlegende Überprüfung für den Gesundheitscheck Ihres Dienstes durchzuführen. Dies sollte in Anbetracht dessen, was ich gerade gesagt habe, begrifflich Sinn machen, da Ihre Anwendung dies bereits handhaben wird (oder zufällig abstürzt, denke ich).
Und zu guter Letzt, wenn einer der abhängigen Dienste tot ist und die Web-App anschließend ausfällt, sollte die Web-App einen schlechten Gesundheitszustand melden, oder ist es ein guter Gesundheitszustand, weil es nicht der Fehler der Web-Apps ist?
Dies ist im Grunde oben beantwortet. Meine Empfehlung wäre, dass Ihr Gesundheitscheck einen Code / eine Nachricht / alles, was diese Informationen enthält, zurückgibt. Beide Informationen sind wichtig: Der abhängige Dienst, den Ihr Dienst benötigt, ist nicht mehr verfügbar und Ihr Dienst funktioniert daher nicht wie erwartet.