OpenTelemetry gør det muligt at spore distribuerede forespørgsler via proxy, applikation, database, cache og eksterne API’er, når Trace-kontekst, tjenesteidentitet og eksportsti passer sammen. For hostingplatforme er det ikke den maksimale datamængde, der er afgørende, men en kontrolleret arkitektur: Applikationer genererer telemetri, et backend analyserer den, og collector samt filtre begrænser risici. Hvilken implementering der er mulig, afhænger i høj grad af hostingmodellen, rettighederne til driftstid, netværksgodkendelser og databeskyttelseskrav.
OpenTelemetry, signaler og backend skal afgrænses tydeligt
OpenTelemetry, ofte kaldet OTel, er ikke en overvågningsportal og gemmer ikke telemetri permanent. Det er et producentneutralt samspil mellem specifikationer, API’er, SDK’er, instrumenteringer, OpenTelemetry Protocol (OTLP) og Collector. Applikationer genererer dermed data, behandler og eksporterer dem; søgning, opbevaring, adgangsrettigheder og alarmering forbliver opgaver for det valgte backend.
De tre Signaler besvarer forskellige driftsrelaterede spørgsmål. Traces ordner de enkelte trin i en forespørgsel kronologisk og logisk, metrics sammenfatter tilstande til måleserier, og logs registrerer enkelthændelser. En robust observabilitetspraksis kombinerer disse elementer: Et spor afgrænser en mistænkelig anmodning, metrikker viser dens hyppighed over tid, og tilknyttede logfiler leverer fejlmeddelelser eller yderligere detaljer.
| Signal | Typisk driftsrelateret spørgsmål | Begrænsninger i konklusionens gyldighed |
|---|---|---|
| Spor | Hvor blev der brugt tid på en enkelt anmodning? | De viser instrumenterede forløb, men beviser ikke nogen årsag. |
| Metrikker | Hvordan udvikler fejlfrekvensen eller forsinkelsesfordelingen sig? | Aggregater forklarer ikke automatisk en enkelt fejl. |
| Logfiler | Hvilken detaljemelding hører til en bemærkelsesværdig transaktion? | Uden sporings- og span-ID er muligheden for at knytte data til en anmodning begrænset. |
For hostingplatforme medfører dette en klar arbejdsfordeling: OTel standardiserer genereringen og videreformidlingen af telemetri, men erstatter ikke noget målsystem. Inden instrumenteringen påbegyndes, bør teams derfor fastlægge, hvilket backend der modtager hvilke data, hvor længe de er nødvendige, og hvem der har adgang til dem. Først når disse beslutninger er truffet, bliver de tekniske eksportveje og datamængderne håndterbare.
Videreformidling af sporingskontekst på tværs af hostinggrænser
Distribueret sporing forbinder trinene i en logisk transaktion på tværs af proces- og netværksgrænser. En Trace-kontekst indeholder blandt andet et spor-ID for hele processen og span-ID’er for de enkelte operationer. Spans kan danne forældre-barn-relationer; tilsammen beskriver de en rettet, acyklisk graf over det observerede arbejde.
Ved HTTP videregives denne kontekst normalt i henhold til W3C Trace Context, især i headeren traceparent. En tjeneste overtager den indgående kontekst og opretter et tilhørende span for sin del. Ved udgående opkald skal den overføre konteksten igen. Hvis dette ikke sker ved en kontrollerbar overgang, opdeles anmodningen i backenden i separate spor.
Ved en checkout kan en reverse proxy videresende anmodningen til applikationen. Denne tjekker f.eks. en cache, forespørger databasen og kalder en betalingstjeneste samt en e-mail-API. Hvis overgangene instrumenteres og konteksten videreformidles, kan rækkefølgen af disse trin spores i en trace. Det samme princip gælder for kø- eller baggrundsjob, forudsat at konteksten følger med meddelelsen og gendannes hos modtageren.
Et langt eksternt HTTP-span viser dog kun den observerede varighed af denne instrumenterede operation. Det beviser ikke, om årsagen lå i DNS, netværket, gentagne forsøg, modparten eller belastningen i det eget system. Traces er derfor et udgangspunkt for diagnosen; en undersøgelse af årsagen kræver relevante målinger, logfiler og en teknisk gennemgang af de involverede komponenter.
Hostingmodellerne bestemmer OTel’s handlingsrum
Om OpenTelemetry er praktisk anvendeligt, afhænger først og fremmest af hostingmodellen. Et minimumskrav er kontrol over applikationskonfigurationen eller i det mindste over miljøvariabler. SDK’er kan, afhængigt af sprogimplementeringen, konfigureres programmatisk og via miljøet; det skal kontrolleres, hvilket omfang der faktisk understøttes for det anvendte sprog og den anvendte version.
| Hosting-model | Mulige instrumenter | Collector-indstilling | Typisk begrænsning | En fornuftig indgang |
|---|---|---|---|---|
| delt hosting | Praksisorienteret SDK-konfiguration, hvor det er tilladt | Ofte kun en ekstern endepunkt eller en endepunkt, der stilles til rådighed af udbyderen | Ingen permanente egne processer eller lokale modtagelsesporte | Tjek eksportmuligheder og miljøvariabler hos udbyderen |
| Administreret hosting | Afhængigt af godkendelser og løbetid | Udbyder-collector eller ekstern collector er mulig | Begrænset proces- og netværksstyring | Start med understøttet kørselstidsinstrumentering |
| VPS eller egen server | SDK’er og automatisk instrumentering efter kørselstid | Mulighed for en lokal indsamler pr. vært | Drift, sikkerhed og opdateringer varetages af teamet | Start med at tilslutte nogle få tjenester til en sikret collector |
| Kubernetes | SDK’er, zero-code-løsninger og operatørstøttet implementering | Collector som arbejdsbelastning eller gateway | Vær opmærksom på roller, netværksretningslinjer og konfiguration af arbejdsbelastning | Instrumentering af et afgrænset navneområde eller en tjeneste |
På VPS, egne servere og i containere kan man som regel selv styre Collector, netværksstier og procesmiljøet. De officielle eksempler angiver følgende porte for lokale OTLP-modtagere: 4317 til gRPC og 4318 for HTTP. Dette betyder ikke, at der gives en generel anbefaling om at åbne adgangen: Tilgængeligheden i produktionsmiljøet, firewall-reglerne og autentificeringen skal passe til den pågældende platform.
I klassisk shared hosting mangler derimod ofte rettigheder til en permanent kørende collector eller procesinjektion til autoinstrumentering. Der findes zero-code-løsninger til flere sprogmiljøer, men deres anvendelighed afhænger af kørselstid, implementeringsmetode og platformgodkendelser. Planlæg derfor ikke ud fra OTel-funktionen, men ud fra de tilladte konfigurations- og eksportmetoder i det konkrete hostingmiljø.
Målrettet planlægning af instrumentering og tjenesteidentitet
I starten er der en overskuelig Tjenesteidentitet. Ressourcer beskriver den enhed, der genererer telemetri, f.eks. en tjeneste eller dens kørselsmiljø. Definer de ressourceattributter, der anvendes hertil, på en kontrolleret og konsekvent måde. Hvilke konkrete attributter der automatisk er tilgængelige, eller som skal konfigureres yderligere, afhænger af sprogimplementeringen, instrumenteringen og versionen.
Kontroller derefter zero-code- eller auto-instrumenteringen af det faktisk anvendte sprogs runtime og dets version. OpenTelemetry-dokumentationen beskriver relevante tilgange for blandt andet Java, JavaScript, .NET, PHP, Python og Go. De registrerer ofte grænser for HTTP, databaser eller klientbiblioteker, men omfang, modenhed og understøttede biblioteker varierer fra implementering til implementering.
Automatisk genererede sporsæt viser især tekniske overgange. For faglige trin som „Ordre godkendt“ eller „Faktura oprettet“ tilføjer du målrettet instrumentering i koden, forudsat at disse trin er relevante for diagnosen. På den måde bliver det tydeligt, ved hvilken operation en proces fejler, uden at hver eneste funktionskald overbelastes med telemetri.
Yderligere ressourceattributter kan f.eks. indeholde oplysninger om vært, proces, container eller Kubernetes-miljø. Hvilke attributter en sprogimplementering automatisk angiver, og hvilke semantiske konventioner der gælder, skal kontrolleres separat for SDK, instrumentering og version. Værdierne bør stamme fra kontrollerede deployement-metadata, så mærkningen af det samme kørselsmiljø forbliver sporbar.
I flere kundeprojekter indgår navngivning i klient- og implementeringskonceptet. Telemetri må ikke ved en fejl sammenflette projekter eller gøre det lettere at få adgang via fælles attributter. Hvordan applikationsarkitektur, isolering og skalering hænger sammen, forklares også i artiklen om SaaS-hosting med mulighed for flere kunder. Hvad angår selve telemetrien, gælder følgende: Kundespecifikke identifikatorer må kun indsamles, hvis det er fagligt nødvendigt, og hvis det er blevet vurderet i forhold til databeskyttelseslovgivningen.
Collector-arkitekturer og sikker eksport
Ved direkte eksport sender hvert program sine OTLP-data direkte til det valgte backend. Det sparer en ekstra komponent, men fordeler måladresse, adgangsdata og eksportkonfiguration på flere installationer. Denne variant passer bedst til en lille, klart afgrænset installation, hvor backend'et er sikkert tilgængeligt, og som ikke kræver central behandling før eksporten.
En lokal Collector For hver vært eller pod modtager telemetrien data tæt på applikationen. Applikationerne sender data til et lokalt endepunkt; indsamleren samler dataene og kan stå for gentagelsesforsøg, behandling og videresendelse. For Linux-værter beskriver dokumentationen dette mønster som en mulighed for at lade applikationer localhost at få sendt.
En central gateway-collector samler derimod backend-forbindelsen, routingen og ensartede behandlingsretningslinjer. Dette skaber dog en yderligere driftsmæssig afhængighed, som skal sikres og planlægges i overensstemmelse med kapaciteten. I større miljøer kan en lokal collector kombineres med en gateway i stedet for at knytte alle applikationer direkte til en central instans.
I et ikke-produktivt eksempel modtager en receiver OTLP, den konfigurerede pipeline behandler telemetrien, og en exporter videresender den til backendet. OTel-oversigten beskriver i princippet også berigelse, transformation og rensning af personoplysninger som opgaver for en collector. Hvilken konkret komponent der understøtter et signal, og hvilket modenhedsniveau den har, skal dog kontrolleres separat for den valgte collector-distribution og -version.
De OTLP-porte, der ofte anvendes i lokale eksempler 4317 til gRPC og 4318 Der er ingen generel godkendelse til produktiv drift for HTTP. Fastlæg tilgængeligheden via sikkerhedszoner, firewall-regler og platformskrav. S14 anbefaler sikre, autentificerede forbindelser og drift uden root- eller administratorrettigheder, medmindre en komponent kræver yderligere rettigheder. Da S14 anvender den dynamiske udviklingsgren main Som dokumenteret skal disse specifikationer sammenlignes med dokumentationen for den konkrete Collector-version, der anvendes, inden ibrugtagning.
Vælg prøveudtagning for belastning og fejlmønstre
Sampling afgør, hvilke spor der gemmes eller behandles yderligere, når en fuldstændig registrering genererer for meget telemetri. Start med en lille, forudtestet andel, og kontroller, om typiske anmodninger, fejl og afvigelser i latenstiden i backend stadig er tilstrækkeligt synlige. Den passende kvote er ikke et universelt tal, men afhænger af trafik, diagnosemål og opbevaringsperiode.
| Fremgangsmåde | Beslutning | Styrke | Grænse | Egnethed |
|---|---|---|---|---|
| Fuld registrering | Hver enkelt spor eksporteres | Maksimal detaljegrad | Der er mulighed for store datamængder | Små eller midlertidige diagnosemiljøer |
| Forældrebaseret, forholdsbaseret hovedprøveudtagning | Ved start af sporing | Kan planlægges og afgøres tidligt | Senere fejltegn har ingen indflydelse på udvælgelsen | Start med en afprøvet lille andel |
| Tail-sampling | På baggrund af de modtagne sporingsdata i Collector | Kan f.eks. målrettet gemme fejl eller langsomme spor | Strategier, lagringsadfærd og skalering afhænger af den enkelte version | Først efter fastlæggelse og gennemgang af en konkret udgivelse |
På Hovedprøveudtagning Beslutningen træffes ved starten af en trace. En forældrebaseret, forholdsbaseret strategi overtager herved samplingbeslutningen for en forældre-span og fastsætter en kvote for nye rødder. Dette sikrer, at udvælgelsen er gennemsigtig, men kan ikke efterfølgende inddrage en fejl, der først opdages senere, i en trace, der tidligere er blevet kasseret.
Tail Sampling analyserer de modtagne sporingsdata i Collector i henhold til de konfigurerede retningslinjer. S12 viser udelukkende den aktive udviklingsgren main og angiver processoren der som en betaversion til traces samt som værende i en midlertidig tilstand. Denne tilstand omfatter flere beslutningsstrategier og kapacitetsmuligheder, herunder grænser for trace-størrelser og interne shards. Dette er ikke garanterede egenskaber ved en bestemt stabil udgivelse. Til produktiv brug skal man derfor først fastlægge Collector-Contrib-versionen og distributionen og derefter kontrollere de versionsafhængige indstillinger, standardværdier og ressourcekrav.
I det dokumenterede main-Alle spans i et spor skal nå frem til den samme Collector-instans, for at der kan træffes en effektiv sampling-beslutning. Processoren opbevarer som standard data i hukommelsen; en der beskrevet tail_storage-Udvidelsen er eksperimentel, beskyttet af en feature gate og kan ikke kombineres med alle sharding-konfigurationer. Disse oplysninger tjener udelukkende som retningslinjer for test. Da der ikke er fastsat en udgivelsesdato, kan der hverken udledes et pålideligt routing-koncept eller en produktionsgodkendelse heraf.
Begræns følsom telemetri inden eksport
Telemetri er kun nyttigt i driften, hvis indholdet forbliver begrænset. Baggage kan videreformidle frit valgte nøgle-værdi-par på tværs af tjenester og processer og gøre dem tilgængelige for sporinger, målinger eller logfiler. Følsomme Baggage-værdier kan dermed også utilsigtet nå frem til nedstrøms eller eksterne ressourcer. Kontroller derfor indholdet før hver tjenesteoverskridende videreformidling.
Med Bagage er denne rækkevidde særlig vigtig. Personoplysninger, sessions-id’er, adgangskoder eller API-nøgler hører ikke hertil. En værdi, der ikke er absolut nødvendig for den faglige tilknytning ved hver eneste overgang, bør ikke oprettes som »baggage«. Den automatiske videregivelse i netværkskald øger ellers kredsen af systemer, der kan behandle værdien.
Dataminimering begynder allerede ved instrumenteringen: Indsaml kun felter, der er nødvendige for en konkret diagnose. Kontroller desuden applikations- og biblioteksafhængige Span-attributter, logfelter, URL'er, headere og databaseoplysninger ved hjælp af ikke-produktive eksempeldata. Dette er en forsigtighedsregel for arkitekturen; hvilke af disse indholdselementer der rent faktisk indsamles, afhænger af SDK, instrumentering, konfiguration og version.
Collector kan generelt behandle, berige og transformere telemetri samt kontrollere, om den indeholder personoplysninger. Konkrete filter-, attribut- eller transformationskomponenter adskiller sig imidlertid med hensyn til distribution, signalunderstøttelse og versionsstatus. Fastlæg derfor først, efter at du har kontrolleret den påtænkte udgivelse, hvilke komponenter der skal behandle hvilke felter, og betragt ikke en generel beskrivelse af Collector som en godkendelse af en bestemt konfiguration.
Når det gælder måleparametre, bør teamet på forhånd fastlægge, hvilke attributter der reelt er nødvendige for et konkret driftsspørgsmål. Individuelle anmodnings- eller bruger-ID'er samt fuldstændige URL'er inddrages ikke som dimensioner alene af forsigtighedshensyn. Kontroller ved hjælp af repræsentative eksempeldata, hvilke attributværdier instrumenteringen rent faktisk genererer, og tillad kun de rute-, tjeneste- eller fejlklasser, der er beregnet til de definerede analyser.
Behandlingsregler skal versioneres og testes med repræsentative, ikke-produktive eksempeldata inden implementeringen. På den måde kan man se, om diagnostisk nødvendige oplysninger går tabt, eller om følsomme værdier fortsat eksporteres. Opbevaringsperiode, autorisationskoncept, adgangslogfiler og sletningskoncepter hører desuden til arkitekturen i det valgte backend og reguleres ikke af OpenTelemetry selv.
Sikre stabil drift af Collector og indsnævre fejl
Hvis der mangler spans, eller hvis en forventet sekvens opdeles i flere traces, skal fejlsøgningen begynde ved overgangen mellem tjenesterne. Kontroller først, om den udgående anmodning overfører konteksten, og om den næste tjeneste læser den. W3C-trace-konteksten med traceparent forbinder kun de komponenter, der rent faktisk understøtter denne videreformidling og ikke overskriver den.
Derefter følger rørledningen: Modtager den konfigurerede modtager data, lader en processor de forventede signaler passere, og når eksportøren sit mål? Separate kontroller forhindrer, at et backend-problem fejlagtigt betragtes som en instrumenteringsfejl. Driftsdata fra collectoren og klart afgrænsede testforespørgsler hjælper med at tilskrive tab til et bestemt trin.
Eksportfejl kræver efterfølgende en kontrol af DNS, tilgængelighed, certifikater og autentificering. S14 anbefaler sikre, autentificerede kanaler til Collector-forbindelser samt drift uden root- eller administratorrettigheder, forudsat at de anvendte komponenter ikke kræver yderligere rettigheder. Kilden dokumenterer dog den fleksible udviklingsgren main; Du bør derfor sammenligne disse sikkerhedshenvisninger med dokumentationen og konfigurationen for den konkrete Collector-version, der anvendes, inden produktiv drift.
En anden driftsindikator er Hukommelsesbelastning. Køer, gentagne forsøg og ressourcekrævende databehandling kan belaste hukommelsen, hvis et målsystem svarer med forsinkelse eller svigter. Hukommelsesgrænser og begrænsede køer skal passe til belastningen og fejlhåndteringen; deres virkning kontrolleres inden produktiv drift. Manglende grænser kan destabilisere selve Collector.
I forbindelse med fejlfinding er det derfor ikke kun applikationsspor, der tæller. Hold også øje med afviste eller kasserede data, køer, eksportfejl og collectorens ressourcer. Ændringer skal foretages trinvist: først en pipeline eller en tjeneste, derefter skal man kontrollere indvirkningen på fuldstændigheden og lagerpladsen. På den måde kan man se, hvilken konfigurationsændring der har forbedret eller forværret fejlbilledet.
Træffe arkitekturbeslutninger for platformsteams
For en lille, klart afgrænset applikation kan direkte eksport til backend være tilstrækkeligt, hvis man har fuldstændig styr på adgangsdata, netværksrute og dataregler. Ved flere tjenester er en lokal collector pr. host eller en agentnær model en mulig arkitektur, men ikke en generel foretrukken regel. S10 beskriver for Linux en separat drevet collector på hosten; pod-, agent- og gateway-varianter skal afvejes ud fra implementeringsmønstrene og de respektive platformskrav.
Voksende platforme drager ofte fordel af en opdeling af opgaverne. Lokale indsamlere kan modtage og samle data, mens en central gateway-indsamler kan varetage routing, ensartede filtre og tilslutningen til flere backend-systemer. Denne opdeling skaber imidlertid en yderligere tjeneste, hvis tilgængelighed, kapacitet og adgangsbeskyttelse skal planlægges.
I mange kundeprojekter er opdelingen af telemetrien en arkitektonisk beslutning, der skal træffes bevidst. Hvis projekter kræver forskellige adgangsområder, skal eksportmål, backend-rettigheder og ressourcemærkninger planlægges og kontrolleres i overensstemmelse hermed. Frit definerede attributter bruges til at beskrive telemetri; denne artikel behandler dem ikke som en erstatning for en teknisk gennemført adgangskontrol.
Distribuerede afhængigheder som cache, kø og database øger behovet for fejlfinding, men er ikke en grund til en generel fuldstændig logning. Især i et Redis-cluster kan enkelte tjenester og baggrundsprocesser se forskellige dele af en proces. Artiklen om Redis Cluster-sharding til store hostingplatforme klassificerer arkitekturen i et sådant cache-lag; for telemetri er det afgørende at styre kontekstgrænser og datamængde bevidst.
Beslutningen forbinder derfor Uafhængighed af backend med reelle driftsomkostninger. En collector gør det lettere at skifte mellem eller forsyne mål parallelt, men erstatter hverken kapacitetsplanlægning eller fejlhåndtering. Platformsteams bør fastlægge, hvilke data hvert mål modtager, hvem der får adgang, og hvilke fejl ved eksporten der ikke må påvirke applikationerne.
En trinvis udrulning starter med én tjeneste og nogle få overgange, der er vigtige for diagnosticeringen. Derefter testes kontekstkontinuitet, filterregler, eksportstabilitet og lagringsadfærd under repræsentativ belastning. Først når disse kriterier er opfyldt på en gennemsigtig måde, følger yderligere sprog, klienter eller backends. Dette begrænser risikoen og forhindrer, at der opstår en stor pipeline uden klart ansvar.
Kilder og den aktuelle videnskabelige viden
Status for undersøgelsen:
Undersøgelsesdato: 31. oktober 2026. Artiklen skelner klart mellem OpenTelemetry-specifikationer, SDK’er, collector-komponenter og backends. S12 og S14 henviser til de aktive udviklingsgrene »main« og er ikke bevis for en bestemt stabil udgivelse. Den main-status for S12, der blev kontrolleret på undersøgelsesdatoen, beskriver Tail-Sampling-processoren som en betaversion til traces og dokumenterer tilstandsbaseret behandling samt yderligere, variable indstillinger såsom sampling_strategy, maximum_trace_size_bytes, interne shards og en eksperimentel tail_storage-udvidelse. Disse oplysninger er udelukkende kontrolpunkter; inden offentliggørelse eller anvendelse skal Collector-Contrib-versionen og distributionen fastlægges, og alle udsagn skal afstemmes med den versionsspecifikke dokumentation. Dette gælder især for hukommelsesadfærd, routing af alle spans i et spor, standardværdier, feature gates, sharding-kombinationer og ressourcebehov. I forbindelse med S14 vedrører den fornyede gennemgang især sikre, autentificerede forbindelser og minimerede procesrettigheder.
https://opentelemetry.io/docs/
https://opentelemetry.io/docs/collector/deploy/
https://opentelemetry.io/docs/specs/otel/overview/
https://opentelemetry.io/docs/specs/otel/logs/
https://opentelemetry.io/docs/concepts/context-propagation/
https://opentelemetry.io/docs/concepts/instrumentation/
https://opentelemetry.io/docs/languages/sdk-configuration/
https://opentelemetry.io/docs/collector/quick-start/
https://opentelemetry.io/docs/languages/
https://opentelemetry.io/docs/platforms/linux/configuration/
https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/security-best-practices.md
https://opentelemetry.io/docs/languages/go/sampling/
https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/tailsamplingprocessor/README.md
https://opentelemetry.io/docs/concepts/signals/baggage/
https://opentelemetry.io/docs/collector/troubleshooting/




