---
source: apollo-opentelemetry/crates/apollo-opentelemetry/src/config/mod.rs
expression: "apollo_configuration::export_json_schema::< OpenTelemetryConfig, >()"
---
{
"$defs": {
"AggregationConfig": {
"description": "Aggregation configuration.",
"oneOf": [
{
"const": "default",
"description": "Default aggregation based on instrument type.",
"type": "string"
},
{
"const": "sum",
"description": "Sum aggregation.",
"type": "string"
},
{
"const": "last_value",
"description": "Last value aggregation.",
"type": "string"
},
{
"const": "drop",
"description": "Drop all measurements.",
"type": "string"
},
{
"additionalProperties": false,
"description": "Explicit bucket histogram.",
"properties": {
"explicit_bucket_histogram": {
"$ref": "#/$defs/ExplicitBucketHistogramConfig"
}
},
"required": [
"explicit_bucket_histogram"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "Base2 exponential bucket histogram.",
"properties": {
"base2_exponential_bucket_histogram": {
"$ref": "#/$defs/Base2ExponentialBucketHistogramConfig"
}
},
"required": [
"base2_exponential_bucket_histogram"
],
"type": "object"
}
]
},
"AttributeKeysConfig": {
"additionalProperties": false,
"description": "Configuration for filtering attribute keys in a metric stream.",
"properties": {
"excluded": {
"default": [],
"description": "Attribute keys to exclude. Applied after `included`.",
"items": {
"type": "string"
},
"type": "array"
},
"included": {
"default": [],
"description": "Attribute keys to include. If empty, all attributes are included.",
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"AttributeLimitsConfig": {
"additionalProperties": false,
"description": "Global limits for attributes across all signals.\n\nThese limits apply to spans, log records, and other telemetry data.\nSee the [attribute limits specification](https://opentelemetry.io/docs/specs/otel/common/#attribute-limits)\nfor details.",
"properties": {
"attribute_count_limit": {
"default": 128,
"description": "Maximum number of attributes per span, event, or link.\n\nDefault: 128 per [attribute limits specification](https://opentelemetry.io/docs/specs/otel/common/#attribute-limits).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"attribute_value_length_limit": {
"default": null,
"description": "Maximum length of string attribute values. Longer values will be truncated.\n\nPer the [attribute limits specification](https://opentelemetry.io/docs/specs/otel/common/#attribute-limits),\nthere is no default length limit.",
"format": "uint32",
"minimum": 0,
"type": [
"integer",
"null"
]
}
},
"type": "object"
},
"AttributeValue": {
"anyOf": [
{
"type": "string"
},
{
"format": "int64",
"type": "integer"
},
{
"format": "double",
"type": "number"
},
{
"type": "boolean"
},
{
"items": {
"type": "string"
},
"type": "array"
},
{
"items": {
"format": "int64",
"type": "integer"
},
"type": "array"
},
{
"items": {
"format": "double",
"type": "number"
},
"type": "array"
},
{
"items": {
"type": "boolean"
},
"type": "array"
}
],
"description": "Possible attribute value types.\n\nSupports all OTel attribute value types: strings, integers, floats, booleans,\nand arrays of each."
},
"Base2ExponentialBucketHistogramConfig": {
"additionalProperties": false,
"description": "Base2 exponential bucket histogram configuration.",
"properties": {
"max_scale": {
"default": 20,
"description": "Maximum scale.",
"format": "int32",
"type": "integer"
},
"max_size": {
"default": 160,
"description": "Maximum number of buckets.",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"record_min_max": {
"default": true,
"description": "Whether to record min and max values.",
"type": "boolean"
}
},
"type": "object"
},
"BatchLogRecordProcessorConfig": {
"additionalProperties": false,
"description": "Batch log record processor configuration.\n\nBatches log records and exports them periodically or when the batch reaches\na size threshold. See the [SDK specification](https://opentelemetry.io/docs/specs/otel/trace/sdk/#batching-processor)\nfor details (logs follow the same model as traces).",
"properties": {
"export_timeout": {
"default": 30000,
"description": "Maximum time to wait for export to complete (in milliseconds).\n\nDefault: 30000ms per [SDK specification](https://opentelemetry.io/docs/specs/otel/trace/sdk/#batching-processor).",
"format": "uint64",
"minimum": 0,
"type": "integer"
},
"exporter": {
"$ref": "#/$defs/LogExporter"
},
"max_export_batch_size": {
"default": 512,
"description": "Maximum number of log records per batch.\n\nDefault: 512 per [SDK specification](https://opentelemetry.io/docs/specs/otel/trace/sdk/#batching-processor).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"max_queue_size": {
"default": 2048,
"description": "Maximum queue size for pending log records.\n\nDefault: 2048 per [SDK specification](https://opentelemetry.io/docs/specs/otel/trace/sdk/#batching-processor).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"schedule_delay": {
"default": 5000,
"description": "Maximum time to wait before exporting a batch (in milliseconds).\n\nDefault: 5000ms per [SDK specification](https://opentelemetry.io/docs/specs/otel/trace/sdk/#batching-processor).",
"format": "uint64",
"minimum": 0,
"type": "integer"
}
},
"required": [
"exporter"
],
"type": "object"
},
"BatchSpanProcessorConfig": {
"additionalProperties": false,
"description": "Batch span processor configuration.\n\nBatches spans and exports them periodically or when the batch reaches\na size threshold. See the [SDK specification](https://opentelemetry.io/docs/specs/otel/trace/sdk/#batching-processor)\nfor details.",
"properties": {
"export_timeout": {
"default": 30000,
"description": "Maximum time to wait for export to complete (in milliseconds).\n\nDefault: 30000ms per [SDK specification](https://opentelemetry.io/docs/specs/otel/trace/sdk/#batching-processor).",
"format": "uint64",
"minimum": 0,
"type": "integer"
},
"exporter": {
"$ref": "#/$defs/SpanExporter"
},
"max_export_batch_size": {
"default": 512,
"description": "Maximum number of spans per batch.\n\nDefault: 512 per [SDK specification](https://opentelemetry.io/docs/specs/otel/trace/sdk/#batching-processor).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"max_queue_size": {
"default": 2048,
"description": "Maximum queue size for pending spans.\n\nDefault: 2048 per [SDK specification](https://opentelemetry.io/docs/specs/otel/trace/sdk/#batching-processor).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"schedule_delay": {
"default": 5000,
"description": "Maximum time to wait before exporting a batch (in milliseconds).\n\nDefault: 5000ms per [SDK specification](https://opentelemetry.io/docs/specs/otel/trace/sdk/#batching-processor).",
"format": "uint64",
"minimum": 0,
"type": "integer"
}
},
"required": [
"exporter"
],
"type": "object"
},
"Compression": {
"description": "Compression algorithm for OTLP exports.",
"oneOf": [
{
"const": "none",
"description": "No compression (default).",
"type": "string"
},
{
"const": "gzip",
"description": "Gzip compression.",
"type": "string"
}
]
},
"ConsoleExporterConfig": {
"additionalProperties": false,
"properties": {
"format": {
"$ref": "#/$defs/OutputFormat",
"description": "Output format."
},
"target": {
"$ref": "#/$defs/ConsoleTarget",
"description": "Output target (stdout or stderr). Defaults to stdout."
}
},
"type": "object"
},
"ConsoleTarget": {
"description": "Console output target.",
"oneOf": [
{
"const": "stdout",
"description": "Write to stdout.",
"type": "string"
},
{
"const": "stderr",
"description": "Write to stderr.",
"type": "string"
}
]
},
"DatadogGrpcExporterConfig": {
"additionalProperties": false,
"description": "Datadog OTLP gRPC exporter configuration.\n\nSends telemetry directly to Datadog's OTLP intake endpoints (agentless) over gRPC.",
"properties": {
"api_key": {
"$ref": "#/$defs/MetadataValue",
"description": "Datadog API key."
},
"compression": {
"$ref": "#/$defs/Compression",
"description": "Compression algorithm."
},
"endpoint": {
"$ref": "#/$defs/Url",
"description": "Datadog OTLP intake endpoint URL.\n\nSee [Datadog OTLP Ingest](https://docs.datadoghq.com/opentelemetry/interoperability/otlp_ingest_in_the_agent/#sending-traces-metrics-and-logs-over-otlpgrpc)\nfor endpoint URLs by region:\n- US1: `https://trace-otlp.intake.datadoghq.com:4317`\n- EU1: `https://trace-otlp.intake.datadoghq.eu:4317`\n- US3: `https://trace-otlp.intake.us3.datadoghq.com:4317`\n- US5: `https://trace-otlp.intake.us5.datadoghq.com:4317`\n- AP1: `https://trace-otlp.intake.ap1.datadoghq.com:4317`\n- GOV: `https://trace-otlp.intake.ddog-gov.com:4317`"
},
"timeout": {
"default": 10000,
"description": "Export timeout in milliseconds.",
"format": "uint64",
"minimum": 0,
"type": "integer"
},
"tls": {
"anyOf": [
{
"$ref": "#/$defs/TlsConfig"
},
{
"type": "null"
}
],
"description": "TLS configuration."
}
},
"required": [
"api_key",
"endpoint"
],
"type": "object"
},
"DatadogHttpExporterConfig": {
"additionalProperties": false,
"description": "Datadog OTLP HTTP exporter configuration.\n\nSends telemetry directly to Datadog's OTLP intake endpoints (agentless) over HTTP.",
"properties": {
"api_key": {
"$ref": "#/$defs/HeaderValue",
"description": "Datadog API key."
},
"compression": {
"$ref": "#/$defs/Compression",
"description": "Compression algorithm."
},
"endpoint": {
"$ref": "#/$defs/Url",
"description": "Datadog OTLP intake endpoint URL.\n\nSee [Datadog OTLP Ingest](https://docs.datadoghq.com/opentelemetry/interoperability/otlp_ingest_in_the_agent/#sending-traces-metrics-and-logs-over-otlphttp)\nfor endpoint URLs by region:\n- US1: `https://trace-otlp.intake.datadoghq.com/api/v0.2/traces`\n- EU1: `https://trace-otlp.intake.datadoghq.eu/api/v0.2/traces`\n- US3: `https://trace-otlp.intake.us3.datadoghq.com/api/v0.2/traces`\n- US5: `https://trace-otlp.intake.us5.datadoghq.com/api/v0.2/traces`\n- AP1: `https://trace-otlp.intake.ap1.datadoghq.com/api/v0.2/traces`\n- GOV: `https://trace-otlp.intake.ddog-gov.com/api/v0.2/traces`"
},
"timeout": {
"default": 10000,
"description": "Export timeout in milliseconds.",
"format": "uint64",
"minimum": 0,
"type": "integer"
},
"tls": {
"anyOf": [
{
"$ref": "#/$defs/TlsConfig"
},
{
"type": "null"
}
],
"description": "TLS configuration."
}
},
"required": [
"api_key",
"endpoint"
],
"type": "object"
},
"DatadogNativeExporterConfig": {
"additionalProperties": false,
"description": "Datadog exporter configuration.",
"properties": {
"api_key": {
"description": "Datadog API key.",
"type": "string"
},
"endpoint": {
"$ref": "#/$defs/Url",
"description": "Datadog OTLP endpoint URL.\n\nSee relevant Datadog documentation\nhttps://docs.datadoghq.com/opentelemetry/setup/otlp_ingest/metrics\nhttps://docs.datadoghq.com/opentelemetry/setup/otlp_ingest/logs\nhttps://docs.datadoghq.com/opentelemetry/setup/otlp_ingest_in_the_agent"
},
"env": {
"default": null,
"description": "Environment name.",
"type": [
"string",
"null"
]
},
"service": {
"default": null,
"description": "Service name override.",
"type": [
"string",
"null"
]
},
"tags": {
"default": [],
"description": "Custom tags to add to all spans.",
"items": {
"type": "string"
},
"type": "array"
},
"version": {
"default": null,
"description": "Version string.",
"type": [
"string",
"null"
]
}
},
"required": [
"api_key",
"endpoint"
],
"type": "object"
},
"EnvironmentResourceDetector": {
"additionalProperties": false,
"description": "Environment-based resource detector configuration.",
"properties": {
"excluded": {
"default": [],
"description": "Excluded resource attribute keys.",
"items": {
"type": "string"
},
"type": "array"
},
"included": {
"default": [],
"description": "Included resource attribute keys.",
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"ExplicitBucketHistogramConfig": {
"additionalProperties": false,
"description": "Explicit bucket histogram configuration.",
"properties": {
"boundaries": {
"default": [],
"description": "Bucket boundaries.",
"items": {
"format": "double",
"type": "number"
},
"type": "array"
},
"record_min_max": {
"default": true,
"description": "Whether to record min and max values.",
"type": "boolean"
}
},
"type": "object"
},
"GrafanaCloudHttpExporterConfig": {
"additionalProperties": false,
"description": "Grafana Cloud OTLP exporter configuration.\n\nUses Basic authentication with instance ID and API key.",
"properties": {
"api_key": {
"description": "Grafana Cloud API key (typically starts with `glc_...`).",
"type": "string"
},
"compression": {
"$ref": "#/$defs/Compression",
"description": "Compression algorithm."
},
"endpoint": {
"$ref": "#/$defs/Url",
"description": "Grafana Cloud OTLP endpoint URL.\n\nSee [Grafana Cloud OTLP endpoint](https://grafana.com/docs/grafana-cloud/send-data/otlp/send-data-otlp/#manual-opentelemetry-setup-for-advanced-users)\nfor endpoint URL format: `https://otlp-gateway-{zone}.grafana.net/otlp`\n\nCommon zones: `prod-us-central-0`, `prod-eu-west-0`, `prod-ap-southeast-0`"
},
"instance_id": {
"description": "Grafana Cloud instance ID.",
"type": "string"
},
"timeout": {
"default": 10000,
"description": "Export timeout in milliseconds.",
"format": "uint64",
"minimum": 0,
"type": "integer"
},
"tls": {
"anyOf": [
{
"$ref": "#/$defs/TlsConfig"
},
{
"type": "null"
}
],
"description": "TLS configuration."
}
},
"required": [
"instance_id",
"api_key",
"endpoint"
],
"type": "object"
},
"Header": {
"additionalProperties": false,
"description": "Custom header key-value pair.",
"properties": {
"name": {
"$ref": "#/$defs/HeaderName",
"description": "Header name."
},
"value": {
"$ref": "#/$defs/HeaderValue",
"description": "Header value (may contain sensitive data like API keys)."
}
},
"required": [
"name",
"value"
],
"type": "object"
},
"HeaderName": {
"type": "string"
},
"HeaderValue": {
"type": "string"
},
"HeadersList": {
"type": "string"
},
"HoneycombGrpcExporterConfig": {
"additionalProperties": false,
"description": "Honeycomb gRPC exporter configuration.",
"properties": {
"api_key": {
"$ref": "#/$defs/HeaderValue",
"description": "Honeycomb API key."
},
"compression": {
"$ref": "#/$defs/Compression",
"description": "Compression algorithm."
},
"dataset": {
"anyOf": [
{
"$ref": "#/$defs/HeaderValue"
},
{
"type": "null"
}
],
"default": null,
"description": "Dataset name (required for Honeycomb Classic)."
},
"endpoint": {
"$ref": "#/$defs/Url",
"description": "Honeycomb OTLP endpoint URL.\n\nSee [Honeycomb endpoints](https://docs.honeycomb.io/send-data/opentelemetry/)\nfor endpoint URLs by region:\n- US: `https://api.honeycomb.io:443`\n- EU: `https://api.eu1.honeycomb.io:443`"
},
"timeout": {
"default": 10000,
"description": "Export timeout in milliseconds.",
"format": "uint64",
"minimum": 0,
"type": "integer"
},
"tls": {
"anyOf": [
{
"$ref": "#/$defs/TlsConfig"
},
{
"type": "null"
}
],
"description": "TLS configuration."
}
},
"required": [
"api_key",
"endpoint"
],
"type": "object"
},
"HoneycombHttpExporterConfig": {
"additionalProperties": false,
"description": "Honeycomb HTTP exporter configuration.",
"properties": {
"api_key": {
"$ref": "#/$defs/HeaderValue",
"description": "Honeycomb API key."
},
"compression": {
"$ref": "#/$defs/Compression",
"description": "Compression algorithm."
},
"dataset": {
"anyOf": [
{
"$ref": "#/$defs/HeaderValue"
},
{
"type": "null"
}
],
"default": null,
"description": "Dataset name (required for Honeycomb Classic)."
},
"endpoint": {
"$ref": "#/$defs/Url",
"description": "Honeycomb OTLP endpoint URL.\n\nSee [Honeycomb endpoints](https://docs.honeycomb.io/send-data/opentelemetry/#using-the-honeycomb-opentelemetry-endpoint)\nfor endpoint URLs by region:\n- US: `https://api.honeycomb.io`\n- EU: `https://api.eu1.honeycomb.io`"
},
"timeout": {
"default": 10000,
"description": "Export timeout in milliseconds.",
"format": "uint64",
"minimum": 0,
"type": "integer"
},
"tls": {
"anyOf": [
{
"$ref": "#/$defs/TlsConfig"
},
{
"type": "null"
}
],
"description": "TLS configuration."
}
},
"required": [
"api_key",
"endpoint"
],
"type": "object"
},
"InstrumentType": {
"description": "Instrument types for view selection.",
"enum": [
"counter",
"up_down_counter",
"histogram",
"gauge",
"observable_counter",
"observable_up_down_counter",
"observable_gauge"
],
"type": "string"
},
"LogExporter": {
"description": "Log exporter configuration.",
"oneOf": [
{
"additionalProperties": false,
"description": "OTLP over HTTP (default port 4318).",
"properties": {
"otlp_http": {
"$ref": "#/$defs/OtlpHttpExporterConfig"
}
},
"required": [
"otlp_http"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "OTLP over gRPC (default port 4317).",
"properties": {
"otlp_grpc": {
"$ref": "#/$defs/OtlpGrpcExporterConfig"
}
},
"required": [
"otlp_grpc"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "Datadog OTLP direct intake over HTTP (agentless).",
"properties": {
"datadog_otlp_http": {
"$ref": "#/$defs/DatadogHttpExporterConfig"
}
},
"required": [
"datadog_otlp_http"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "Datadog OTLP direct intake over gRPC (agentless).",
"properties": {
"datadog_otlp_grpc": {
"$ref": "#/$defs/DatadogGrpcExporterConfig"
}
},
"required": [
"datadog_otlp_grpc"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "New Relic over HTTP.",
"properties": {
"new_relic_http": {
"$ref": "#/$defs/NewRelicHttpExporterConfig"
}
},
"required": [
"new_relic_http"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "New Relic over gRPC.",
"properties": {
"new_relic_grpc": {
"$ref": "#/$defs/NewRelicGrpcExporterConfig"
}
},
"required": [
"new_relic_grpc"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "Honeycomb over HTTP.",
"properties": {
"honeycomb_http": {
"$ref": "#/$defs/HoneycombHttpExporterConfig"
}
},
"required": [
"honeycomb_http"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "Honeycomb over gRPC.",
"properties": {
"honeycomb_grpc": {
"$ref": "#/$defs/HoneycombGrpcExporterConfig"
}
},
"required": [
"honeycomb_grpc"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "Grafana Cloud OTLP exporter.",
"properties": {
"grafana_cloud": {
"$ref": "#/$defs/GrafanaCloudHttpExporterConfig"
}
},
"required": [
"grafana_cloud"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "Console exporter for debugging.",
"properties": {
"console": {
"$ref": "#/$defs/ConsoleExporterConfig"
}
},
"required": [
"console"
],
"type": "object"
}
]
},
"LogLevel": {
"description": "Log level for SDK internal logging.",
"enum": [
"trace",
"debug",
"info",
"warn",
"error"
],
"type": "string"
},
"LogRecordLimitsConfig": {
"additionalProperties": false,
"description": "Log record limits configuration.\n\nSee the [attribute limits specification](https://opentelemetry.io/docs/specs/otel/common/#attribute-limits)\nfor details on limit behavior.",
"properties": {
"attribute_count_limit": {
"default": 128,
"description": "Maximum number of attributes per log record.\n\nDefault: 128 per [attribute limits specification](https://opentelemetry.io/docs/specs/otel/common/#attribute-limits).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"attribute_value_length_limit": {
"default": null,
"description": "Maximum length of string attribute values. No limit by default.\n\nPer the [attribute limits specification](https://opentelemetry.io/docs/specs/otel/common/#attribute-limits),\nthere is no default length limit.",
"format": "uint32",
"minimum": 0,
"type": [
"integer",
"null"
]
}
},
"type": "object"
},
"LogRecordProcessor": {
"description": "Log record processor configuration.",
"oneOf": [
{
"additionalProperties": false,
"description": "Batch processor that collects log records and exports them in batches.",
"properties": {
"batch": {
"$ref": "#/$defs/BatchLogRecordProcessorConfig"
}
},
"required": [
"batch"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "Simple processor that exports each log record immediately.",
"properties": {
"simple": {
"$ref": "#/$defs/SimpleLogRecordProcessorConfig"
}
},
"required": [
"simple"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "Rate-limited processor that applies rate limiting before batch processing.",
"properties": {
"rate_limited": {
"$ref": "#/$defs/RateLimitedLogRecordProcessorConfig"
}
},
"required": [
"rate_limited"
],
"type": "object"
}
]
},
"LoggerProviderConfig": {
"additionalProperties": false,
"description": "Logger provider configuration.",
"properties": {
"limits": {
"$ref": "#/$defs/LogRecordLimitsConfig",
"description": "Log record limits."
},
"processors": {
"description": "Log record processors for collecting and exporting logs.",
"items": {
"$ref": "#/$defs/LogRecordProcessor"
},
"type": "array"
}
},
"type": "object"
},
"MetadataValue": {
"type": "string"
},
"MeterProviderConfig": {
"additionalProperties": false,
"description": "Meter provider configuration.",
"properties": {
"readers": {
"description": "Metric readers for collecting and exporting metrics.",
"items": {
"$ref": "#/$defs/MetricReader"
},
"type": "array"
},
"views": {
"description": "Views for customizing metric aggregation.",
"items": {
"$ref": "#/$defs/ViewConfig"
},
"type": "array"
}
},
"type": "object"
},
"MetricExporter": {
"description": "Metric exporter configuration.",
"oneOf": [
{
"additionalProperties": false,
"description": "OTLP over HTTP (default port 4318).",
"properties": {
"otlp_http": {
"$ref": "#/$defs/OtlpHttpExporterConfig"
}
},
"required": [
"otlp_http"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "OTLP over gRPC (default port 4317).",
"properties": {
"otlp_grpc": {
"$ref": "#/$defs/OtlpGrpcExporterConfig"
}
},
"required": [
"otlp_grpc"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "Datadog OTLP direct intake over HTTP (agentless).",
"properties": {
"datadog_otlp_http": {
"$ref": "#/$defs/DatadogHttpExporterConfig"
}
},
"required": [
"datadog_otlp_http"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "Datadog OTLP direct intake over gRPC (agentless).",
"properties": {
"datadog_otlp_grpc": {
"$ref": "#/$defs/DatadogGrpcExporterConfig"
}
},
"required": [
"datadog_otlp_grpc"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "New Relic over HTTP.",
"properties": {
"new_relic_http": {
"$ref": "#/$defs/NewRelicHttpExporterConfig"
}
},
"required": [
"new_relic_http"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "New Relic over gRPC.",
"properties": {
"new_relic_grpc": {
"$ref": "#/$defs/NewRelicGrpcExporterConfig"
}
},
"required": [
"new_relic_grpc"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "Honeycomb over HTTP.",
"properties": {
"honeycomb_http": {
"$ref": "#/$defs/HoneycombHttpExporterConfig"
}
},
"required": [
"honeycomb_http"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "Honeycomb over gRPC.",
"properties": {
"honeycomb_grpc": {
"$ref": "#/$defs/HoneycombGrpcExporterConfig"
}
},
"required": [
"honeycomb_grpc"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "Grafana Cloud OTLP exporter.",
"properties": {
"grafana_cloud": {
"$ref": "#/$defs/GrafanaCloudHttpExporterConfig"
}
},
"required": [
"grafana_cloud"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "Console exporter for debugging.",
"properties": {
"console": {
"$ref": "#/$defs/ConsoleExporterConfig"
}
},
"required": [
"console"
],
"type": "object"
}
]
},
"MetricReader": {
"description": "Metric reader configuration.",
"oneOf": [
{
"additionalProperties": false,
"description": "Periodic reader that exports metrics at regular intervals.",
"properties": {
"periodic": {
"$ref": "#/$defs/PeriodicMetricReaderConfig"
}
},
"required": [
"periodic"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "Pull-based reader for scrape endpoints (e.g., Prometheus).",
"properties": {
"pull": {
"$ref": "#/$defs/PullMetricReaderConfig"
}
},
"required": [
"pull"
],
"type": "object"
}
]
},
"NewRelicGrpcExporterConfig": {
"additionalProperties": false,
"description": "New Relic gRPC exporter configuration.",
"properties": {
"compression": {
"$ref": "#/$defs/Compression",
"description": "Compression algorithm."
},
"endpoint": {
"$ref": "#/$defs/Url",
"description": "New Relic OTLP endpoint URL.\n\nSee [New Relic OTLP endpoints](https://docs.newrelic.com/docs/opentelemetry/best-practices/opentelemetry-otlp/#configure-endpoint-port-protocol)\nfor endpoint URLs by region:\n- US: `https://otlp.nr-data.net:4317`\n- EU: `https://otlp.eu01.nr-data.net:4317`\n- FedRAMP: `https://gov-otlp.nr-data.net:4317`"
},
"license_key": {
"$ref": "#/$defs/HeaderValue",
"description": "New Relic license key (Ingest type)."
},
"timeout": {
"default": 10000,
"description": "Export timeout in milliseconds.",
"format": "uint64",
"minimum": 0,
"type": "integer"
},
"tls": {
"anyOf": [
{
"$ref": "#/$defs/TlsConfig"
},
{
"type": "null"
}
],
"description": "TLS configuration."
}
},
"required": [
"license_key",
"endpoint"
],
"type": "object"
},
"NewRelicHttpExporterConfig": {
"additionalProperties": false,
"description": "New Relic HTTP exporter configuration.",
"properties": {
"compression": {
"$ref": "#/$defs/Compression",
"description": "Compression algorithm."
},
"endpoint": {
"$ref": "#/$defs/Url",
"description": "New Relic OTLP endpoint URL.\n\nSee [New Relic OTLP endpoints](https://docs.newrelic.com/docs/opentelemetry/best-practices/opentelemetry-otlp/#configure-endpoint-port-protocol)\nfor endpoint URLs by region:\n- US: `https://otlp.nr-data.net:4318`\n- EU: `https://otlp.eu01.nr-data.net:4318`\n- FedRAMP: `https://gov-otlp.nr-data.net:4318`"
},
"license_key": {
"$ref": "#/$defs/HeaderValue",
"description": "New Relic license key (Ingest type)."
},
"timeout": {
"default": 10000,
"description": "Export timeout in milliseconds.",
"format": "uint64",
"minimum": 0,
"type": "integer"
},
"tls": {
"anyOf": [
{
"$ref": "#/$defs/TlsConfig"
},
{
"type": "null"
}
],
"description": "TLS configuration."
}
},
"required": [
"license_key",
"endpoint"
],
"type": "object"
},
"OtlpEncoding": {
"description": "OTLP message encoding format.\n\nSee [`OtlpHttpEncoding`](https://github.com/open-telemetry/opentelemetry-configuration/blob/main/schema-docs.md#otlphttpencoding)\nin the declarative configuration schema.",
"oneOf": [
{
"const": "protobuf",
"description": "Protocol Buffers encoding (default, most efficient).",
"type": "string"
},
{
"const": "json",
"description": "JSON encoding (may not be supported by all implementations).",
"type": "string"
}
]
},
"OtlpGrpcExporterConfig": {
"additionalProperties": false,
"description": "OTLP gRPC exporter configuration.\n\nExports telemetry data over gRPC using the OTLP protocol.\nSee [`OtlpGrpcExporter`](https://github.com/open-telemetry/opentelemetry-configuration/blob/main/schema-docs.md#otlpgrpcexporter)\nand [`OtlpGrpcMetricExporter`](https://github.com/open-telemetry/opentelemetry-configuration/blob/main/schema-docs.md#otlpgrpcmetricexporter)\nin the declarative configuration schema.\n\n## Unsupported fields\n\n`default_histogram_aggregation` is not supported.",
"properties": {
"compression": {
"$ref": "#/$defs/Compression",
"description": "Compression algorithm.\n\nDefault: no compression."
},
"endpoint": {
"$ref": "#/$defs/Url",
"default": "http://localhost:4317/",
"description": "Server address.\n\nDefault: `http://localhost:4317`."
},
"headers": {
"description": "Custom headers as key-value pairs.",
"items": {
"$ref": "#/$defs/Header"
},
"type": "array"
},
"headers_list": {
"$ref": "#/$defs/HeadersList",
"default": "",
"description": "Headers as a comma-separated list of `name=value` pairs, with values percent-encoded.\n\nExample: `\"api-key=abc123,x-tenant=my-org\"`.\nMerged with `headers`; `headers` takes priority on duplicate keys."
},
"temporality_preference": {
"$ref": "#/$defs/TemporalityPreference",
"description": "Temporality preference for metric exports.\n\nControls whether metrics are reported as cumulative totals or delta changes.\nOnly applies when used as a metric exporter. Ignored for trace and log exporters.\nSee [`ExporterTemporalityPreference`](https://github.com/open-telemetry/opentelemetry-configuration/blob/main/schema-docs.md#exportertemporalitypreference).\n\nDefault: `cumulative`."
},
"timeout": {
"default": 10000,
"description": "Export timeout in milliseconds.\n\nDefault: 10000ms.",
"format": "uint64",
"minimum": 0,
"type": "integer"
},
"tls": {
"anyOf": [
{
"$ref": "#/$defs/TlsConfig"
},
{
"type": "null"
}
],
"description": "TLS configuration."
}
},
"type": "object"
},
"OtlpHttpExporterConfig": {
"additionalProperties": false,
"description": "OTLP HTTP exporter configuration.\n\nExports telemetry data over HTTP using the OTLP protocol.\nSee [`OtlpHttpExporter`](https://github.com/open-telemetry/opentelemetry-configuration/blob/main/schema-docs.md#otlphttpexporter)\nand [`OtlpHttpMetricExporter`](https://github.com/open-telemetry/opentelemetry-configuration/blob/main/schema-docs.md#otlphttpmetricexporter)\nin the declarative configuration schema.\n\n## Unsupported fields\n\n`default_histogram_aggregation` is not supported.",
"properties": {
"compression": {
"$ref": "#/$defs/Compression",
"description": "Compression algorithm.\n\nDefault: no compression."
},
"encoding": {
"$ref": "#/$defs/OtlpEncoding",
"description": "Message encoding format.\n\nDefault: `protobuf`."
},
"endpoint": {
"$ref": "#/$defs/Url",
"default": "http://localhost:4318/",
"description": "Endpoint URL. Signal paths (`/v1/traces`, `/v1/metrics`, `/v1/logs`) are appended to this.\n\nDefault: `http://localhost:4318`"
},
"headers": {
"description": "Custom headers as key-value pairs.",
"items": {
"$ref": "#/$defs/Header"
},
"type": "array"
},
"headers_list": {
"$ref": "#/$defs/HeadersList",
"default": "",
"description": "Headers as a comma-separated list of `name=value` pairs, with values percent-encoded.\n\nExample: `\"api-key=abc123,x-tenant=my-org\"`.\nMerged with `headers`; `headers` takes priority on duplicate keys."
},
"temporality_preference": {
"$ref": "#/$defs/TemporalityPreference",
"description": "Temporality preference for metric exports.\n\nControls whether metrics are reported as cumulative totals or delta changes.\nOnly applies when used as a metric exporter. Ignored for trace and log exporters.\nSee [`ExporterTemporalityPreference`](https://github.com/open-telemetry/opentelemetry-configuration/blob/main/schema-docs.md#exportertemporalitypreference).\n\nDefault: `cumulative`."
},
"timeout": {
"default": 10000,
"description": "Export timeout in milliseconds.\n\nDefault: 10000ms.",
"format": "uint64",
"minimum": 0,
"type": "integer"
},
"tls": {
"anyOf": [
{
"$ref": "#/$defs/TlsConfig"
},
{
"type": "null"
}
],
"description": "TLS configuration."
}
},
"type": "object"
},
"OutputFormat": {
"oneOf": [
{
"const": "auto",
"description": "Detect format based on terminal: pretty if TTY, JSON otherwise.",
"type": "string"
},
{
"const": "pretty",
"description": "Human-readable colored output.",
"type": "string"
},
{
"const": "json",
"description": "OTLP-compliant JSON (one object per line).",
"type": "string"
}
]
},
"ParentBasedSamplerConfig": {
"additionalProperties": false,
"description": "Configuration for parent-based sampling.",
"properties": {
"local_parent_not_sampled": {
"anyOf": [
{
"$ref": "#/$defs/RootSampler"
},
{
"type": "null"
}
],
"description": "Sampler when parent is local and not sampled."
},
"local_parent_sampled": {
"anyOf": [
{
"$ref": "#/$defs/RootSampler"
},
{
"type": "null"
}
],
"description": "Sampler when parent is local and sampled."
},
"remote_parent_not_sampled": {
"anyOf": [
{
"$ref": "#/$defs/RootSampler"
},
{
"type": "null"
}
],
"description": "Sampler when parent is remote and not sampled."
},
"remote_parent_sampled": {
"anyOf": [
{
"$ref": "#/$defs/RootSampler"
},
{
"type": "null"
}
],
"description": "Sampler when parent is remote and sampled."
},
"root": {
"anyOf": [
{
"$ref": "#/$defs/RootSampler"
},
{
"type": "null"
}
],
"description": "Sampler for root spans (no parent)."
}
},
"type": "object"
},
"PeriodicMetricReaderConfig": {
"additionalProperties": false,
"description": "Periodic metric reader configuration.\n\nCollects and exports metrics at regular intervals. See the\n[SDK specification](https://opentelemetry.io/docs/specs/otel/metrics/sdk/#periodic-exporting-metricreader)\nfor details.",
"properties": {
"exporter": {
"$ref": "#/$defs/MetricExporter",
"description": "Exporter configuration."
},
"interval": {
"default": 60000,
"description": "Interval between exports (in milliseconds).\n\nDefault: 60000ms (1 minute) per [SDK specification](https://opentelemetry.io/docs/specs/otel/metrics/sdk/#periodic-exporting-metricreader).",
"format": "uint64",
"minimum": 0,
"type": "integer"
},
"timeout": {
"default": 30000,
"description": "Export timeout (in milliseconds).\n\nDefault: 30000ms per [SDK specification](https://opentelemetry.io/docs/specs/otel/metrics/sdk/#periodic-exporting-metricreader).",
"format": "uint64",
"minimum": 0,
"type": "integer"
}
},
"required": [
"exporter"
],
"type": "object"
},
"Propagator": {
"description": "Available propagator types.\n\nSee the [propagator specification](https://opentelemetry.io/docs/specs/otel/context/api-propagators/)\nfor details.",
"oneOf": [
{
"const": "tracecontext",
"description": "W3C Trace Context propagator (recommended).",
"type": "string"
},
{
"const": "baggage",
"description": "W3C Baggage propagator.",
"type": "string"
},
{
"const": "b3",
"description": "B3 single-header propagator.",
"type": "string"
},
{
"const": "b3multi",
"description": "B3 multi-header propagator.",
"type": "string"
},
{
"const": "jaeger",
"description": "Jaeger propagator.",
"type": "string"
},
{
"const": "xray",
"description": "AWS X-Ray propagator.",
"type": "string"
},
{
"const": "ottrace",
"description": "OpenTracing propagator.",
"type": "string"
}
]
},
"PropagatorConfig": {
"additionalProperties": false,
"description": "Configuration for context propagators.",
"properties": {
"composite": {
"description": "List of propagators to use for context propagation.\n\nCommon values: `tracecontext`, `baggage`, `b3`, `b3multi`, `jaeger`, `xray`, `ottrace`.",
"items": {
"$ref": "#/$defs/Propagator"
},
"type": "array"
}
},
"type": "object"
},
"PullMetricReaderConfig": {
"additionalProperties": false,
"description": "Pull-based metric reader configuration.\n\nUsed for scrape-based collection (e.g., Prometheus).",
"properties": {
"exporter": {
"$ref": "#/$defs/MetricExporter",
"description": "Exporter configuration."
}
},
"required": [
"exporter"
],
"type": "object"
},
"RateLimitedLogRecordProcessorConfig": {
"additionalProperties": false,
"description": "Rate-limited log record processor configuration.\n\nProtects against unexpected telemetry costs by enforcing a maximum logs-per-second\nlimit. Logs exceeding the limit are dropped before entering the batch queue,\npreventing runaway telemetry from infinite loops, retry storms, or load spikes.\n\n# Observability\n\n**UNSTABLE:** Metrics follow the [OTel SDK semantic conventions] which are currently\nin development status. Metric names and attributes may change in future releases.\n\n**Processor metric:** `otel.sdk.processor.log.processed`\n\n| Attribute | Description |\n|----------------------|-------------------------------------------------------|\n| `otel.component.type`| `rate_limited_log_processor` |\n| `otel.component.name`| `rate_limited_log_processor/{instance_id}` |\n| `error.type` | `rate_limited` (only present when logs are dropped) |\n\n**Exporter metric:** `otel.sdk.exporter.log.exported`\n\n| Attribute | Description |\n|----------------------|-------------------------------------------------------|\n| `otel.component.type`| `{exporter}_exporter` (e.g., `otlp_http_exporter`) |\n| `otel.component.name`| `{exporter}_exporter/{instance_id}` |\n| `server.address` | Destination host (e.g., `localhost`) |\n| `server.port` | Destination port (e.g., `4318`) |\n| `error.type` | `export_failed` (only present on failure) |\n\nThe processor and exporter share the same `{instance_id}` so you can correlate\nrate-limited drops with export failures for the same pipeline.\n\nUse these metrics to:\n- Alert when processor drops exceed a threshold (rate limit too low)\n- Monitor exporter failures and retries\n- Calculate drop rates by comparing records with/without `error.type`\n\n[OTel SDK semantic conventions]: https://github.com/open-telemetry/semantic-conventions/blob/main/docs/otel/sdk-metrics.md\n\n# Configuration\n\nBatch parameters use SDK defaults. If `max_rate` exceeds the batch processor's\nthroughput (`max_export_batch_size / schedule_delay`), validation will fail with\nsuggestions for how to adjust the configuration.",
"properties": {
"export_timeout": {
"default": 30000,
"description": "Maximum time to wait for export to complete (in milliseconds).\n\nDefault: 30000ms per [SDK specification](https://opentelemetry.io/docs/specs/otel/trace/sdk/#batching-processor).",
"format": "uint64",
"minimum": 0,
"type": "integer"
},
"exporter": {
"$ref": "#/$defs/LogExporter"
},
"max_export_batch_size": {
"default": 512,
"description": "Maximum number of log records per batch.\n\nDefault: 512 per [SDK specification](https://opentelemetry.io/docs/specs/otel/trace/sdk/#batching-processor).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"max_queue_size": {
"default": 2048,
"description": "Maximum queue size for pending log records.\n\nDefault: 2048 per [SDK specification](https://opentelemetry.io/docs/specs/otel/trace/sdk/#batching-processor).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"max_rate": {
"default": 100,
"description": "Maximum log records per second.\n\nDefault: 100 per second.",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"schedule_delay": {
"default": 5000,
"description": "Maximum time to wait before exporting a batch (in milliseconds).\n\nDefault: 5000ms per [SDK specification](https://opentelemetry.io/docs/specs/otel/trace/sdk/#batching-processor).",
"format": "uint64",
"minimum": 0,
"type": "integer"
}
},
"required": [
"exporter"
],
"type": "object"
},
"RateLimitedSpanProcessorConfig": {
"additionalProperties": false,
"description": "Rate-limited span processor configuration.\n\nProtects against unexpected telemetry costs by enforcing a maximum spans-per-second\nlimit. Spans exceeding the limit are dropped before entering the batch queue,\npreventing runaway telemetry from infinite loops, retry storms, or load spikes.\n\n# Observability\n\n**UNSTABLE:** Metrics follow the [OTel SDK semantic conventions] which are currently\nin development status. Metric names and attributes may change in future releases.\n\n**Processor metric:** `otel.sdk.processor.span.processed`\n\n| Attribute | Description |\n|----------------------|-------------------------------------------------------|\n| `otel.component.type`| `rate_limited_span_processor` |\n| `otel.component.name`| `rate_limited_span_processor/{instance_id}` |\n| `error.type` | `rate_limited` (only present when spans are dropped) |\n\n**Exporter metric:** `otel.sdk.exporter.span.exported`\n\n| Attribute | Description |\n|----------------------|-------------------------------------------------------|\n| `otel.component.type`| `{exporter}_exporter` (e.g., `otlp_http_exporter`) |\n| `otel.component.name`| `{exporter}_exporter/{instance_id}` |\n| `server.address` | Destination host (e.g., `localhost`) |\n| `server.port` | Destination port (e.g., `4318`) |\n| `error.type` | `export_failed` (only present on failure) |\n\nThe processor and exporter share the same `{instance_id}` so you can correlate\nrate-limited drops with export failures for the same pipeline.\n\nUse these metrics to:\n- Alert when processor drops exceed a threshold (rate limit too low)\n- Monitor exporter failures and retries\n- Calculate drop rates by comparing records with/without `error.type`\n\n[OTel SDK semantic conventions]: https://github.com/open-telemetry/semantic-conventions/blob/main/docs/otel/sdk-metrics.md\n\n# Configuration\n\nBatch parameters use SDK defaults. If `max_rate` exceeds the batch processor's\nthroughput (`max_export_batch_size / schedule_delay`), validation will fail with\nsuggestions for how to adjust the configuration.",
"properties": {
"export_timeout": {
"default": 30000,
"description": "Maximum time to wait for export to complete (in milliseconds).\n\nDefault: 30000ms per [SDK specification](https://opentelemetry.io/docs/specs/otel/trace/sdk/#batching-processor).",
"format": "uint64",
"minimum": 0,
"type": "integer"
},
"exporter": {
"$ref": "#/$defs/SpanExporter"
},
"max_export_batch_size": {
"default": 512,
"description": "Maximum number of spans per batch.\n\nDefault: 512 per [SDK specification](https://opentelemetry.io/docs/specs/otel/trace/sdk/#batching-processor).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"max_queue_size": {
"default": 2048,
"description": "Maximum queue size for pending spans.\n\nDefault: 2048 per [SDK specification](https://opentelemetry.io/docs/specs/otel/trace/sdk/#batching-processor).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"max_rate": {
"default": 100,
"description": "Maximum spans per second.\n\nDefault: 100 per second.",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"schedule_delay": {
"default": 5000,
"description": "Maximum time to wait before exporting a batch (in milliseconds).\n\nDefault: 5000ms per [SDK specification](https://opentelemetry.io/docs/specs/otel/trace/sdk/#batching-processor).",
"format": "uint64",
"minimum": 0,
"type": "integer"
}
},
"required": [
"exporter"
],
"type": "object"
},
"ResourceAttribute": {
"additionalProperties": false,
"description": "A resource attribute key-value pair.",
"properties": {
"name": {
"description": "Attribute name.",
"type": "string"
},
"value": {
"$ref": "#/$defs/AttributeValue",
"description": "Attribute value."
}
},
"required": [
"name",
"value"
],
"type": "object"
},
"ResourceConfig": {
"additionalProperties": false,
"description": "Configuration for resource attributes that identify the service.\n\nSee the [resource specification](https://opentelemetry.io/docs/specs/otel/resource/sdk/)\nfor details.",
"properties": {
"attributes": {
"description": "Key-value pairs for resource attributes.\n\nCommon attributes include `service.name`, `service.version`, `deployment.environment`.",
"items": {
"$ref": "#/$defs/ResourceAttribute"
},
"type": "array"
},
"detectors": {
"$ref": "#/$defs/ResourceDetectors",
"description": "Resource detectors to use."
},
"schema_url": {
"default": null,
"description": "Schema URL for the resource.",
"type": [
"string",
"null"
]
}
},
"type": "object"
},
"ResourceDetectors": {
"additionalProperties": false,
"description": "Configuration for automatic resource detection.",
"properties": {
"attributes": {
"$ref": "#/$defs/EnvironmentResourceDetector",
"description": "Resource attributes provided by the environment."
}
},
"type": "object"
},
"RootSampler": {
"description": "Non-recursive sampler for use in parent-based configuration.",
"oneOf": [
{
"const": "always_on",
"description": "Always sample.",
"type": "string"
},
{
"const": "always_off",
"description": "Never sample.",
"type": "string"
},
{
"additionalProperties": false,
"description": "Sample a fixed ratio.",
"properties": {
"trace_id_ratio_based": {
"$ref": "#/$defs/TraceIdRatioBasedSamplerConfig"
}
},
"required": [
"trace_id_ratio_based"
],
"type": "object"
}
]
},
"Sampler": {
"description": "Sampler configuration for controlling which spans are recorded.",
"oneOf": [
{
"const": "always_on",
"description": "Always sample all spans.",
"type": "string"
},
{
"const": "always_off",
"description": "Never sample any spans.",
"type": "string"
},
{
"additionalProperties": false,
"description": "Sample a fixed ratio of traces.",
"properties": {
"trace_id_ratio_based": {
"$ref": "#/$defs/TraceIdRatioBasedSamplerConfig"
}
},
"required": [
"trace_id_ratio_based"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "Make sampling decisions based on parent span.",
"properties": {
"parent_based": {
"$ref": "#/$defs/ParentBasedSamplerConfig"
}
},
"required": [
"parent_based"
],
"type": "object"
}
]
},
"SamplingRatio": {
"description": "A sampling ratio value between 0.0 and 1.0.",
"format": "double",
"type": "number"
},
"SimpleLogRecordProcessorConfig": {
"additionalProperties": false,
"description": "Simple log record processor configuration.\n\nExports each log record immediately as it is emitted.",
"properties": {
"exporter": {
"$ref": "#/$defs/LogExporter"
}
},
"required": [
"exporter"
],
"type": "object"
},
"SimpleSpanProcessorConfig": {
"additionalProperties": false,
"description": "Simple span processor configuration.\n\nExports each span immediately as it ends.",
"properties": {
"exporter": {
"$ref": "#/$defs/SpanExporter"
}
},
"required": [
"exporter"
],
"type": "object"
},
"SpanExporter": {
"description": "Span exporter configuration.",
"oneOf": [
{
"additionalProperties": false,
"description": "OTLP over HTTP (default port 4318).",
"properties": {
"otlp_http": {
"$ref": "#/$defs/OtlpHttpExporterConfig"
}
},
"required": [
"otlp_http"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "OTLP over gRPC (default port 4317).",
"properties": {
"otlp_grpc": {
"$ref": "#/$defs/OtlpGrpcExporterConfig"
}
},
"required": [
"otlp_grpc"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "Datadog exporter.",
"properties": {
"datadog": {
"$ref": "#/$defs/DatadogNativeExporterConfig"
}
},
"required": [
"datadog"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "Datadog OTLP direct intake over HTTP (agentless).",
"properties": {
"datadog_otlp_http": {
"$ref": "#/$defs/DatadogHttpExporterConfig"
}
},
"required": [
"datadog_otlp_http"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "Datadog OTLP direct intake over gRPC (agentless).",
"properties": {
"datadog_otlp_grpc": {
"$ref": "#/$defs/DatadogGrpcExporterConfig"
}
},
"required": [
"datadog_otlp_grpc"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "New Relic over HTTP.",
"properties": {
"new_relic_http": {
"$ref": "#/$defs/NewRelicHttpExporterConfig"
}
},
"required": [
"new_relic_http"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "New Relic over gRPC.",
"properties": {
"new_relic_grpc": {
"$ref": "#/$defs/NewRelicGrpcExporterConfig"
}
},
"required": [
"new_relic_grpc"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "Honeycomb over HTTP.",
"properties": {
"honeycomb_http": {
"$ref": "#/$defs/HoneycombHttpExporterConfig"
}
},
"required": [
"honeycomb_http"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "Honeycomb over gRPC.",
"properties": {
"honeycomb_grpc": {
"$ref": "#/$defs/HoneycombGrpcExporterConfig"
}
},
"required": [
"honeycomb_grpc"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "Grafana Cloud OTLP exporter.",
"properties": {
"grafana_cloud": {
"$ref": "#/$defs/GrafanaCloudHttpExporterConfig"
}
},
"required": [
"grafana_cloud"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "Console exporter for debugging.",
"properties": {
"console": {
"$ref": "#/$defs/ConsoleExporterConfig"
}
},
"required": [
"console"
],
"type": "object"
}
]
},
"SpanLimitsConfig": {
"additionalProperties": false,
"description": "Span limits configuration.\n\nSee the [span limits specification](https://opentelemetry.io/docs/specs/otel/trace/sdk/#span-limits)\nand [attribute limits specification](https://opentelemetry.io/docs/specs/otel/common/#attribute-limits)\nfor details.",
"properties": {
"attribute_count_limit": {
"default": 128,
"description": "Maximum number of attributes per span.\n\nDefault: 128 per [attribute limits specification](https://opentelemetry.io/docs/specs/otel/common/#attribute-limits).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"attribute_value_length_limit": {
"default": null,
"description": "Maximum length of string attribute values. No limit by default.\n\nPer the [attribute limits specification](https://opentelemetry.io/docs/specs/otel/common/#attribute-limits),\nthere is no default length limit.",
"format": "uint32",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"event_attribute_count_limit": {
"default": 128,
"description": "Maximum number of attributes per event.\n\nDefault: 128 per [span limits specification](https://opentelemetry.io/docs/specs/otel/trace/sdk/#span-limits).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"event_count_limit": {
"default": 128,
"description": "Maximum number of events per span.\n\nDefault: 128 per [span limits specification](https://opentelemetry.io/docs/specs/otel/trace/sdk/#span-limits).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"link_attribute_count_limit": {
"default": 128,
"description": "Maximum number of attributes per link.\n\nDefault: 128 per [span limits specification](https://opentelemetry.io/docs/specs/otel/trace/sdk/#span-limits).",
"format": "uint32",
"minimum": 0,
"type": "integer"
},
"link_count_limit": {
"default": 128,
"description": "Maximum number of links per span.\n\nDefault: 128 per [span limits specification](https://opentelemetry.io/docs/specs/otel/trace/sdk/#span-limits).",
"format": "uint32",
"minimum": 0,
"type": "integer"
}
},
"type": "object"
},
"SpanProcessor": {
"description": "Span processor configuration.",
"oneOf": [
{
"additionalProperties": false,
"description": "Batch processor that collects spans and exports them in batches.",
"properties": {
"batch": {
"$ref": "#/$defs/BatchSpanProcessorConfig"
}
},
"required": [
"batch"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "Simple processor that exports each span immediately.",
"properties": {
"simple": {
"$ref": "#/$defs/SimpleSpanProcessorConfig"
}
},
"required": [
"simple"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "Rate-limited processor that applies rate limiting before batch processing.",
"properties": {
"rate_limited": {
"$ref": "#/$defs/RateLimitedSpanProcessorConfig"
}
},
"required": [
"rate_limited"
],
"type": "object"
}
]
},
"TemporalityPreference": {
"description": "Temporality preference for OTLP metric exports.\n\nSee [`ExporterTemporalityPreference`](https://github.com/open-telemetry/opentelemetry-configuration/blob/main/schema-docs.md#exportertemporalitypreference)\nin the declarative configuration schema.",
"oneOf": [
{
"const": "cumulative",
"description": "Report metrics as cumulative totals since the start of collection.",
"type": "string"
},
{
"const": "delta",
"description": "Report metrics as delta changes since the last export.",
"type": "string"
},
{
"const": "low_memory",
"description": "Use low-memory temporality, optimized for stateless clients.",
"type": "string"
}
]
},
"TlsConfig": {
"additionalProperties": false,
"description": "TLS configuration for OTLP connections.",
"properties": {
"ca_file": {
"default": null,
"description": "Path to CA certificate file.",
"type": [
"string",
"null"
]
},
"cert_file": {
"default": null,
"description": "Path to client certificate file.",
"type": [
"string",
"null"
]
},
"insecure": {
"default": false,
"description": "Skip server certificate verification (insecure, use only for testing).",
"type": "boolean"
},
"insecure_skip_verify": {
"default": false,
"description": "Skip hostname verification (insecure, use only for testing).",
"type": "boolean"
},
"key_file": {
"default": null,
"description": "Path to client private key file.",
"type": [
"string",
"null"
]
}
},
"type": "object"
},
"TraceIdRatioBasedSamplerConfig": {
"additionalProperties": false,
"description": "Configuration for trace ID ratio-based sampling.",
"properties": {
"ratio": {
"$ref": "#/$defs/SamplingRatio",
"description": "Sampling ratio between 0.0 and 1.0."
}
},
"required": [
"ratio"
],
"type": "object"
},
"TracerProviderConfig": {
"additionalProperties": false,
"description": "Tracer provider configuration.",
"properties": {
"limits": {
"$ref": "#/$defs/SpanLimitsConfig",
"description": "Span limits."
},
"processors": {
"description": "Span processors for collecting and exporting spans.",
"items": {
"$ref": "#/$defs/SpanProcessor"
},
"type": "array"
},
"sampler": {
"$ref": "#/$defs/Sampler",
"description": "Sampling configuration."
}
},
"type": "object"
},
"Url": {
"format": "uri",
"type": "string"
},
"ViewConfig": {
"additionalProperties": false,
"description": "View configuration for customizing metric aggregation.\n\nSee the [view specification](https://opentelemetry.io/docs/specs/otel/metrics/sdk/#view)\nfor details.",
"properties": {
"selector": {
"$ref": "#/$defs/ViewSelectorConfig",
"description": "Selector to match instruments."
},
"stream": {
"$ref": "#/$defs/ViewStreamConfig",
"description": "Stream configuration to apply to matched instruments."
}
},
"type": "object"
},
"ViewSelectorConfig": {
"additionalProperties": false,
"description": "Selector for matching instruments in a view.",
"properties": {
"instrument_name": {
"default": null,
"description": "Match instruments by name (supports wildcards).",
"type": [
"string",
"null"
]
},
"instrument_type": {
"anyOf": [
{
"$ref": "#/$defs/InstrumentType"
},
{
"type": "null"
}
],
"description": "Match instruments by type."
},
"meter_name": {
"default": null,
"description": "Match instruments by meter name.",
"type": [
"string",
"null"
]
},
"meter_schema_url": {
"default": null,
"description": "Match instruments by meter schema URL.",
"type": [
"string",
"null"
]
},
"meter_version": {
"default": null,
"description": "Match instruments by meter version.",
"type": [
"string",
"null"
]
},
"unit": {
"default": null,
"description": "Match instruments by unit.",
"type": [
"string",
"null"
]
}
},
"type": "object"
},
"ViewStreamConfig": {
"additionalProperties": false,
"description": "Stream configuration for a view.",
"properties": {
"aggregation": {
"$ref": "#/$defs/AggregationConfig",
"description": "Aggregation configuration."
},
"aggregation_cardinality_limit": {
"default": null,
"description": "Maximum number of distinct attribute combinations to track.",
"format": "uint32",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"attribute_keys": {
"$ref": "#/$defs/AttributeKeysConfig",
"description": "Attribute keys to include or exclude from the stream."
},
"description": {
"default": null,
"description": "Override the instrument description.",
"type": [
"string",
"null"
]
},
"name": {
"default": null,
"description": "Override the instrument name.",
"type": [
"string",
"null"
]
}
},
"type": "object"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"description": "Top-level OpenTelemetry configuration.\n\nThis structure follows the OTel declarative configuration standard with\nfirst-class enum variants for exporters.",
"properties": {
"attribute_limits": {
"$ref": "#/$defs/AttributeLimitsConfig",
"description": "Global attribute constraints."
},
"disabled": {
"default": null,
"description": "When true, the SDK is disabled.",
"type": [
"boolean",
"null"
]
},
"file_format": {
"default": null,
"description": "Schema version (e.g., \"1.0-rc.1\").",
"type": [
"string",
"null"
]
},
"log_level": {
"anyOf": [
{
"$ref": "#/$defs/LogLevel"
},
{
"type": "null"
}
],
"description": "Internal SDK logger severity threshold."
},
"logger_provider": {
"$ref": "#/$defs/LoggerProviderConfig",
"description": "Log collection and export."
},
"meter_provider": {
"$ref": "#/$defs/MeterProviderConfig",
"description": "Metric collection and export."
},
"propagator": {
"$ref": "#/$defs/PropagatorConfig",
"description": "Context propagation configuration."
},
"resource": {
"$ref": "#/$defs/ResourceConfig",
"description": "Service identity attributes."
},
"tracer_provider": {
"$ref": "#/$defs/TracerProviderConfig",
"description": "Span collection and export."
}
},
"title": "OpenTelemetryConfig",
"type": "object"
}