Este documento foi traduzido usando tecnologia de tradução automática de máquina. Sempre trabalhamos para apresentar traduções precisas, mas não oferecemos nenhuma garantia em relação à integridade, precisão ou confiabilidade do conteúdo traduzido. Em caso de qualquer discrepância, a versão original em inglês prevalecerá e constituirá o texto official.

Elementos Transacionais

Visão Geral

Esta página descreve as mensagens JSON exatas que podem ser enviadas para o modelo de consistência dos Incrementos Transacionais de sincronização de saúde.

Propriedade JSON: "saúde"

A saúde pode ser enviada para a API do SUSE Observability Receiver usando a propriedade "health" do objeto JSON comum.

  • Exemplo de saúde 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 dados dos Incrementos Transacionais de saúde possui os seguintes detalhes:

  • incremento - Um objeto de incremento precisa estar presente em cada mensagem. Isso permite que o SUSE Observability rastreie toda a cadeia de mensagens e consiga detectar quando uma retransmissão de dados ou uma lacuna inesperada nos dados está ocorrendo. Ele carrega os seguintes campos como metadados de incremento:

    • checkpoint - Objeto que fornece o checkpoint que pertence ao check_states presente na mensagem, possui dois campos:

      • offset - O deslocamento atribuído às mensagens pelo pipeline de streaming. Por exemplo, o deslocamento do Kafka.

      • batch_index - Opcional. Ao usar uma única mensagem para acumular vários check_states, o índice do lote representa o último índice que está presente na mensagem, permitindo enviar grandes lotes em chamadas de API separadas.

    • previous_checkpoint - Opcional. Representa o checkpoint comunicado anteriormente, podendo estar vazio na primeira transmissão do substream. Isso permite que o SUSE Observability monitore se há dados faltando do upstream.

  • stream - Objeto que fornece identificação sobre quais instantâneos e check_states pertencem juntos. Ela contém os seguintes campos:

    • urn - Fonte de dados e ID do stream codificados como um URN do SUSE Observability que segue a seguinte convenção: urn:health:<sourceId>:<streamId> onde <sourceId> é o nome da fonte de dados externa e <streamId> é um identificador único para o stream de dados de saúde.

    • sub_stream_id - Optional. Identificador para um subconjunto dos dados de saúde do stream. Quando os dados do stream são distribuídos e reportados por vários agentes, isso permite ciclos de vida de instantâneos por sub_stream_id.

  • check_states - Uma lista de estados de verificação. Cada estado de verificação pode ter os seguintes campos:

    • checkStateId - Identificador para o estado de verificação no sistema externo.

    • message - Opcional. Mensagem a ser exibida na interface do SUSE Observability. Os dados serão interpretados como markdown, permitindo ter links para o sistema externo de verificação que gerou o estado de verificação externo.

    • health - Um dos seguintes valores de estado de saúde do SUSE Observability: Clear, Deviating, Critical.

    • topologyElementIdentifier - Usado para vincular o estado de verificação a um elemento de topologia do SUSE Observability.

    • name - Nome do estado de verificação externo.

    • delete - Flag que é interpretada como um pedido de exclusão para o checkStateId relacionado. Mesmo que os demais campos para a criação estejam presentes, por exemplo, name, health, …​, a exclusão terá precedência.

Enviar saúde para o SUSE Observability.

A saúde pode ser enviada em uma mensagem JSON via HTTP POST. No exemplo abaixo, um instantâneo contendo dois estados de verificação é enviado para o SUSE Observability a partir de um único sistema de monitoramento 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
        }
      ]
    }
  ]
}'