Repeat Snapshots

Übersicht

Diese Seite beschreibt die exakten JSON-Nachrichten, die für das Konsistenzmodell der Health-Synchronisierung Repeat Snapshots gesendet werden können.

JSON-Eigenschaft: "health"

Gesundheitsdaten können über die "health" Eigenschaft des gemeinsamen JSON-Objekts an die SUSE Observability Receiver API gesendet werden.

  • Beispiel für Health-repeat_snapshots-JSON

{
   "apiKey":"<STACKSTATE_RECEIVER_API_KEY>",
   "collection_timestamp":1585818978,
   "internalHostname":"lnx-343242.srv.stackstate.com",
   "health":[
      {
        "consistency_model": "REPEAT_SNAPSHOTS",
        "start_snapshot": {
          "repeat_interval_s": 50
          //"expiry_interval_s": 200 Optional
        },
        "stop_snapshot": {},
        "stream": {
          "urn": "urn:health:sourceId:streamId"
          //"sub_stream_id": "subStreamId" Optional
        },
        "check_states": [
          {
            "checkStateId": "checkStateId1",
            "message": "Server Running out of disk space",
            "health": "Deviating",
            "topologyElementIdentifier": "server-1",
            "name": "Disk Usage"
          },
          {
            "checkStateId": "checkStateId2",
            "message": "Provisioning failed. [Learn more](https://www.any-link.com)",
            "health": "critical",
            "topologyElementIdentifier": "server-2",
            "name": "Health monitor"
          }
        ]
      }
   ]
}

Jede Daten-Nutzlast für Health Repeat Snapshots enthält die folgenden Details:

  • start_snapshot - Optional. Ein Start eines Snapshots muss verarbeitet werden, bevor check_states verarbeitet wird. Dies ermöglicht es SUSE Observability, einen Stream-Snapshot mit dem zuvor empfangenen zu vergleichen und Prüfzustände zu löschen, die im Snapshot nicht mehr vorhanden sind. Es enthält die folgenden Felder als Snapshot-Metadaten:

    • repeat_interval_s - Zeit in Sekunden. Die Häufigkeit, mit der die externe Quelle Gesundheitsdaten an SUSE Observability sendet. Der maximal erlaubte Wert beträgt 1800 (30 Minuten).

    • expiry_interval_s - Zeit in Sekunden. Die Zeit, die nach dem letzten Update abgewartet wird, bevor ein externer Check von SUSE Observability gelöscht wird. Erforderlich bei der Verwendung von Unterstreams.

  • stop_snapshot - Optional. Das Ende eines Snapshots wird nach der Verarbeitung der check_states umgesetzt.

  • stream - Objekt, das die Identifikation bereitstellt, welche Snapshots und check_states zusammengehören. Sie enthält die folgenden Felder:

    • urn - Datenquelle und Stream-ID, kodiert als eine SUSE Observability URN, die der folgenden Konvention entspricht: urn:health:<sourceId>:<streamId>, wobei <sourceId> der Name der externen Datenquelle und <streamId> ein eindeutiger Identifikator für den Gesundheitsdatenstream ist.

    • sub_stream_id - Optional. Identifikator für eine Teilmenge der Stream-Gesundheitsdaten. Wenn die Stream-Daten von mehreren Agenten verteilt und gemeldet werden, ermöglicht dies Snapshot-Lebenszyklen pro sub_stream_id.

  • check_states - Eine Liste von Prüfzuständen. Jeder Prüfzustand kann die folgenden Felder haben:

    • checkStateId - Identifikator für den Prüfzustand im externen System.

    • message - Optional. Nachricht, die in der SUSE Observability UI angezeigt werden soll. Die Daten werden als Markdown interpretiert, wodurch Links zu dem externen System-Check möglich sind, der den externen Prüfzustand erzeugt hat.

    • health - Einer der folgenden SUSE Observability Gesundheitszustandswerte: Clear, Deviating, Critical.

    • topologyElementIdentifier - Wird verwendet, um den Prüfzustand an ein SUSE Observability Topologieelement zu binden.

    • name - Name des externen Prüfzustands.

Health an SUSE Observability senden.

Health kann in einer JSON-Nachricht über HTTP POST gesendet werden. Im folgenden Beispiel wird ein Snapshot, der zwei Prüfzustände enthält, von einem einzelnen externen Überwachungssystem an SUSE Observability gesendet.

curl -X POST \
 '<STACKSTATE_RECEIVER_API_ADDRESS>' \
 -H 'Content-Type: application/json' \
 -d '{
  "collection_timestamp": 1548857167,
  "internalHostname": "local.test",
  "health": [
    {
      "consistency_model": "REPEAT_SNAPSHOTS",
      "start_snapshot": {
        "repeat_interval_s": 300
      },
      "stop_snapshot": {},
      "stream": {
        "urn": "urn:health:sourceId:streamId"
      },
      "check_states": [
        {
          "checkStateId": "checkStateId1",
          "message": "Server Running out of disk space",
          "health": "Deviating",
          "topologyElementIdentifier": "server-1",
          "name": "Disk Usage"
        },
        {
          "checkStateId": "checkStateId2",
          "message": "Provisioning failed. [Learn more](https://www.any-link.com)",
          "health": "critical",
          "topologyElementIdentifier": "server-2",
          "name": "Health monitor"
        }
      ]
    }
  ]
}'