Sign inSign up

panitz/service-checker-amd64

By panitz

•Updated over 7 years ago

Lightweight service checker for microservices for amd64 platform.

Image
0

1.2K

panitz/service-checker-amd64 repository overview

⁠Service-Checker

Der Service-Checker ist ein leichtgewichtiges Programm zum periodischen Überprüfen von Diensten über das HTTP-Protokoll.

Features:

  • Definition beliebig vieler zu überprüfender Dienste
  • Definition der Prüfintervalle pro Dienst im [Cron-Format}(https://godoc.org/github.com/robfig/cron⁠)
  • Überprüfung der Antwort-Metadaten sowie des Antwort-Inhalts anhand von Validatoren
  • Benachrichtigung bei Statusänderung eines Dienstes per E-Mail an einen oder mehrere E-Mail-Empfänger

⁠Konfiguration

Der Dienst wird über Umgebungsvariablen konfiguriert, die beim Starten des Dienstes ausgewertet werden. Nach dem Ändern der Konfiguration ist ein Neustart des Dienstes notwendig.

⁠CHECK_STATUS_CHANGES_INTERVAL

Zeitspanne, nach der der Status der einzelnen Dienste auf Statusänderungen überprüft werden soll. Gibt es Änderungen seit der letzten Überprüfung, dann wird eine E-Mail mit dem aktuellen Status aller Dienste verschickt.

Standardwert: 2m

⁠CONFIG_FILE

Der komplette Pfad zur Konfigurationsdatei der zu überprüfenden Dienste (siehe: Konfigurationsdatei).

⁠CONNECTION_STRING

Der Connection-String für die Datenbank.

⁠LOG_LEVEL

Das Level der Log-Ausgaben. Mögliche Werte: PANIC, FATAL, ERROR, WARN, INFO, DEBUG. Default-Wert: INFO

⁠HTTP_ADDRESS

Die TCP Adresse, auf der die API erreichbar sein soll.

Standardwert: :7900

⁠HTTP_CRT_FILE

Der komplette Pfad zur CRT-Datei für die SSL-Verschlüsselung.

⁠HTTP_KEY_FILE

Der komplette Pfad zur KEY-Datei für die SSL-Verschlüsselung.

⁠MAIL_FROM

Die E-Mail-Adresse, die als Von-Adresse beim Versand von E-Mails verwendet wird.

⁠MAIL_TO

Die E-Mail-Adresse(n), an die Statusmeldungen versendet werden. Es können mehrere E-Mail-Adressen angegeben werden. Diese müssen dann mit Komma getrennt werden.

⁠MAIL_HOST

Die Adresse des E-Mail-Servers.

⁠MAIL_PORT

Der Port des E-Mail-Servers.

⁠MAIL_USERNAME

Der Benutzername für den Zugriff auf den E-Mail-Server.

⁠MAIL_PASSWORD

Das Passwort für den Zugriff auf den E-Mail-Server.

⁠MAIL_SERVICE_CHECKER_LABEL

Die Bezeichnung dieser Service-Checker-Instanz. Wird in E-Mails verwendet.

Standardwert: SERVICE_CHECKER

⁠SPEC_DB_VACUUM

Gibt an, zu welchen Zeiten die Datenbank bereinigt werden soll.

Standardwert: 59 23 * * * *

⁠SPEC_STATUS_MAIL

Gibt an, zu welchen Zeiten eine regelmässige E-Mail mit dem aktuellen Status gesendet werden soll. Wird hier nichts angegeben, dann werden keine regelmäßige Statsmeldungen gesendet. Achtung: Die Statusmeldungen bei Änderungen sind hiervon nicht betroffen!

Standardwert: 30 7 * * * *

⁠Konfigurationsdatei

Die einzelnen zu überprüfenden Dienste werden in einer Konfigurationsdatei im YAML-Format definiert. Beim Start des Dienstes wird hierfür die Umgebungsvariable CONFIG_FILE ausgewertet, die den Pfad zur Konfigurationsdatei enthalten muss.

version: 1
services:
  - id: API1
    label: Meine tolle API
    description: Diese API stellt verschiedene Funktionen zur Verfügung.
    endpoint: https://api.example.com/api/status
    schedule: "0 */1 * * * *"
    validation:
      response:
        expectations:
          - field: statusCode
            operator: "=="
            value: 200
      content:
        type: "application/json"
        expectations:
          - field: process.name
            operator: "eq"
            value: api-server
          - field: process.version
            operator: "semver"
            value: ">=1.6.x"
  - id: group-example
    label: Gruppe von Diensten
    description: Überprüft eine Gruppe von Diensten, von denen mindestens 2 erreichbar sein müssen
    endpoints:
      - https://localhost:7070/api/status
      - https://localhost:7071/api/status
      - https://localhost:7900/api/status
    requiredAvailable: 2
    schedule: "*/15 * * * * *"
    recipients:
      - [email protected]
      - [email protected]
    validation:
      content:
        type: "application/json"
        expectations:
          - field: "process.name"
            operator: "=="
            value: "time-server"
⁠Validierung (Expectations)

Es können Felder der folgenden Strukturen validiert werden:

  • Response
  • Inhalt (JSON, HTML)

Geben Sie hierfür in dem entsprechenden Bereich die erwarteten Werte (Expectations) an.

⁠Response

In diesem Bereich werden die Werte angegeben, die in der Antwort des Servers überprüft werden sollen. Es können die folgenden Felder überprüft werden:

  • status: Repräsentation der HTTP Status als Text, z.B. 200 OK
  • statusCode: Der HTTP Status als Zahlenwert, z.B. 200
⁠Content

In diesem Bereich werden die Werte angegeben, die im Inhalt der Antwort des Servers überprüft werden sollen. Die Angabe des Feldes type ist zwingend erforderlich. Geben Sie hier den MIME-Type des Inhalts an. Als Feld wird hier der Pfad zu dem zu überprüfenden Feld angegeben, z.B. name, process.version.

⁠Validatoren

Es stehen folgende Validatoren zur Verfügung:

OperatorAliasGültigkeitsbereichBemerkungen
eq==Response, ContentÜberprüft die Werte auf Gleichheit.
in Response: statusCodeÜberprüft, ob der StatusCode innerhalb eines Wertebereiches liegt, z.B. 200-201
<, <=, >, >=JSON-ContentÜberprüft, ob die genannte Kondition wahr ist
lengthJSON-ContentÜberprüft die Länge des Elementes
max-server-time-diffJSON-ContentÜberprüft die Serverzeit mit der lokalen Zeit.
semverContentÜberprüft eine Versionsnummer nach dem Semantic Versioning Schema. Die Syntax wird hier⁠ beschrieben.

Tag summary

Content type

Image

Digest

Size

17 MB

Last updated

over 7 years ago

docker pull panitz/service-checker-amd64:v0.10.0