Elementos Transaccionales

Descripción general

Esta página describe los mensajes JSON exactos que se pueden enviar para el modelo de consistencia de Incrementos Transaccionales de sincronización de salud.

Propiedad JSON: "health"

La salud se puede enviar a la API del Receptor de SUSE Observabilidad utilizando la propiedad "health" del objeto JSON común.

  • Ejemplo de salud transactional_increments JSON

   "apiKey":"your api key",
   "collection_timestamp":1585818978,
   "internalHostname":"lnx-343242.srv.stackstate.com",
   "events":{},
   "metrics":[],
   "service_checks":[],
   "health":[
      {
        "consistency_model": "TRANSACTIONAL_INCREMENTS",
        "increment": {
              "checkpoint": {
                  "offset": 5,
                  "batch_index": 102
              },
              "previous_checkpoint": {
                  "offset": 5,
                  "batch_index": 100
              }
        },
        "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"
          },
          {
            "checkStateId": "checkStateId3",
            "delete": true
          }
        ]
      }
   ],
   "topologies":[]

Cada carga de datos de Incrementos Transaccionales de salud tiene los siguientes detalles:

  • incremento - Un objeto de incremento debe estar presente en cada mensaje. Esto permite a SUSE Observabilidad rastrear la cadena completa de mensajes y detectar cuándo se está produciendo una retransmisión de datos o una brecha inesperada en los datos. Lleva los siguientes campos como metadatos de incremento:

    • punto_de_control - Objeto que proporciona el punto de control que pertenece al check_states presente en el mensaje, tiene dos campos:

      • desplazamiento - El desplazamiento asignado a los mensajes por la canalización de streaming. Por ejemplo, el desplazamiento de Kafka.

      • batch_index - Optional. Al utilizar un solo mensaje para acumular varios check_states, el índice de lote representa el último índice que está presente en el mensaje, permitiendo enviar grandes lotes en llamadas API separadas.

    • punto_de_control_anterior - Opcional. Representa el punto de control comunicado anteriormente, puede estar vacío en la primera transmisión en el subflujo. Permite a SUSE Observability llevar un seguimiento de si podría faltar algún dato del sentido ascendente.

  • flujo - Objeto que proporciona identificación sobre qué instantáneas y check_states pertenecen juntas. Contiene los campos siguientes:

    • urn - Fuente de datos e ID de flujo codificados como un URN de SUSE Observabilidad que coincide con la siguiente convención: urn:health:<sourceId>:<streamId> donde <sourceId> es el nombre de la fuente de datos externa y <streamId> es un identificador único para el flujo de datos de salud.

    • sub_stream_id - Optional. Identificador para un subconjunto de los datos de salud del flujo. Cuando los datos del flujo son distribuidos y reportados por varios agentes, esto permite ciclos de vida de instantáneas por sub_stream_id.

  • check_states - Una lista de estados de verificación. Cada estado de verificación puede tener los siguientes campos:

    • checkStateId - Identificador para el estado de verificación en el sistema externo.

    • message - Opcional. Mensaje a mostrar en la interfaz de usuario de SUSE Observability. Los datos se interpretarán como markdown permitiendo tener enlaces al sistema externo de verificación que generó el estado de verificación externo.

    • health - Uno de los siguientes valores de estado de salud de SUSE Observability: Clear, Deviating, Critical.

    • topologyElementIdentifier - Utilizado para vincular el estado de verificación a un elemento de topología de SUSE Observability.

    • name - Nombre del estado de verificación externo.

    • delete - Indicador que se interpreta como una solicitud de eliminación para el checkStateId relacionado. Incluso si el resto de los campos para la creación están presentes, por ejemplo, name, health, …​, la eliminación tendrá prioridad.

Enviar estado a SUSE Observability

El estado puede enviarse en un mensaje JSON a través de HTTP POST. En el ejemplo a continuación, se envía una instantánea que contiene dos estados de verificación a SUSE Observability desde un único sistema de monitoreo externo.

curl -X POST \
 '<STACKSTATE_RECEIVER_API_ADDRESS>' \
 -H 'Content-Type: application/json' \
 -d '{
  "collection_timestamp": 1548857167,
  "internalHostname": "local.test",
  "health": [
    {
      "consistency_model": "TRANSACTIONAL_INCREMENTS",
      "increment": {
            "checkpoint": {
                "offset": 5,
                "batch_index": 102
            },
            "previous_checkpoint": {
                "offset": 5,
                "batch_index": 100
            }
      },
      "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"
        },
        {
          "checkStateId": "checkStateId3",
          "delete": true
        }
      ]
    }
  ]
}'