SignalDB Tempo API Compatibility
Implemented Endpoints (Router :3000)
| Endpoint | Status | Description |
|---|---|---|
GET /tempo/api/echo | Implemented | Health check |
GET /tempo/api/traces/{trace_id} | Implemented | Single trace lookup -> routes to Querier |
GET /tempo/api/search | Implemented | Trace search with filters -> routes to Querier |
GET /tempo/api/search/tags | Stub (empty) | |
GET /tempo/api/search/tag/{tag_name}/values | Stub (empty) | |
GET /tempo/api/v2/search/tags | Stub (empty) | |
GET /tempo/api/v2/search/tag/{tag_name}/values | Stub (empty) | |
GET /tempo/api/metrics/query | Stub (hardcoded) | |
GET /tempo/api/metrics/query_range | Stub (hardcoded) |
Query Flow
- •Client -> Router HTTP API (:3000)
- •Router validates auth (API key -> TenantContext)
- •Router discovers Querier via
QueryExecutioncapability - •Router sends Flight
do_getticket to Querier - •Ticket format:
find_trace:{tenant_slug}:{dataset_slug}:{trace_id}orsearch_traces:{tenant_slug}:{dataset_slug}:{params} - •Querier executes DataFusion SQL against Iceberg tables
- •Results stream back as Arrow RecordBatches
- •Router formats as Tempo JSON response
Admin API Endpoints
Requires admin_api_key from config:
| Endpoint | Method | Description |
|---|---|---|
/api/v1/admin/tenants | GET/POST | List/create tenants |
/api/v1/admin/tenants/{id} | GET/PUT/DELETE | Manage tenant |
/api/v1/admin/tenants/{id}/api-keys | GET/POST | List/create API keys |
/api/v1/admin/tenants/{id}/datasets | GET/POST | List/create datasets |
Grafana Integration
Native Datasource Plugin (src/grafana-plugin/)
- •Frontend: TypeScript React-based query/config editors (
@grafana/data,@grafana/ui) - •Backend: Rust via
grafana-plugin-sdk, connects to Router's Flight service (defaulthttp://localhost:50053) - •Auth passthrough: API key, tenant ID, dataset ID from Grafana secure JSON -> Flight headers
- •Signal support: Traces, metrics, logs query types
- •Arrow conversion: Direct RecordBatch -> Grafana Frame
Using Grafana's Built-in Tempo Datasource
The Router's Tempo-compatible endpoints at /tempo/api/... work directly with Grafana's Tempo datasource for trace lookup and basic search.
Key Files
| File | Purpose |
|---|---|
src/router/src/tempo.rs | Tempo API HTTP handlers |
src/router/src/admin.rs | Admin API handlers |
src/tempo-api/ | Protobuf definitions and Tempo types |
src/querier/src/flight.rs | Query execution, ticket parsing |
src/grafana-plugin/ | Native Grafana plugin |