Detalles y características de Data Streaming

Entrega de Datos

Data Streaming utiliza diferentes tecnologías para exportar datos y la confiabilidad de entrega puede variar dependiendo del formato y del destino elegido.

  • Exportación vía OpenTelemetry (OTLP) Al exportar datos en formato OTLP a destinos como Dynatrace, Datadog o AWS S3, pueden ocurrir limitaciones de completitud inherentes al modelo de OpenTelemetry. Este formato es más adecuado para escenarios de observabilidad (como monitoreo de rendimiento y rastreo de eventos), en los cuales los análisis basados en muestras suelen ser suficientes para identificar fallas y anomalías. No es indicado para datos de negocio que exijan precisión integral.

  • Exportación en formato JSON La exportación en JSON ofrece una tasa de entrega generalmente más confiable. Esta opción se recomienda para situaciones en las que la integridad de los datos tiene mayor prioridad, pero aun así, no recomendamos su uso en sistemas de toma de decisiones críticas que dependan del 100% de los datos para una correcta operación.

    El archivo JSON se envía comprimido (formato gz).

Consulte también: Límites de uso de Data Streaming.

Observabilidad vs. Análisis de datos

Comprenda la diferencia entre los dos conceptos que, aunque relacionados, tienen objetivos distintos:

  • Observabilidad: hace un seguimiento del comportamiento y salud de los sistemas en tiempo real. Utiliza datos de telemetría, como métricas, logs y traces, y realiza análisis a través de un muestreo inteligente, que puede reducir el volumen de datos cuando todo está operando normalmente. La pipeline se optimiza para la velocidad y la eficiencia, priorizando la detección rápida de problemas.

  • Análisis de datos (Analytics): se enfoca en la comprensión del negocio y el comportamiento de los usuarios. Utiliza datos históricos para análisis detallados, generación de informes y toma de decisiones estratégicas. La pipeline prioriza la cobertura.

  • Data Streaming y Sensedia Analytics procesan datos por medio de pipelines diferentes, lo que puede afectar el volumen y la granularidad de la información disponible.

  • Las interrupciones temporales en redes, sistemas de mensajería o proveedores de servicios pueden generar lagunas en la observabilidad, lo que refuerza la diferencia entre los datos observacionales y analíticos.

Datos y Dimensiones de Traces

Los traces enviados en formato OTLP se generan en el propio gateway de Sensedia. Esto significa que están separados de cualquier trace distribuido que su aplicación cliente pueda haber generado. Actualmente, solo enviamos la dimensión de trace.

Ejemplos

Vea ejemplos de cómo es el archivo generado y enviado a diferentes destinos.

  • Ejemplo OTLP

    Vea un ejemplo de archivo en formato OTLP, enviado a 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"
                  }
                }
              ]
            }
          ]
        }
      ]
    }
  • Ejemplo JSON

    Vea un ejemplo de archivo exportado en formato JSON para S3, Azure Blob o 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"
    }

    El ejemplo anterior se redujo para facilitar la lectura.
    En los archivos reales, los campos trace, requestHeaders y responseHeaders pueden contener información más extensa.
    Si lo prefiere, puede descargar un archivo completo de ejemplo en formato JSON aquí:

    • Estructura de carpetas

      La estructura de directorios varía según el proveedor de almacenamiento. En el caso de AWS S3 (JSON), Azure y Google Cloud, la organización sigue el patrón:

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

      Ejemplo:

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

      {internal-identifier} = punto de control de Sensedia.

      ejemplo en AWS S3

Thanks for your feedback!
EDIT

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