Skip to main content

Scope

AreaImplemented in
Configure telemetry in UIui/src/app/pages/assistant/actions/configure-assistant-telemetry/*
Provider form/default/validationui/src/app/components/providers/telemetry/*
Provider registryui/src/providers/index.ts, ui/src/providers/provider.*.json
Provider CRUD APIapi/assistant-api/api/assistant/*assistant_telemetry_provider*.go
Runtime collector initapi/assistant-api/internal/adapters/internal/requestor.go
Exporter factoryapi/assistant-api/internal/observe/exporters/factory.go, pkg/telemetry/providers/*
Conversation telemetry read APIapi/assistant-api/api/assistant/get_all_assistant_telemetry.go

Configure Assistant Telemetry (UI)

RoutePurpose
/deployment/assistant/:assistantId/configure-telemetryList telemetry providers for assistant
/deployment/assistant/:assistantId/configure-telemetry/createCreate provider
/deployment/assistant/:assistantId/configure-telemetry/:telemetryIdUpdate provider
UI store and API calls:
ActionAPI
List providersGetAllAssistantTelemetryProvider
Create providerCreateAssistantTelemetryProvider
Read one providerGetAssistantTelemetryProvider
Update providerUpdateAssistantTelemetryProvider
Delete providerDeleteAssistantTelemetryProvider

UI Provider Support

Provider list shown in UI

Provider codeVisible in UI
otlp_httpYes
datadogYes
xrayYes
google_traceYes
azure_monitorYes

Backend-supported exporter types

Provider codeSupported by backend
otlp_httpYes
otlp_grpcYes
xrayYes
google_traceYes
azure_monitorYes
datadogYes
opensearchYes
loggingYes
provider-telemetry.test.ts verifies UI registry parity and telemetry.json presence for UI-visible telemetry providers.

UI Form Rules

RuleBehavior
Credential requiredrapida.credential_id must be present
Provider defaultsLoaded from ui/src/providers/<provider>/telemetry.json
Required fieldsValidated against telemetry.json parameter definitions
On provider switchKeeps only credential, then applies defaults for selected provider

telemetry.json parameters used in UI

ProviderParameters in JSON
otlp_httpendpoint, protocol, insecure
datadogendpoint, insecure
xrayendpoint, region, insecure
google_traceendpoint, insecure
azure_monitorendpoint, insecure

Assistant Telemetry Provider Data Model

Migration: api/assistant-api/migrations/000008_assistant_telemetry_providers.up.sql
TablePurpose
assistant_telemetry_providersone provider attachment per assistant
assistant_telemetry_provider_optionsflat key/value options per provider
Update behavior in service (telemetry.impl.service.go):
StepBehavior
Update provider rowupdates provider_type, enabled
Existing optionsarchived (status = archieve)
New optionsinserted as active rows

Runtime Wiring in assistant-api

Runtime collector initialization happens in initializeCollectors().
StageBehavior
Load providersreads AssistantTelemetryProviders from assistant state
Session metadatasets assistant/conversation/project/org IDs
Env exporter (optional)creates one exporter from TELEMETRY__TYPE + provider config
Credential mergeif rapida.credential_id exists, loads vault credential and merges string keys into options
Exporter creationresolves provider via exporter factory
Collector buildcreates fan-out event + metric collectors
Only enabled = true providers are injected when assistant is loaded (assistant.impl.service.go).

Exporter Option Parsing Rules

Option parsing code: pkg/telemetry/providers/config.go
ProviderRequiredOptional keys
otlp_http / otlp_grpcendpoint (effectively required; nil exporter if missing)protocol, headers, insecure
datadogendpointprotocol, headers, api_key, insecure
xrayendpointprotocol, region, insecure
google_traceendpointheaders, api_key, access_token, insecure
azure_monitorendpointheaders, api_key, insecure
opensearchnoneindex_prefix
loggingnonenone
Common parser behavior:
KeyBehavior
headersaccepts comma-separated key=value string
insecureaccepts true / 1

Conversation Telemetry Read API

API: GetAllAssistantTelemetry
Source indexMapped record
rapida-events-*TelemetryEvent
rapida-metrics-*TelemetryMetric
Supported filters from criteria:
Criteria keyApplied to
conversationIdevent + metric query
messageIdmessageId in events, contextId in metrics
nameevents
scopemetrics
Pagination behavior:
InputBehavior
page < 1coerced to 1
size < 1 or > 100coerced to 20
UI consumer for this API:
  • ui/src/app/components/base/modal/conversation-telemetry-modal/index.tsx