Monitoring
External OpenTelemetry sends usage metrics and events to your organization's collector, independently of the configured model provider. Use this page when you need operational data under your own collector and privacy policy.
The stream is off by default and uses a double opt-in: enable the master switch and select at least one real exporter.
The external telemetry schema is alpha. Additive fields can appear without notice; renames or removals require a schema-version change and a changelog entry.
External OpenTelemetry does not require product telemetry, trace upload, or coding-data sharing. Turning on one of those controls does not turn on the others.
Enable exporters
Set the master switch and the metrics exporter separately for the current process. Set the collector endpoint and optional authentication variables separately before starting RightNow.
Windows
$env:RIGHTNOW_EXTERNAL_OTEL = "1"$env:OTEL_METRICS_EXPORTER = "otlp"macOS
export RIGHTNOW_EXTERNAL_OTEL='1'export OTEL_METRICS_EXPORTER='otlp'Linux
export RIGHTNOW_EXTERNAL_OTEL='1'export OTEL_METRICS_EXPORTER='otlp'RIGHTNOW_EXTERNAL_OTEL=1 alone exports nothing, and exporter variables alone do nothing while the master switch is off.
Environment reference
| Variable | Default | Purpose |
|---|---|---|
| RIGHTNOW_EXTERNAL_OTEL | 0 | Master switch |
| OTEL_METRICS_EXPORTER | none | otlp, console, or none |
| OTEL_LOGS_EXPORTER | none | Event exporter: otlp, console, or none |
| OTEL_EXPORTER_OTLP_PROTOCOL | http/protobuf | http/protobuf or grpc |
| OTEL_EXPORTER_OTLP_ENDPOINT | http://localhost:4318 or http://localhost:4317 | Base endpoint selected by protocol |
| OTEL_EXPORTER_OTLP_LOGS_ENDPOINT | unset | Signal-specific endpoint used after trimming whitespace and trailing slashes |
| OTEL_EXPORTER_OTLP_METRICS_ENDPOINT | unset | Signal-specific endpoint used after trimming whitespace and trailing slashes |
| OTEL_EXPORTER_OTLP_HEADERS | unset | Collector authentication headers |
| OTEL_EXPORTER_OTLP_LOGS_HEADERS | unset | Log-specific headers |
| OTEL_EXPORTER_OTLP_METRICS_HEADERS | unset | Metric-specific headers |
| OTEL_EXPORTER_OTLP_CERTIFICATE / OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE / OTEL_EXPORTER_OTLP_METRICS_CERTIFICATE | unset | Shared or signal-specific trusted CA bundle |
| OTEL_EXPORTER_OTLP_TIMEOUT | 10000 ms | Export timeout |
| OTEL_METRIC_EXPORT_INTERVAL | 60000 ms | Metric export interval |
| OTEL_BLRP_SCHEDULE_DELAY / OTEL_LOGS_EXPORT_INTERVAL | 5000 ms | Log batch interval and alias |
| OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE | delta | delta or cumulative |
| OTEL_METRICS_INCLUDE_SESSION_ID | 1 | Include session ID on metrics |
| OTEL_METRICS_INCLUDE_VERSION | 0 | Include app version on metrics |
| OTEL_LOG_USER_PROMPTS | 0 | Prompt-content gate |
| OTEL_LOG_TOOL_DETAILS | 0 | Tool-detail content gate |
The matching [telemetry] keys are otel_enabled, otel_metrics_exporter, otel_logs_exporter, otel_endpoint, otel_protocol, otel_log_user_prompts, and otel_log_tool_details. Requirements can pin the master switch and content gates; otherwise environment values override the config file. A caller-supplied settings snapshot can only disable the stream or lock content gates off; no hosted fleet-settings request is made. Collector headers have no config-file key and therefore stay out of files on disk.
OTEL_RESOURCE_ATTRIBUTES is ignored because the exporter builds a fixed, audited resource.
Resource attributes
| Group | Included values |
|---|---|
| Build | Service and client versions |
| Entry point | CLI, headless, or agent |
| Terminal | Detected terminal emulator |
| Authenticated identity | User and available organization, team, or deployment IDs |
| Prompt identity | Per-prompt ID on events only, never metrics |
Service and schema identifiers stay stable within schema v1 for dashboard compatibility.
Startup activation
External telemetry follows local configuration. Startup releases the exporter gate after applying that configuration; it does not wait for a hosted fleet-settings request.
When a caller supplies a settings snapshot, its external-telemetry policy can only tighten the locally configured result. A deprecated setup in which product analytics already consumed shared OTEL variables suppresses this external stream; debug logging records the reason.
Signals
| Signal | What it covers |
|---|---|
| Sessions and turns | Starts, endings, outcomes, durations, and model labels |
| Token usage | Input, output, reasoning, and cache-read counts by model |
| Tool decisions | Allow, deny, cancelled, and followup outcomes with access kind and permission mode |
| Startup | Total startup, phase duration, timeout location, and authentication mode |
| Integrations | MCP connections, skills, plugins, subagents, compaction, authentication, and model switches |
Privacy defaults
Prompt text, code, full file paths, tool arguments, and identifying integration names are excluded by default. Bash command text is never exported, including when tool-detail logging is enabled.
The exporter also applies a closed attribute schema, secret and home-directory scrubbing, length caps, and export-time validation. Records that fail validation are dropped before export.
Debugging
Start RightNow with debug logging and inspect entries for the external exporter's resolved or suppressed state. Console exporters write redacted records to stderr, except in agent and headless entry points where console output is suppressed.
rightnow --debugIf nothing arrives, confirm both opt-ins, the protocol-specific endpoint, collector trust, and authentication header. Continue with the Troubleshooting guide, and use the configuration reference for related product controls.
