Skip to Content
Upblit
AboutOpen SourceCommunityDeveloperContactPricing
Star on GitHub—Sign in
CTRL K
  • Introduction
    • AI Gateway Overview
    • Documents
    • Tenants
    • API Reference Overview
    • AI Gateway API
    • API Keys API
    • Applications API
    • Authentication
    • Ingest API (SDK)
    • Organizations API
    • Projects API
    • Telemetry API
    • Users API
    • Architecture Overview
    • Database Architecture
    • Multi-Tenancy
    • Security Model
    • Service Boundaries
    • Telemetry Pipeline
  • DeployX CLI
    • Contributing
    • Architecture Rules
    • Coding Guidelines
    • SDK Development
    • Dashboard Overview
    • AI Gateway
    • API Keys
    • Applications
    • Observability
    • Organizations
    • Profile
    • Projects
    • Quickstart
    • Authentication
    • Your First Project
    • Installation
    • Observability Overview
    • Structured Logs
    • Telemetry Flow
    • Distributed Traces
    • SDK Overview
    • Express SDK
    • Go SDK
    • Java SDK (Coming Soon)
    • Python SDK
    • React SDK (Coming Soon)
  • Introduction
    • AI Gateway Overview
    • Documents
    • Tenants
    • API Reference Overview
    • AI Gateway API
    • API Keys API
    • Applications API
    • Authentication
    • Ingest API (SDK)
    • Organizations API
    • Projects API
    • Telemetry API
    • Users API
    • Architecture Overview
    • Database Architecture
    • Multi-Tenancy
    • Security Model
    • Service Boundaries
    • Telemetry Pipeline
  • DeployX CLI
    • Contributing
    • Architecture Rules
    • Coding Guidelines
    • SDK Development
    • Dashboard Overview
    • AI Gateway
    • API Keys
    • Applications
    • Observability
    • Organizations
    • Profile
    • Projects
    • Quickstart
    • Authentication
    • Your First Project
    • Installation
    • Observability Overview
    • Structured Logs
    • Telemetry Flow
    • Distributed Traces
    • SDK Overview
    • Express SDK
    • Go SDK
    • Java SDK (Coming Soon)
    • Python SDK
    • React SDK (Coming Soon)

On This Page

  • End-to-End Flow
  • Ingest Payload Format
  • Traces
  • Logs
  • Buffer Behavior
  • Authentication
ObservabilityTelemetry Flow

Telemetry Flow

This page explains the complete path telemetry data takes from your instrumented application to the Upblit dashboard.

End-to-End Flow

Your App │ ├── HTTP request arrives │ SDK Middleware creates traceId + rootSpanId │ Stores in AsyncLocal / context.Context / threading.local │ ├── App code runs │ sdk.service() / sdk.call() create child spans │ sdk.log() creates log entries │ ├── Response sent │ Root span pushed to trace buffer │ └── Every 30 seconds (flush interval) SDK flushes trace buffer → POST /ingest/traces SDK flushes log buffer → POST /ingest/logs │ ├── Backend validates x-api-key header ├── Resolves applicationId + projectId from API key └── Stores in MongoDB (traces + logs collections) Dashboard └── GET /logs/project?id={projectId} MongoDB query: { projectId: projectId } Returns: Trace[]

Ingest Payload Format

Traces

{ "timestamp": "2026-05-27T10:00:00.000Z", "traces": [ { "timestamp": "2026-05-27T10:00:00.123Z", "requestMethod": "controller:POST", "requestURL": "/api/checkout", "responseStatus": 200, "traceId": "550e8400-e29b-41d4-a716-446655440000", "spanId": "6ba7b810-9dad-11d1-80b4-00c04fd430c8", "parentSpanId": null, "durationMs": 145 } ] }

Logs

{ "timestamp": "2026-05-27T10:00:00.000Z", "logs": [ { "traceId": "550e8400-e29b-41d4-a716-446655440000", "level": "error", "type": "app", "message": "Payment processing failed: timeout", "timestamp": "2026-05-27T10:00:00.456Z", "clientTimestamp": "2026-05-27T10:00:00.450Z" } ] }

Buffer Behavior

SDK initialized │ └── Background flush thread/goroutine starts (interval: 30s) │ ├── Timer fires → flush() │ ├── FlushTraces: drain buffer → POST /ingest/traces │ │ ├── Success: buffer cleared │ │ └── Failure: batch re-queued at front of buffer │ └── FlushLogs: drain buffer → POST /ingest/logs │ ├── Success: buffer cleared │ └── Failure: batch re-queued at front of buffer │ └── sdk.close() called Flush remaining buffer, stop thread

Authentication

The ingest endpoint authenticates via the x-api-key header. The backend:

  1. Validates the key against the ApiClient table in PostgreSQL
  2. Resolves applicationId from the key record
  3. Resolves projectId from the application record
  4. Stores telemetry with both IDs in MongoDB
Last updated on May 27, 2026
Structured LogsDistributed Traces
Upblit

A student-built observability workbench for logs, traces, metrics, API keys, and AI-assisted incident notes.

OAuthAPI scopesTrace contextRetention notes

Product

  • Architecture
  • Dashboard preview
  • AI docs
  • Security
  • Pricing

Developers

  • Developer docs
  • API reference
  • Changelog
  • GitHub
  • Status

Company

  • Support
  • Contact
  • Docs
  • Dashboard
  • Sign in

Legal

  • Privacy Policy
  • Terms
  • Cookie Policy
  • Acceptable Use
  • Data Retention
  • Data Processing

Copyright 2026 Upblit. All rights reserved.

Built for telemetry review, API operations, and incident response.