Naslaginformatie over openTelemetry-tabellen voor Zerobus Ingest

Deze pagina bevat naslaginformatie over de OTLP-tabelschema's (OpenTelemetry) en gegevenstoewijzing die worden gebruikt door Zerobus Ingest OTLP.

Tabelschema

Wanneer OTLP-gegevens binnenkomen, converteert Zerobus Ingest elke record van de geneste OTLP-resource/scope/recordhiërarchie naar een platte, gedenormaliseerde rij. Resourcekenmerken en informatie over instrumentatiebereik worden rechtstreeks in elke rij ingesloten, waardoor de gegevens onmiddellijk kunnen worden opgevraagd zonder joins.

Alle kenmerkvelden (attributes, resource.attributes, instrumentation_scope.attributesbody voor logboeken, metadata voor metrische gegevens) worden opgeslagen als VARIANT kolommen. VARIANT is een semi-gestructureerd type in Delta Lake waarin JSON-gegevens worden opgeslagen en de oorspronkelijke typen behouden blijven.

Elke record wordt uitgebreid met databricks-specifieke velden:

Veld Beschrijving bron
record_id Een door het systeem gegenereerde id voor unieke identificatie en op tijd geordende sortering. Gegenereerd op basis van tijd
time Tijdstempel in microseconden uit het Unix-epoch. Tijdstempel (in microseconden) afgeleid van start_time_unix_nano (spans) of time_unix_nano (logboeken, metrische gegevens)
date Datumpartitiekolom, voor efficiënt filteren op tijdsbereik. Afgeleid van time
service_name Kolom op het hoogste niveau voor efficiënt filteren op servicenaam, zoals gedefinieerd in de Semantische OTel-conventie. Uit resource.attributes["service.name"]

Numerieke precisie en getekende types

Vanwege enkele beperkingen van het Delta-type, wees alsjeblieft rekening met het volgende:

  • Waarden van gehele metrieken verliezen precisie boven 2^53.Gauge, Sum, en Exemplar datapunten die hun waarde als as_int, een 64-bits geheel getal rapporteren, worden omgezet naar DOUBLE, aangezien Zerobus Ingest alle metriekwaarden opslaat in één enkele floating-point kolom. DOUBLE alleen gehele getallen exact tot 2^53 weergeven, ongeveer 9 biljard, dus grotere as_int waarden verliezen exacte precisie zodra ze worden omgerekend. Dit is vooral van belang voor zeer grote cumulatieve tellers, zoals levenslange byte- of verzoektotalen.
  • Ongesigneerde OTLP-velden worden opgeslagen als ondertekend. INT en BIGINT altijd ondertekend zijn in Delta, maar OTLP definieert sommige numerieke velden als niet-ondertekende (uint32, uint64, fixed64) of als zeer grote tellers met vaste breedte. Velden zoals *_time_unix_nano, flags, dropped_attributes_count, enzovoort, worden as-is opgeslagen in een ondertekende INT of BIGINT kolom. Een waarde boven het getekende maximum (i32::MAX voor INT, i64::MAX voor BIGINT) wordt in plaats van fout te maken naar een negatief getal.

Schema-koppeling

Zerobus Ingest wijst OTLP-gegevens toe aan Delta-tabelkolommen, zoals hieronder wordt beschreven.

Denormalisatie

In het OTLP-protocol worden telemetriegegevens als zodanig genest.

ResourceSpans (or ResourceLogs, ResourceMetrics)
  └── Resource (attributes, schema_url)
       └── ScopeSpans (or ScopeLogs, ScopeMetrics)
            └── InstrumentationScope (name, version, attributes)
                 └── Span (or LogRecord, Metric)

Zerobus Ingest maakt deze hiërarchie plat, zodat elke rij de volledige context bevat:

  • resource: Een struct met de resourcekenmerken (als VARIANT) en dropped_attributes_count.
  • resource_schema_url: de schema-URL van de insluitende ResourceSpans, ResourceLogs of ResourceMetrics.
  • instrumentation_scope: een struct met de bereiknaam, versie, kenmerken (als VARIANT) en dropped_attributes_count.
  • span_schema_url / log_schema_url / metric_schema_url: de schema-URL van de scopespans, scopelogs of scopemetrics.

Id-codering

trace_id, span_iden parent_span_id worden opgeslagen als hex-gecodeerde tekenreeksen in kleine letters:

  • trace_id: hextekenreeks van 32 tekens (16 bytes)
  • span_id: hextekenreeks van 16 tekens (8 bytes)

Enum-codering

Enum-waarden (kind, status.code, aggregation_temporality, severity_number) worden opgeslagen als tekenreeksnamen zoals gedefinieerd in de OTLP-specificatie. Bijvoorbeeld: SPAN_KIND_SERVER, STATUS_CODE_OK, AGGREGATION_TEMPORALITY_DELTA.

Volgende stappen