Detalhes e características do Data Streaming

Entrega de Dados

O Data Streaming utiliza diferentes tecnologias para exportar dados e a confiabilidade de entrega pode variar dependendo do formato e do destino escolhido.

  • Exportação via OpenTelemetry (OTLP) Ao exportar dados em formato OTLP para destinos como Dynatrace, Datadog ou AWS S3, podem ocorrer limitações de completude inerentes ao modelo do OpenTelemetry. Esse formato é mais adequado para cenários de observabilidade (como monitoramento de performance e rastreamento de eventos), nos quais análises baseadas em amostras costumam ser suficientes para identificar falhas e anomalias. Não é indicado para dados de negócio que exijam precisão integral.

  • Exportação em formato JSON A exportação em JSON oferece uma taxa de entrega geralmente mais confiável. Essa opção é recomendada para situações em que a integridade dos dados tem maior prioridade, mas ainda sim, não recomendamos para uso em sistemas de tomada de decisão crítica que dependam de 100% dos dados para correta operação.

    O arquivo JSON é enviado compactado (formato gz).

Observabilidade x Análise de dados

Entenda a diferença entre os dois conceitos que, embora relacionados, têm objetivos distintos:

  • Observabilidade: acompanha o comportamento e saúde dos sistemas em tempo real. Utiliza dados de telemetria, como métricas, logs e traces e faz análises por meio de amostragem inteligente, que pode reduzir o volume de dados quando tudo está operando normalmente. A pipeline é otimizada para velocidade e eficiência, priorizando a detecção rápida de problemas.

  • Análise de dados (Analytics): foca no entendimento do negócio e comportamento dos usuários. Utiliza dados históricos para análises detalhadas, geração de relatórios e tomada de decisões estratégicas. A pipeline prioriza abrangência.

  • Data Streaming e Analytics processam dados por meio de pipelines diferentes, o que pode impactar o volume e a granularidade das informações disponíveis.

  • Interrupções temporárias em redes, sistemas de mensageria ou provedores de serviços podem gerar lacunas na observabilidade, reforçando a diferença entre os dados observacionais e analíticos.

Dados e Dimensões de Traces

Os traces enviados no formato OTLP são gerados no próprio gateway da Sensedia. Isso significa que eles são apartados de qualquer trace distribuído que a sua aplicação cliente possa ter gerado. Atualmente, enviamos apenas a dimensão de trace.

Exemplos

Veja exemplos de como os arquivos podem ser exportados para diferentes destinos.

  • Exemplo OTLP

    Veja um exemplo de arquivo no formato OTLP, enviado para AWS S3:

    {
      "resourceSpans": [
        {
          "resource": {
            "attributes": [
              { "key": "service.name", "value": { "stringValue": "checkout-service" } },
              { "key": "service.version", "value": { "stringValue": "1.3.2" } },
              { "key": "host.name", "value": { "stringValue": "ip-10-0-0-15" } }
            ]
          },
          "scopeSpans": [
            {
              "scope": {
                "name": "io.opentelemetry.contrib.mongodb",
                "version": "0.39.0"
              },
              "spans": [
                {
                  "traceId": "d4cda95b652f4a1592b449d5929fda1b",
                  "spanId": "6e0c63257de34c92",
                  "parentSpanId": "1111111111111111",
                  "name": "MongoDB INSERT orders",
                  "kind": "SPAN_KIND_CLIENT",
                  "startTimeUnixNano": "1693666548745123456",
                  "endTimeUnixNano": "1693666548756789012",
                  "attributes": [
                    { "key": "db.system", "value": { "stringValue": "mongodb" } },
                    { "key": "db.name", "value": { "stringValue": "ecommerce" } },
                    { "key": "net.peer.name", "value": { "stringValue": "mongo-primary" } }
                  ],
                  "status": {
                    "code": "STATUS_CODE_OK"
                  }
                }
              ]
            }
          ]
        }
      ]
    }
  • Exemplo JSON

    Veja um exemplo de arquivo exportado em formato JSON para S3, Azure Blob ou GCS:

    {
    "apiName": "Test API",
    "resourceId": 280767,
    "completeUrl": "GET https://api-sample.sensedia-eng.com/sample/test
    ",
    "appDeveloper": "test",
    "apiComponentType": "OPERATION",
    "billing": true,
    "trace": "[{"timeMillis":20,"message":"Choosing route between 316 possible alternatives", ... }]",
    "environmentName": "Staging",
    "operationName": "Test API GET /sample",
    "resultStatus": 200,
    "requestHeaders": "host: randomapi.sensedia.com\nuser-agent: Mozilla/5.0 ...",
    "responseHeaders": "date: Mon, 13 May 2024 13:58:54 GMT\ncontent-type: application/json",
    "billingData": {
    "accessTokenBalance": "4",
    "appBalance": "2",
    "accessTokenBillingQuota": "3",
    "appBillingQuota": "1",
    "billingValue": "123"
    },
    "receivedOnDate": "2024/05/13 13:58:53 +0000"
    }

    O exemplo acima foi reduzido para facilitar a leitura.
    Nos arquivos reais, os campos trace, requestHeaders e responseHeaders podem conter informações mais extensas.
    Se preferir, você pode baixar um arquivo completo de exemplo no formato JSON aqui:

    • Estrutura de pastas
      A estrutura de diretórios varia conforme o provedor de armazenamento.
      No caso do JSON para AWS S3, Azure e Google Cloud, a organização segue o padrão:

      s3://<bucket-name>/<environment>/<year>/<month>/<day>/<hour>/<file>.json

      Exemplo:

      /analytics/{internal-identifier}/year=2024/month=05/day=13/hour=19/{file_name}.json

      {internal_identifier} = ponto de controle da Sensedia.

      exemplo no AWS S3

Thanks for your feedback!
EDIT

Share your suggestions with us!
Click here and then [+ Submit idea]