Hoppa till innehållet
Kom igång

Spår och prestanda

Ett spår visar vad anropet gjorde och hur lång tid varje del tog. Autentisering, databas, poolen som väntade på en anslutning, och renderingen sist. Det steg som tog tiden är markerat.

Ingår från nivån Fri0 kr

Spår ingår i Fri, i samma vy som fel och loggar. Historiken är längre i Team, och felgrupperingen över tjänster ligger där.

TRACE 3f9a1c9 SPANSGET /v1/ordersauth.verifydb.querySELECT ordersio.waitnet.recvio.wait412 ms0260 ms520 ms
Latens per steg
Så fungerar det

Spår och prestanda i fyra stycken

Stegen ligger i nivåer, inte i en lista

Ett spår är ett träd. Anropet överst, och under det de steg det startade. Nivåerna gör det synligt om två steg körde samtidigt eller om det ena väntade på det andra.

  • Varje steg bär start, längd och den tjänst det kördes i.
  • Ett steg som väntade på ett annat syns som en förskjutning, inte som en längre stapel.
  • Det långsammaste steget markeras, så att ögat hittar det innan hjärnan hinner leta.

Spår-id:t binder ihop allt som hände

Fältet traceId finns på varje händelse, oavsett om den är ett fel, en loggrad, ett steg eller ett mätvärde. Det är den kopplingen som gör att ett larm leder hela vägen till orsaken.

  • captureError plockar upp traceId direkt från felet när felet bär ett.
  • Ett spår som passerar fyra tjänster är ett spår, inte fyra.
  • Från spåret når du loggraderna som skrevs under det, och sessionen som startade det.

OpenTelemetry går in utan egen agent

Skickar era tjänster redan OTLP behöver ni inte byta bibliotek. Peka exporten mot Gaddr Log och spåren landar i samma vy som fel och loggar.

  • Ingen agent installeras på maskinen, och ingen sidovagn körs bredvid tjänsten.
  • Samma inmatning tar emot spår, loggar och mätvärden.
  • Instrumenteringen är standardens, alltså inte något ni har skrivit för vår skull.

Samplingen tar bort volym innan den blir en kostnad

Fältet sampleRate avgör hur stor andel av händelserna som skickas alls. Det som sållas bort räknas i dropped.sampled, så en sänkt andel blir en siffra du kan läsa i stället för en tystnad du får lita på.

  • Standardvärdet är 1, alltså skickas allt tills du sätter något annat.
  • En sänkning gäller från nästa händelse och kräver ingen omstart av tjänsten.
  • Taket per session gäller ändå, och de två räknas var för sig i stats.
  • Anropet följs vidare till nästa tjänst, inte bara till kanten.
  • Svarstiden som fördelning, aldrig som ett medelvärde.
  • Det långsamma steget är utpekat och behöver inte gissas fram.
Siffrorna

Talen kommer ur koden

Varje tal nedan går att kontrollera mot filen som står under tabellen. Ett tal på en publik yta är ett påstående, och ett påstående utan plats är ett löfte.

sampleRate, standardvärde
1, alltså allt skickas
Räknare i stats
sent, queued, dropped
Skäl som räknas i dropped
quota, sampled, transport
Fält som binder ihop en händelse
traceId
Händelser per månad, planen Fri
500 000 händelser
Loggvolym, planen Fri
20 GB per månad
Historik, planen Fri
30 dagar
Användare, planen Fri
utan tak

sampleRate, dropped.sampled och stats ligger i capture och stats i packages/telemetry/src/index.ts. Fältet traceId står i TelemetryEvent i samma fil.

app/entry.client.tsxTypeScript
1import { initTelemetry } from "@gaddr/telemetry";
2
3const log = initTelemetry({
4  ingestKey: "gdr_pk_din_nyckel",
5  environment: "production",
6  release: "web@2026.8.15",
7  sampleRate: 0.25,
8});

Med sampleRate 0.25 skickas en fjärdedel av händelserna, och resten räknas upp i dropped.sampled. Anropa log.stats() för att läsa av hur många det blev.

NODEPYGOJVMOTLP4317 grpcGADDR LOGINGEN EGEN AGENTSAMMA ÄNDPUNKT
NÅGOT GICK FEL3f9a1c7d14:02:11 ERROR pay3f9a1c7dSPANETT IDTRE VYER
Gäller även här

Taket är hårt, också för den här delen

Ingen del av produkten kan skapa en post på fakturan på egen hand. Kvoten tar slut, och sedan slutar vi ta emot tills ni själva höjer taket.

  • Volym över kvoten faktureras inte, eftersom volym över kvoten inte tas emot.
  • Det som slängdes räknas i dropped och går att läsa med stats.
  • Höjningen är ett aktivt val ni gör i projektet, aldrig en automatisk uppgradering.
  • Inmatningen svarar GDR-LOG-0500 när kvoten är förbrukad, och koden går att larma på.
Frågor

Det ni undrar om spår och prestanda

Vanliga frågor

Måste vi byta instrumentering för att skicka spår?

Nej. OpenTelemetry går in direkt, och det ingår redan i planen Fri. Vår egen klient är ett alternativ, inte ett krav.

Hur vet vi hur mycket samplingen slängde?

log.stats() returnerar sent, queued och dropped, där dropped är uppdelat i quota, sampled och transport.

Kan ett spår börja i webbläsaren och sluta i api:t?

Ja. Spår-id:t följer med anropet, och stegen på båda sidor hamnar i samma träd.