From 2ce8efb16978ac92f581937e8362fbf64c2e7ca2 Mon Sep 17 00:00:00 2001 From: Jack Berg Date: Mon, 14 Apr 2025 15:24:29 -0500 Subject: [PATCH 01/23] Demonstrate code gen from JSON schema types --- Makefile | 4 + compliance.md | 567 +++++++++++++++++++++++++++++++++++ package.json | 4 +- scripts/compliance-matrix.js | 120 ++++++++ 4 files changed, 694 insertions(+), 1 deletion(-) create mode 100644 compliance.md create mode 100644 scripts/compliance-matrix.js diff --git a/Makefile b/Makefile index 783d77d7..8d99c38c 100644 --- a/Makefile +++ b/Makefile @@ -41,6 +41,10 @@ update-file-format: sed -e 's/file_format:.*/file_format: \"$(FILE_FORMAT)\"/g' -i '' ./examples/$$f; \ done +.PHONY: generate-compliance-matrix +generate-compliance-matrix: + npm run-script generate-compliance-matrix || exit 1; \ + .PHONY: install-tools install-tools: npm install diff --git a/compliance.md b/compliance.md new file mode 100644 index 00000000..b75dfaba --- /dev/null +++ b/compliance.md @@ -0,0 +1,567 @@ +### Aggregation + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| default | DefaultAggregation | | | | | | | | | | | | +| drop | DropAggregation | | | | | | | | | | | | +| explicit_bucket_histogram | ExplicitBucketHistogramAggregation | | | | | | | | | | | | +| base2_exponential_bucket_histogram | Base2ExponentialBucketHistogramAggregation | | | | | | | | | | | | +| last_value | LastValueAggregation | | | | | | | | | | | | +| sum | SumAggregation | | | | | | | | | | | | + +### AlwaysOffSampler + +### AlwaysOnSampler + +### AttributeLimits + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| attribute_value_length_limit | [integer, null] | | | | | | | | | | | | +| attribute_count_limit | [integer, null] | | | | | | | | | | | | + +### AttributeNameValue + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| name | string | | | | | | | | | | | | +| value | unknown | | | | | | | | | | | | +| type | AttributeType | | | | | | | | | | | | + +### AttributeType + +### B3MultiPropagator + +### B3Propagator + +### BaggagePropagator + +### Base2ExponentialBucketHistogramAggregation + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| max_scale | [integer, null] | | | | | | | | | | | | +| max_size | [integer, null] | | | | | | | | | | | | +| record_min_max | [boolean, null] | | | | | | | | | | | | + +### BatchLogRecordProcessor + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| schedule_delay | [integer, null] | | | | | | | | | | | | +| export_timeout | [integer, null] | | | | | | | | | | | | +| max_queue_size | [integer, null] | | | | | | | | | | | | +| max_export_batch_size | [integer, null] | | | | | | | | | | | | +| exporter | LogRecordExporter | | | | | | | | | | | | + +### BatchSpanProcessor + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| schedule_delay | [integer, null] | | | | | | | | | | | | +| export_timeout | [integer, null] | | | | | | | | | | | | +| max_queue_size | [integer, null] | | | | | | | | | | | | +| max_export_batch_size | [integer, null] | | | | | | | | | | | | +| exporter | SpanExporter | | | | | | | | | | | | + +### CardinalityLimits + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| default | [integer, null] | | | | | | | | | | | | +| counter | [integer, null] | | | | | | | | | | | | +| gauge | [integer, null] | | | | | | | | | | | | +| histogram | [integer, null] | | | | | | | | | | | | +| observable_counter | [integer, null] | | | | | | | | | | | | +| observable_gauge | [integer, null] | | | | | | | | | | | | +| observable_up_down_counter | [integer, null] | | | | | | | | | | | | +| up_down_counter | [integer, null] | | | | | | | | | | | | + +### ConsoleExporter + +### DefaultAggregation + +### DropAggregation + +### ExemplarFilter + +### ExperimentalGeneralInstrumentation + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| peer | ExperimentalPeerInstrumentation | | | | | | | | | | | | +| http | ExperimentalHttpInstrumentation | | | | | | | | | | | | + +### ExperimentalHttpInstrumentation + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| client | object | | | | | | | | | | | | +| server | object | | | | | | | | | | | | + +### ExperimentalInstrumentation + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| general | ExperimentalGeneralInstrumentation | | | | | | | | | | | | +| cpp | ExperimentalLanguageSpecificInstrumentation | | | | | | | | | | | | +| dotnet | ExperimentalLanguageSpecificInstrumentation | | | | | | | | | | | | +| erlang | ExperimentalLanguageSpecificInstrumentation | | | | | | | | | | | | +| go | ExperimentalLanguageSpecificInstrumentation | | | | | | | | | | | | +| java | ExperimentalLanguageSpecificInstrumentation | | | | | | | | | | | | +| js | ExperimentalLanguageSpecificInstrumentation | | | | | | | | | | | | +| php | ExperimentalLanguageSpecificInstrumentation | | | | | | | | | | | | +| python | ExperimentalLanguageSpecificInstrumentation | | | | | | | | | | | | +| ruby | ExperimentalLanguageSpecificInstrumentation | | | | | | | | | | | | +| rust | ExperimentalLanguageSpecificInstrumentation | | | | | | | | | | | | +| swift | ExperimentalLanguageSpecificInstrumentation | | | | | | | | | | | | + +### ExperimentalLanguageSpecificInstrumentation + +### ExperimentalLoggerConfig + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| disabled | [boolean] | | | | | | | | | | | | + +### ExperimentalLoggerConfigurator + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| default_config | ExperimentalLoggerConfig | | | | | | | | | | | | +| loggers | ExperimentalLoggerMatcherAndConfig[] | | | | | | | | | | | | + +### ExperimentalLoggerMatcherAndConfig + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| name | [string] | | | | | | | | | | | | +| config | ExperimentalLoggerConfig | | | | | | | | | | | | + +### ExperimentalMeterConfig + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| disabled | [boolean] | | | | | | | | | | | | + +### ExperimentalMeterConfigurator + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| default_config | ExperimentalMeterConfig | | | | | | | | | | | | +| meters | ExperimentalMeterMatcherAndConfig[] | | | | | | | | | | | | + +### ExperimentalMeterMatcherAndConfig + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| name | [string] | | | | | | | | | | | | +| config | ExperimentalMeterConfig | | | | | | | | | | | | + +### ExperimentalOtlpFileExporter + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| output_stream | [string, null] | | | | | | | | | | | | + +### ExperimentalOtlpFileMetricExporter + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| output_stream | [string, null] | | | | | | | | | | | | +| temporality_preference | ExporterTemporalityPreference | | | | | | | | | | | | +| default_histogram_aggregation | ExporterDefaultHistogramAggregation | | | | | | | | | | | | + +### ExperimentalPeerInstrumentation + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| service_mapping | object[] | | | | | | | | | | | | + +### ExperimentalPrometheusMetricExporter + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| host | [string, null] | | | | | | | | | | | | +| port | [integer, null] | | | | | | | | | | | | +| without_units | [boolean, null] | | | | | | | | | | | | +| without_type_suffix | [boolean, null] | | | | | | | | | | | | +| without_scope_info | [boolean, null] | | | | | | | | | | | | +| with_resource_constant_labels | IncludeExclude | | | | | | | | | | | | + +### ExperimentalResourceDetection + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| attributes | IncludeExclude | | | | | | | | | | | | +| detectors | ExperimentalResourceDetector[] | | | | | | | | | | | | + +### ExperimentalResourceDetector + +### ExperimentalTracerConfig + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| disabled | [boolean] | | | | | | | | | | | | + +### ExperimentalTracerConfigurator + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| default_config | ExperimentalTracerConfig | | | | | | | | | | | | +| tracers | ExperimentalTracerMatcherAndConfig[] | | | | | | | | | | | | + +### ExperimentalTracerMatcherAndConfig + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| name | [string] | | | | | | | | | | | | +| config | ExperimentalTracerConfig | | | | | | | | | | | | + +### ExplicitBucketHistogramAggregation + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| boundaries | number[] | | | | | | | | | | | | +| record_min_max | [boolean, null] | | | | | | | | | | | | + +### ExporterDefaultHistogramAggregation + +### ExporterTemporalityPreference + +### IncludeExclude + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| included | string[] | | | | | | | | | | | | +| excluded | string[] | | | | | | | | | | | | + +### InstrumentType + +### JaegerPropagator + +### JaegerRemoteSampler + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| endpoint | [string, null] | | | | | | | | | | | | +| interval | [integer, null] | | | | | | | | | | | | +| initial_sampler | Sampler | | | | | | | | | | | | + +### LastValueAggregation + +### LogRecordExporter + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| otlp_http | OtlpHttpExporter | | | | | | | | | | | | +| otlp_grpc | OtlpGrpcExporter | | | | | | | | | | | | +| otlp_file/development | ExperimentalOtlpFileExporter | | | | | | | | | | | | +| console | ConsoleExporter | | | | | | | | | | | | + +### LogRecordLimits + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| attribute_value_length_limit | [integer, null] | | | | | | | | | | | | +| attribute_count_limit | [integer, null] | | | | | | | | | | | | + +### LogRecordProcessor + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| batch | BatchLogRecordProcessor | | | | | | | | | | | | +| simple | SimpleLogRecordProcessor | | | | | | | | | | | | + +### LoggerProvider + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| processors | LogRecordProcessor[] | | | | | | | | | | | | +| limits | LogRecordLimits | | | | | | | | | | | | +| logger_configurator/development | ExperimentalLoggerConfigurator | | | | | | | | | | | | + +### MeterProvider + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| readers | MetricReader[] | | | | | | | | | | | | +| views | View[] | | | | | | | | | | | | +| exemplar_filter | ExemplarFilter | | | | | | | | | | | | +| meter_configurator/development | ExperimentalMeterConfigurator | | | | | | | | | | | | + +### MetricProducer + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| opencensus | OpenCensusMetricProducer | | | | | | | | | | | | + +### MetricReader + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| periodic | PeriodicMetricReader | | | | | | | | | | | | +| pull | PullMetricReader | | | | | | | | | | | | + +### NameStringValuePair + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| name | string | | | | | | | | | | | | +| value | [string, null] | | | | | | | | | | | | + +### OpenCensusMetricProducer + +### OpenTelemetryConfiguration + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| file_format | string | | | | | | | | | | | | +| disabled | [boolean, null] | | | | | | | | | | | | +| log_level | [string, null] | | | | | | | | | | | | +| attribute_limits | AttributeLimits | | | | | | | | | | | | +| logger_provider | LoggerProvider | | | | | | | | | | | | +| meter_provider | MeterProvider | | | | | | | | | | | | +| propagator | Propagator | | | | | | | | | | | | +| tracer_provider | TracerProvider | | | | | | | | | | | | +| resource | Resource | | | | | | | | | | | | +| instrumentation/development | ExperimentalInstrumentation | | | | | | | | | | | | + +### OpenTracingPropagator + +### OtlpGrpcExporter + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| endpoint | [string, null] | | | | | | | | | | | | +| certificate_file | [string, null] | | | | | | | | | | | | +| client_key_file | [string, null] | | | | | | | | | | | | +| client_certificate_file | [string, null] | | | | | | | | | | | | +| headers | NameStringValuePair[] | | | | | | | | | | | | +| headers_list | [string, null] | | | | | | | | | | | | +| compression | [string, null] | | | | | | | | | | | | +| timeout | [integer, null] | | | | | | | | | | | | +| insecure | [boolean, null] | | | | | | | | | | | | + +### OtlpGrpcMetricExporter + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| endpoint | [string, null] | | | | | | | | | | | | +| certificate_file | [string, null] | | | | | | | | | | | | +| client_key_file | [string, null] | | | | | | | | | | | | +| client_certificate_file | [string, null] | | | | | | | | | | | | +| headers | NameStringValuePair[] | | | | | | | | | | | | +| headers_list | [string, null] | | | | | | | | | | | | +| compression | [string, null] | | | | | | | | | | | | +| timeout | [integer, null] | | | | | | | | | | | | +| insecure | [boolean, null] | | | | | | | | | | | | +| temporality_preference | ExporterTemporalityPreference | | | | | | | | | | | | +| default_histogram_aggregation | ExporterDefaultHistogramAggregation | | | | | | | | | | | | + +### OtlpHttpEncoding + +### OtlpHttpExporter + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| endpoint | [string, null] | | | | | | | | | | | | +| certificate_file | [string, null] | | | | | | | | | | | | +| client_key_file | [string, null] | | | | | | | | | | | | +| client_certificate_file | [string, null] | | | | | | | | | | | | +| headers | NameStringValuePair[] | | | | | | | | | | | | +| headers_list | [string, null] | | | | | | | | | | | | +| compression | [string, null] | | | | | | | | | | | | +| timeout | [integer, null] | | | | | | | | | | | | +| encoding | OtlpHttpEncoding | | | | | | | | | | | | + +### OtlpHttpMetricExporter + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| endpoint | [string, null] | | | | | | | | | | | | +| certificate_file | [string, null] | | | | | | | | | | | | +| client_key_file | [string, null] | | | | | | | | | | | | +| client_certificate_file | [string, null] | | | | | | | | | | | | +| headers | NameStringValuePair[] | | | | | | | | | | | | +| headers_list | [string, null] | | | | | | | | | | | | +| compression | [string, null] | | | | | | | | | | | | +| timeout | [integer, null] | | | | | | | | | | | | +| encoding | OtlpHttpEncoding | | | | | | | | | | | | +| temporality_preference | ExporterTemporalityPreference | | | | | | | | | | | | +| default_histogram_aggregation | ExporterDefaultHistogramAggregation | | | | | | | | | | | | + +### ParentBasedSampler + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| root | Sampler | | | | | | | | | | | | +| remote_parent_sampled | Sampler | | | | | | | | | | | | +| remote_parent_not_sampled | Sampler | | | | | | | | | | | | +| local_parent_sampled | Sampler | | | | | | | | | | | | +| local_parent_not_sampled | Sampler | | | | | | | | | | | | + +### PeriodicMetricReader + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| interval | [integer, null] | | | | | | | | | | | | +| timeout | [integer, null] | | | | | | | | | | | | +| exporter | PushMetricExporter | | | | | | | | | | | | +| producers | MetricProducer[] | | | | | | | | | | | | +| cardinality_limits | CardinalityLimits | | | | | | | | | | | | + +### Propagator + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| composite | TextMapPropagator[] | | | | | | | | | | | | +| composite_list | [string, null] | | | | | | | | | | | | + +### PullMetricExporter + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| prometheus/development | ExperimentalPrometheusMetricExporter | | | | | | | | | | | | + +### PullMetricReader + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| exporter | PullMetricExporter | | | | | | | | | | | | +| producers | MetricProducer[] | | | | | | | | | | | | +| cardinality_limits | CardinalityLimits | | | | | | | | | | | | + +### PushMetricExporter + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| otlp_http | OtlpHttpMetricExporter | | | | | | | | | | | | +| otlp_grpc | OtlpGrpcMetricExporter | | | | | | | | | | | | +| otlp_file/development | ExperimentalOtlpFileMetricExporter | | | | | | | | | | | | +| console | ConsoleExporter | | | | | | | | | | | | + +### Resource + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| attributes | AttributeNameValue[] | | | | | | | | | | | | +| detection/development | ExperimentalResourceDetection | | | | | | | | | | | | +| schema_url | [string, null] | | | | | | | | | | | | +| attributes_list | [string, null] | | | | | | | | | | | | + +### Sampler + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| always_off | AlwaysOffSampler | | | | | | | | | | | | +| always_on | AlwaysOnSampler | | | | | | | | | | | | +| jaeger_remote | JaegerRemoteSampler | | | | | | | | | | | | +| parent_based | ParentBasedSampler | | | | | | | | | | | | +| trace_id_ratio_based | TraceIdRatioBasedSampler | | | | | | | | | | | | + +### SimpleLogRecordProcessor + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| exporter | LogRecordExporter | | | | | | | | | | | | + +### SimpleSpanProcessor + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| exporter | SpanExporter | | | | | | | | | | | | + +### SpanExporter + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| otlp_http | OtlpHttpExporter | | | | | | | | | | | | +| otlp_grpc | OtlpGrpcExporter | | | | | | | | | | | | +| otlp_file/development | ExperimentalOtlpFileExporter | | | | | | | | | | | | +| console | ConsoleExporter | | | | | | | | | | | | +| zipkin | ZipkinSpanExporter | | | | | | | | | | | | + +### SpanLimits + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| attribute_value_length_limit | [integer, null] | | | | | | | | | | | | +| attribute_count_limit | [integer, null] | | | | | | | | | | | | +| event_count_limit | [integer, null] | | | | | | | | | | | | +| link_count_limit | [integer, null] | | | | | | | | | | | | +| event_attribute_count_limit | [integer, null] | | | | | | | | | | | | +| link_attribute_count_limit | [integer, null] | | | | | | | | | | | | + +### SpanProcessor + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| batch | BatchSpanProcessor | | | | | | | | | | | | +| simple | SimpleSpanProcessor | | | | | | | | | | | | + +### SumAggregation + +### TextMapPropagator + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| tracecontext | TraceContextPropagator | | | | | | | | | | | | +| baggage | BaggagePropagator | | | | | | | | | | | | +| b3 | B3Propagator | | | | | | | | | | | | +| b3multi | B3MultiPropagator | | | | | | | | | | | | +| jaeger | JaegerPropagator | | | | | | | | | | | | +| ottrace | OpenTracingPropagator | | | | | | | | | | | | + +### TraceContextPropagator + +### TraceIdRatioBasedSampler + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| ratio | [number, null] | | | | | | | | | | | | + +### TracerProvider + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| processors | SpanProcessor[] | | | | | | | | | | | | +| limits | SpanLimits | | | | | | | | | | | | +| sampler | Sampler | | | | | | | | | | | | +| tracer_configurator/development | ExperimentalTracerConfigurator | | | | | | | | | | | | + +### View + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| selector | ViewSelector | | | | | | | | | | | | +| stream | ViewStream | | | | | | | | | | | | + +### ViewSelector + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| instrument_name | [string, null] | | | | | | | | | | | | +| instrument_type | InstrumentType | | | | | | | | | | | | +| unit | [string, null] | | | | | | | | | | | | +| meter_name | [string, null] | | | | | | | | | | | | +| meter_version | [string, null] | | | | | | | | | | | | +| meter_schema_url | [string, null] | | | | | | | | | | | | + +### ViewStream + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| name | [string, null] | | | | | | | | | | | | +| description | [string, null] | | | | | | | | | | | | +| aggregation | Aggregation | | | | | | | | | | | | +| aggregation_cardinality_limit | [integer, null] | | | | | | | | | | | | +| attribute_keys | IncludeExclude | | | | | | | | | | | | + +### ZipkinSpanExporter + +| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| endpoint | [string, null] | | | | | | | | | | | | +| timeout | [integer, null] | | | | | | | | | | | | + diff --git a/package.json b/package.json index f215bc72..2ced6b27 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,10 @@ { "scripts": { - "generate-descriptions": "node scripts/generate-descriptions.js" + "generate-descriptions": "node scripts/generate-descriptions.js", + "generate-compliance-matrix": "node scripts/compliance-matrix.js" }, "devDependencies": { + "@json-schema-tools/traverse": "^1.10.4", "ajv-cli": "^5.0.0" }, "dependencies": { diff --git a/scripts/compliance-matrix.js b/scripts/compliance-matrix.js new file mode 100644 index 00000000..8f34a183 --- /dev/null +++ b/scripts/compliance-matrix.js @@ -0,0 +1,120 @@ +const fs = require("node:fs"); +const traverse = require("@json-schema-tools/traverse").default; + +/* + * Build up a catalog of schema types + */ +const schemasByName = {}; +const topLevelSchemas = {}; + +// Iterate through schema files, adding top-level types and $defs +const schemaDirPath = __dirname + "/../schema/"; +fs.readdirSync(schemaDirPath) + .filter(file => file.endsWith(".json")) + .forEach(file => { + const schema = require(`${schemaDirPath}${file}`); + topLevelSchemas[file] = schema; + + if (file === 'opentelemetry_configuration.json') { + schemasByName['OpenTelemetryConfiguration'] = { name: 'OpentelemetryConfiguration', file, path: '.', schema }; + } + + traverse(schema, (schema) => { + console.log() + const defs = schema['$defs']; + if (defs) { + Object.entries(defs).forEach(([name, schema]) => { + const path = `#/$defs/${name}`; + if (name in schemasByName) { + throw new Error(`${name} already exists in schemasByName with definition: ` + schemasByName[name]); + } + schemasByName[name] = { name, file, path, schema }; + }); + } + }); + }); + +// Resolve refs to top-level types +Object.entries(schemasByName).forEach(([key, value]) => { + const ref = value.schema['$ref']; + if (ref) { + const topLevelSchema = topLevelSchemas[ref]; + if (!topLevelSchema) { + throw new Error("Could not resolve $ref:" + ref); + } + schemasByName[key] = { ...value, schema: topLevelSchema }; + } +}); + +// Uncomment to view contents of catalog +// console.log(schemasByName); + +/** + * Iterate through types and print markdown representation. + */ +const languages = ['c++', 'c#', 'erlang', 'go', 'java', 'js', 'php', 'python', 'ruby', 'rust', 'swift'] +const output = []; +const types = Object.keys(schemasByName); +types.sort(); +types.forEach(type => { + const value = schemasByName[type]; + + output.push("### " + type + " \n\n") + const properties = value.schema.properties; + if (!properties) { + return; + } + + output.push("| Property | Type | "); + languages.forEach(language => output.push(language + " |")); + output.push("\n") + + output.push("|---|---|") + languages.forEach(language => output.push("---|")); + output.push("\n") + + Object.entries(properties).forEach(([propertyKey, propertyValue]) => { + output.push("| " + propertyKey + " | "); + output.push(resolveType(propertyValue) + " | "); + languages.forEach(language => output.push(" |")); + output.push("\n") + }); + + output.push("\n") +}) + +function findMatch(ref) { + return Object.values(schemasByName) + .find(value => { + if (value.path === ref) { + return true; + } + return `${value.file}${value.path}` === ref; + }); +} + +function resolveType(schema) { + const ref = schema['$ref']; + if (ref) { + const match = findMatch(ref); + if (!match) { + throw new Error("Could not resolve $ref: " + ref); + } + return "" + match.name + ""; + } + const type = schema.type; + if (type === 'array') { + const items = schema.items; + const itemsType = resolveType(items); + return itemsType + "[]"; + } + if (typeof type == 'string') { + return type; + } + if (type === undefined) { + return "unknown"; + } + return "[" + type.join(", ") + "]"; +} + +fs.writeFileSync(__dirname + "/../compliance.md", output.join("")); From f2cd070616c68745ebfa8ebf1d81fdd0ba30ae02 Mon Sep 17 00:00:00 2001 From: Jack Berg Date: Mon, 14 Apr 2025 15:31:41 -0500 Subject: [PATCH 02/23] Remove extra console.log --- scripts/compliance-matrix.js | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/compliance-matrix.js b/scripts/compliance-matrix.js index 8f34a183..eb292c21 100644 --- a/scripts/compliance-matrix.js +++ b/scripts/compliance-matrix.js @@ -20,7 +20,6 @@ fs.readdirSync(schemaDirPath) } traverse(schema, (schema) => { - console.log() const defs = schema['$defs']; if (defs) { Object.entries(defs).forEach(([name, schema]) => { From d58379c88a79a8399bf6ea6e19487c67153e8646 Mon Sep 17 00:00:00 2001 From: Jack Berg <34418638+jack-berg@users.noreply.github.com> Date: Fri, 25 Apr 2025 11:31:18 -0500 Subject: [PATCH 03/23] generate meta_schema.yaml --- Makefile | 8 + meta_schema.yaml | 1268 +++++++++++++++++++++++++++++++ package.json | 4 +- schema/type_descriptions.yaml | 42 +- scripts/compliance-matrix.js | 61 ++ scripts/generate-meta-schema.js | 180 +++++ scripts/validate-meta-schema.js | 104 +++ 7 files changed, 1645 insertions(+), 22 deletions(-) create mode 100644 meta_schema.yaml create mode 100644 scripts/generate-meta-schema.js create mode 100644 scripts/validate-meta-schema.js diff --git a/Makefile b/Makefile index 8d99c38c..2c881ad3 100644 --- a/Makefile +++ b/Makefile @@ -45,6 +45,14 @@ update-file-format: generate-compliance-matrix: npm run-script generate-compliance-matrix || exit 1; \ +.PHONY: generate-meta-schema +generate-meta-schema: + npm run-script generate-meta-schema || exit 1; \ + +.PHONY: validate-meta-schema +validate-meta-schema: + npm run-script validate-meta-schema || exit 1; \ + .PHONY: install-tools install-tools: npm install diff --git a/meta_schema.yaml b/meta_schema.yaml new file mode 100644 index 00000000..805ad5a4 --- /dev/null +++ b/meta_schema.yaml @@ -0,0 +1,1268 @@ +Aggregation: + definitionSource: meter_provider.json#/$defs/Aggregation + paths: + - .meter_provider.views[].stream.aggregation + properties: + base2_exponential_bucket_histogram: + description: unknown + implementationStatus: {} + default: + description: unknown + implementationStatus: {} + drop: + description: unknown + implementationStatus: {} + explicit_bucket_histogram: + description: Configure aggregation to be explicit_bucket_histogram. + implementationStatus: {} + last_value: + description: unknown + implementationStatus: {} + sum: + description: unknown + implementationStatus: {} +AlwaysOffSampler: + definitionSource: tracer_provider.json#/$defs/AlwaysOffSampler + paths: [] + properties: {} +AlwaysOnSampler: + definitionSource: tracer_provider.json#/$defs/AlwaysOnSampler + paths: [] + properties: {} +AttributeLimits: + definitionSource: opentelemetry_configuration.json#/$defs/AttributeLimits + paths: + - .attribute_limits + properties: + attribute_count_limit: + description: | + Configure max attribute count. + Value must be non-negative. + If omitted or null, 128 is used. + implementationStatus: {} + attribute_value_length_limit: + description: | + Configure max attribute value size. + Value must be non-negative. + If omitted or null, there is no limit. + implementationStatus: {} +AttributeNameValue: + definitionSource: resource.json#/$defs/AttributeNameValue + paths: [] + properties: + name: + description: unknown + implementationStatus: {} + type: + description: unknown + implementationStatus: {} + value: + description: unknown + implementationStatus: {} +AttributeType: + definitionSource: resource.json#/$defs/AttributeType + paths: [] + properties: {} +B3MultiPropagator: + definitionSource: propagator.json#/$defs/B3MultiPropagator + paths: [] + properties: {} +B3Propagator: + definitionSource: propagator.json#/$defs/B3Propagator + paths: [] + properties: {} +BaggagePropagator: + definitionSource: propagator.json#/$defs/BaggagePropagator + paths: [] + properties: {} +Base2ExponentialBucketHistogramAggregation: + definitionSource: meter_provider.json#/$defs/Base2ExponentialBucketHistogramAggregation + paths: [] + properties: + max_scale: + description: unknown + implementationStatus: {} + max_size: + description: unknown + implementationStatus: {} + record_min_max: + description: unknown + implementationStatus: {} +BatchLogRecordProcessor: + definitionSource: logger_provider.json#/$defs/BatchLogRecordProcessor + paths: + - .logger_provider.processors[].batch + properties: + export_timeout: + description: | + Configure maximum allowed time (in milliseconds) to export data. + Value must be non-negative. A value of 0 indicates no limit (infinity). + If omitted or null, 30000 is used. + implementationStatus: {} + exporter: + description: Configure exporter. + implementationStatus: {} + max_export_batch_size: + description: | + Configure maximum batch size. Value must be positive. + If omitted or null, 512 is used. + implementationStatus: {} + max_queue_size: + description: | + Configure maximum queue size. Value must be positive. + If omitted or null, 2048 is used. + implementationStatus: {} + schedule_delay: + description: | + Configure delay interval (in milliseconds) between two consecutive exports. + Value must be non-negative. + If omitted or null, 1000 is used. + implementationStatus: {} +BatchSpanProcessor: + definitionSource: tracer_provider.json#/$defs/BatchSpanProcessor + paths: + - .tracer_provider.processors[].batch + properties: + export_timeout: + description: | + Configure maximum allowed time (in milliseconds) to export data. + Value must be non-negative. A value of 0 indicates no limit (infinity). + If omitted or null, 30000 is used. + implementationStatus: {} + exporter: + description: Configure exporter. + implementationStatus: {} + max_export_batch_size: + description: | + Configure maximum batch size. Value must be positive. + If omitted or null, 512 is used. + implementationStatus: {} + max_queue_size: + description: | + Configure maximum queue size. Value must be positive. + If omitted or null, 2048 is used. + implementationStatus: {} + schedule_delay: + description: | + Configure delay interval (in milliseconds) between two consecutive exports. + Value must be non-negative. + If omitted or null, 5000 is used. + implementationStatus: {} +CardinalityLimits: + definitionSource: meter_provider.json#/$defs/CardinalityLimits + paths: + - .meter_provider.readers[].pull.cardinality_limits + - .meter_provider.readers[].periodic.cardinality_limits + properties: + counter: + description: | + Configure default cardinality limit for counter instruments. + If omitted or null, the value from .default is used. + implementationStatus: {} + default: + description: | + Configure default cardinality limit for all instrument types. + Instrument-specific cardinality limits take priority. + If omitted or null, 2000 is used. + implementationStatus: {} + gauge: + description: | + Configure default cardinality limit for gauge instruments. + If omitted or null, the value from .default is used. + implementationStatus: {} + histogram: + description: | + Configure default cardinality limit for histogram instruments. + If omitted or null, the value from .default is used. + implementationStatus: {} + observable_counter: + description: | + Configure default cardinality limit for observable_counter instruments. + If omitted or null, the value from .default is used. + implementationStatus: {} + observable_gauge: + description: | + Configure default cardinality limit for observable_gauge instruments. + If omitted or null, the value from .default is used. + implementationStatus: {} + observable_up_down_counter: + description: | + Configure default cardinality limit for observable_up_down_counter instruments. + If omitted or null, the value from .default is used. + implementationStatus: {} + up_down_counter: + description: | + Configure default cardinality limit for up_down_counter instruments. + If omitted or null, the value from .default is used. + implementationStatus: {} +ConsoleExporter: + definitionSource: common.json#/$defs/ConsoleExporter + paths: [] + properties: {} +DefaultAggregation: + definitionSource: meter_provider.json#/$defs/DefaultAggregation + paths: [] + properties: {} +DropAggregation: + definitionSource: meter_provider.json#/$defs/DropAggregation + paths: [] + properties: {} +ExemplarFilter: + definitionSource: meter_provider.json#/$defs/ExemplarFilter + paths: [] + properties: {} +ExperimentalGeneralInstrumentation: + definitionSource: instrumentation.json#/$defs/ExperimentalGeneralInstrumentation + paths: + - .instrumentation/development.general + properties: + http: + description: | + Configure instrumentations following the http semantic conventions. + See http semantic conventions: https://opentelemetry.io/docs/specs/semconv/http/ + implementationStatus: {} + peer: + description: | + Configure instrumentations following the peer semantic conventions. + See peer semantic conventions: https://opentelemetry.io/docs/specs/semconv/attributes-registry/peer/ + implementationStatus: {} +ExperimentalHttpInstrumentation: + definitionSource: instrumentation.json#/$defs/ExperimentalHttpInstrumentation + paths: + - .instrumentation/development.general.http + properties: + client: + description: Configure instrumentations following the http client semantic conventions. + implementationStatus: {} + server: + description: Configure instrumentations following the http server semantic conventions. + implementationStatus: {} +ExperimentalInstrumentation: + definitionSource: opentelemetry_configuration.json#/$defs/ExperimentalInstrumentation + paths: + - .instrumentation/development + properties: + cpp: + description: Configure C++ language-specific instrumentation libraries. + implementationStatus: {} + dotnet: + description: Configure .NET language-specific instrumentation libraries. + implementationStatus: {} + erlang: + description: Configure Erlang language-specific instrumentation libraries. + implementationStatus: {} + general: + description: | + Configure general SemConv options that may apply to multiple languages and instrumentations. + Instrumenation may merge general config options with the language specific configuration at .instrumentation.. + implementationStatus: {} + go: + description: Configure Go language-specific instrumentation libraries. + implementationStatus: {} + java: + description: Configure Java language-specific instrumentation libraries. + implementationStatus: {} + js: + description: Configure JavaScript language-specific instrumentation libraries. + implementationStatus: {} + php: + description: Configure PHP language-specific instrumentation libraries. + implementationStatus: {} + python: + description: Configure Python language-specific instrumentation libraries. + implementationStatus: {} + ruby: + description: Configure Ruby language-specific instrumentation libraries. + implementationStatus: {} + rust: + description: Configure Rust language-specific instrumentation libraries. + implementationStatus: {} + swift: + description: Configure Swift language-specific instrumentation libraries. + implementationStatus: {} +ExperimentalLanguageSpecificInstrumentation: + definitionSource: instrumentation.json#/$defs/ExperimentalLanguageSpecificInstrumentation + paths: [] + properties: {} +ExperimentalLoggerConfig: + definitionSource: logger_provider.json#/$defs/ExperimentalLoggerConfig + paths: + - .logger_provider.logger_configurator/development.default_config + - .logger_provider.logger_configurator/development.loggers[].config + properties: + disabled: + description: Configure if the logger is enabled or not. + implementationStatus: {} +ExperimentalLoggerConfigurator: + definitionSource: logger_provider.json#/$defs/ExperimentalLoggerConfigurator + paths: + - .logger_provider.logger_configurator/development + properties: + default_config: + description: Configure the default logger config used there is no matching entry in .logger_configurator/development.loggers. + implementationStatus: {} + loggers: + description: Configure loggers. + implementationStatus: {} +ExperimentalLoggerMatcherAndConfig: + definitionSource: logger_provider.json#/$defs/ExperimentalLoggerMatcherAndConfig + paths: + - .logger_provider.logger_configurator/development.loggers[] + properties: + config: + description: The logger config. + implementationStatus: {} + name: + description: | + Configure logger names to match, evaluated as follows: + + * If the logger name exactly matches. + * If the logger name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. + implementationStatus: {} +ExperimentalMeterConfig: + definitionSource: meter_provider.json#/$defs/ExperimentalMeterConfig + paths: + - .meter_provider.meter_configurator/development.default_config + - .meter_provider.meter_configurator/development.meters[].config + properties: + disabled: + description: Configure if the meter is enabled or not. + implementationStatus: {} +ExperimentalMeterConfigurator: + definitionSource: meter_provider.json#/$defs/ExperimentalMeterConfigurator + paths: + - .meter_provider.meter_configurator/development + properties: + default_config: + description: Configure the default meter config used there is no matching entry in .meter_configurator/development.meters. + implementationStatus: {} + meters: + description: Configure meters. + implementationStatus: {} +ExperimentalMeterMatcherAndConfig: + definitionSource: meter_provider.json#/$defs/ExperimentalMeterMatcherAndConfig + paths: + - .meter_provider.meter_configurator/development.meters[] + properties: + config: + description: The meter config. + implementationStatus: {} + name: + description: | + Configure meter names to match, evaluated as follows: + + * If the meter name exactly matches. + * If the meter name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. + implementationStatus: {} +ExperimentalOtlpFileExporter: + definitionSource: common.json#/$defs/ExperimentalOtlpFileExporter + paths: [] + properties: + output_stream: + description: unknown + implementationStatus: {} +ExperimentalOtlpFileMetricExporter: + definitionSource: meter_provider.json#/$defs/ExperimentalOtlpFileMetricExporter + paths: [] + properties: + default_histogram_aggregation: + description: unknown + implementationStatus: {} + output_stream: + description: unknown + implementationStatus: {} + temporality_preference: + description: unknown + implementationStatus: {} +ExperimentalPeerInstrumentation: + definitionSource: instrumentation.json#/$defs/ExperimentalPeerInstrumentation + paths: [] + properties: + service_mapping: + description: unknown + implementationStatus: {} +ExperimentalPrometheusMetricExporter: + definitionSource: meter_provider.json#/$defs/ExperimentalPrometheusMetricExporter + paths: + - .meter_provider.readers[].pull.exporter.prometheus/development + properties: + host: + description: | + Configure host. + If omitted or null, localhost is used. + implementationStatus: {} + port: + description: | + Configure port. + If omitted or null, 9464 is used. + implementationStatus: {} + with_resource_constant_labels: + description: Configure Prometheus Exporter to add resource attributes as metrics attributes. + implementationStatus: {} + without_scope_info: + description: | + Configure Prometheus Exporter to produce metrics without a scope info metric. + If omitted or null, false is used. + implementationStatus: {} + without_type_suffix: + description: | + Configure Prometheus Exporter to produce metrics without a type suffix. + If omitted or null, false is used. + implementationStatus: {} + without_units: + description: | + Configure Prometheus Exporter to produce metrics without a unit suffix or UNIT metadata. + If omitted or null, false is used. + implementationStatus: {} +ExperimentalResourceDetection: + definitionSource: resource.json#/$defs/ExperimentalResourceDetection + paths: + - .resource.detection/development + properties: + attributes: + description: Configure attributes provided by resource detectors. + implementationStatus: {} + detectors: + description: | + Configure resource detectors. + Resource detector names are dependent on the SDK language ecosystem. Please consult documentation for each respective language. + If omitted or null, no resource detectors are enabled. + implementationStatus: {} +ExperimentalResourceDetector: + definitionSource: resource.json#/$defs/ExperimentalResourceDetector + paths: + - .resource.detection/development.detectors[] + properties: {} +ExperimentalTracerConfig: + definitionSource: tracer_provider.json#/$defs/ExperimentalTracerConfig + paths: + - .tracer_provider.tracer_configurator/development.default_config + - .tracer_provider.tracer_configurator/development.tracers[].config + properties: + disabled: + description: Configure if the tracer is enabled or not. + implementationStatus: {} +ExperimentalTracerConfigurator: + definitionSource: tracer_provider.json#/$defs/ExperimentalTracerConfigurator + paths: + - .tracer_provider.tracer_configurator/development + properties: + default_config: + description: Configure the default tracer config used there is no matching entry in .tracer_configurator/development.tracers. + implementationStatus: {} + tracers: + description: Configure tracers. + implementationStatus: {} +ExperimentalTracerMatcherAndConfig: + definitionSource: tracer_provider.json#/$defs/ExperimentalTracerMatcherAndConfig + paths: + - .tracer_provider.tracer_configurator/development.tracers[] + properties: + config: + description: The tracer config. + implementationStatus: {} + name: + description: | + Configure tracer names to match, evaluated as follows: + + * If the tracer name exactly matches. + * If the tracer name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. + implementationStatus: {} +ExplicitBucketHistogramAggregation: + definitionSource: meter_provider.json#/$defs/ExplicitBucketHistogramAggregation + paths: + - .meter_provider.views[].stream.aggregation.explicit_bucket_histogram + properties: + boundaries: + description: | + Configure bucket boundaries. + If omitted, [0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, 7500, 10000] is used. + implementationStatus: {} + record_min_max: + description: | + Configure record min and max. + If omitted or null, true is used. + implementationStatus: {} +ExporterDefaultHistogramAggregation: + definitionSource: meter_provider.json#/$defs/ExporterDefaultHistogramAggregation + paths: [] + properties: {} +ExporterTemporalityPreference: + definitionSource: meter_provider.json#/$defs/ExporterTemporalityPreference + paths: [] + properties: {} +IncludeExclude: + definitionSource: common.json#/$defs/IncludeExclude + paths: + - .resource.detection/development.attributes + properties: + excluded: + description: | + Configure list of attribute key patterns to exclude from resource detectors. Applies after .resource.detectors.attributes.included (i.e. excluded has higher priority than included). + Attribute keys from resource detectors are evaluated to match as follows: + * If the value of the attribute key exactly matches. + * If the value of the attribute key matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. + If omitted, .included attributes are included. + implementationStatus: {} + included: + description: | + Configure list of attribute key patterns to include from resource detectors. + Attribute keys from resource detectors are evaluated to match as follows: + * If the value of the attribute key exactly matches. + * If the value of the attribute key matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. + If omitted, all attributes are included. + implementationStatus: {} +InstrumentType: + definitionSource: meter_provider.json#/$defs/InstrumentType + paths: [] + properties: {} +JaegerPropagator: + definitionSource: propagator.json#/$defs/JaegerPropagator + paths: [] + properties: {} +JaegerRemoteSampler: + definitionSource: tracer_provider.json#/$defs/JaegerRemoteSampler + paths: [] + properties: + endpoint: + description: unknown + implementationStatus: {} + initial_sampler: + description: unknown + implementationStatus: {} + interval: + description: unknown + implementationStatus: {} +LastValueAggregation: + definitionSource: meter_provider.json#/$defs/LastValueAggregation + paths: [] + properties: {} +LogRecordExporter: + definitionSource: logger_provider.json#/$defs/LogRecordExporter + paths: + - .logger_provider.processors[].*.exporter + properties: + console: + description: Configure exporter to be console. + implementationStatus: {} + otlp_file/development: + description: | + Configure exporter to be OTLP with file transport. + This type is in development and subject to breaking changes in minor versions. + implementationStatus: {} + otlp_grpc: + description: Configure exporter to be OTLP with gRPC transport. + implementationStatus: {} + otlp_http: + description: Configure exporter to be OTLP with HTTP transport. + implementationStatus: {} +LogRecordLimits: + definitionSource: logger_provider.json#/$defs/LogRecordLimits + paths: + - .logger_provider.limits + properties: + attribute_count_limit: + description: | + Configure max attribute count. Overrides .attribute_limits.attribute_count_limit. + Value must be non-negative. + If omitted or null, 128 is used. + implementationStatus: {} + attribute_value_length_limit: + description: | + Configure max attribute value size. Overrides .attribute_limits.attribute_value_length_limit. + Value must be non-negative. + If omitted or null, there is no limit. + implementationStatus: {} +LogRecordProcessor: + definitionSource: logger_provider.json#/$defs/LogRecordProcessor + paths: + - .logger_provider.processors[] + properties: + batch: + description: Configure a batch log record processor. + implementationStatus: {} + simple: + description: Configure a simple log record processor. + implementationStatus: {} +LoggerProvider: + definitionSource: opentelemetry_configuration.json#/$defs/LoggerProvider + paths: + - .logger_provider + properties: + limits: + description: Configure log record limits. See also attribute_limits. + implementationStatus: {} + logger_configurator/development: + description: | + Configure loggers. + This type is in development and subject to breaking changes in minor versions. + implementationStatus: {} + processors: + description: Configure log record processors. + implementationStatus: {} +MeterProvider: + definitionSource: opentelemetry_configuration.json#/$defs/MeterProvider + paths: + - .meter_provider + properties: + exemplar_filter: + description: | + Configure the exemplar filter. + Values include: trace_based, always_on, always_off. For behavior of values see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#metrics-sdk-configuration. + If omitted or null, trace_based is used. + implementationStatus: {} + meter_configurator/development: + description: | + Configure meters. + This type is in development and subject to breaking changes in minor versions. + implementationStatus: {} + readers: + description: Configure metric readers. + implementationStatus: {} + views: + description: | + Configure views. + Each view has a selector which determines the instrument(s) it applies to, and a configuration for the resulting stream(s). + implementationStatus: {} +MetricProducer: + definitionSource: meter_provider.json#/$defs/MetricProducer + paths: + - .meter_provider.readers[].pull.producers[] + - .meter_provider.readers[].periodic.producers[] + properties: + opencensus: + description: Configure metric producer to be opencensus. + implementationStatus: {} +MetricReader: + definitionSource: meter_provider.json#/$defs/MetricReader + paths: + - .meter_provider.readers[] + properties: + periodic: + description: Configure a periodic metric reader. + implementationStatus: {} + pull: + description: Configure a pull based metric reader. + implementationStatus: {} +NameStringValuePair: + definitionSource: common.json#/$defs/NameStringValuePair + paths: [] + properties: + name: + description: unknown + implementationStatus: {} + value: + description: unknown + implementationStatus: {} +OpenCensusMetricProducer: + definitionSource: meter_provider.json#/$defs/OpenCensusMetricProducer + paths: [] + properties: {} +OpenTelemetryConfiguration: + definitionSource: opentelemetry_configuration.json. + paths: + - . + properties: + attribute_limits: + description: Configure general attribute limits. See also tracer_provider.limits, logger_provider.limits. + implementationStatus: {} + disabled: + description: | + Configure if the SDK is disabled or not. + If omitted or null, false is used. + implementationStatus: {} + file_format: + description: | + The file format version. + The yaml format is documented at + https://github.com/open-telemetry/opentelemetry-configuration/tree/main/schema + implementationStatus: {} + instrumentation/development: + description: | + Configure instrumentation. + This type is in development and subject to breaking changes in minor versions. + implementationStatus: {} + log_level: + description: | + Configure the log level of the internal logger used by the SDK. + If omitted, info is used. + implementationStatus: {} + logger_provider: + description: | + Configure logger provider. + If omitted, a noop logger provider is used. + implementationStatus: {} + meter_provider: + description: | + Configure meter provider. + If omitted, a noop meter provider is used. + implementationStatus: {} + propagator: + description: | + Configure text map context propagators. + If omitted, a noop propagator is used. + implementationStatus: {} + resource: + description: | + Configure resource for all signals. + If omitted, the default resource is used. + implementationStatus: {} + tracer_provider: + description: | + Configure tracer provider. + If omitted, a noop tracer provider is used. + implementationStatus: {} +OpenTracingPropagator: + definitionSource: propagator.json#/$defs/OpenTracingPropagator + paths: [] + properties: {} +OtlpGrpcExporter: + definitionSource: common.json#/$defs/OtlpGrpcExporter + paths: + - .tracer_provider.processors[].*.exporter.otlp_grpc + - .logger_provider.processors[].*.exporter.otlp_grpc + - .meter_provider.readers[].periodic.exporter.otlp_grpc + properties: + certificate_file: + description: unknown + implementationStatus: {} + client_certificate_file: + description: unknown + implementationStatus: {} + client_key_file: + description: unknown + implementationStatus: {} + compression: + description: unknown + implementationStatus: {} + endpoint: + description: | + Configure endpoint. + If omitted or null, http://localhost:4317 is used. + implementationStatus: {} + headers: + description: unknown + implementationStatus: {} + headers_list: + description: unknown + implementationStatus: {} + insecure: + description: | + Configure client transport security for the exporter's connection. + Only applicable when .endpoint is provided without http or https scheme. Implementations may choose to ignore .insecure. + If omitted or null, false is used. + implementationStatus: {} + timeout: + description: unknown + implementationStatus: {} +OtlpGrpcMetricExporter: + definitionSource: meter_provider.json#/$defs/OtlpGrpcMetricExporter + paths: [] + properties: + certificate_file: + description: unknown + implementationStatus: {} + client_certificate_file: + description: unknown + implementationStatus: {} + client_key_file: + description: unknown + implementationStatus: {} + compression: + description: unknown + implementationStatus: {} + default_histogram_aggregation: + description: unknown + implementationStatus: {} + endpoint: + description: unknown + implementationStatus: {} + headers: + description: unknown + implementationStatus: {} + headers_list: + description: unknown + implementationStatus: {} + insecure: + description: unknown + implementationStatus: {} + temporality_preference: + description: unknown + implementationStatus: {} + timeout: + description: unknown + implementationStatus: {} +OtlpHttpEncoding: + definitionSource: common.json#/$defs/OtlpHttpEncoding + paths: [] + properties: {} +OtlpHttpExporter: + definitionSource: common.json#/$defs/OtlpHttpExporter + paths: + - .tracer_provider.processors[].*.exporter.otlp_http + - .logger_provider.processors[].*.exporter.otlp_http + - .meter_provider.readers[].periodic.exporter.otlp_http + properties: + certificate_file: + description: unknown + implementationStatus: {} + client_certificate_file: + description: unknown + implementationStatus: {} + client_key_file: + description: unknown + implementationStatus: {} + compression: + description: unknown + implementationStatus: {} + encoding: + description: | + Configure the encoding used for messages. + Values include: protobuf, json. Implementations may not support json. + If omitted or null, protobuf is used. + implementationStatus: {} + endpoint: + description: unknown + implementationStatus: {} + headers: + description: unknown + implementationStatus: {} + headers_list: + description: unknown + implementationStatus: {} + timeout: + description: unknown + implementationStatus: {} +OtlpHttpMetricExporter: + definitionSource: meter_provider.json#/$defs/OtlpHttpMetricExporter + paths: + - .meter_provider.readers[].periodic.exporter.otlp_http + properties: + certificate_file: + description: unknown + implementationStatus: {} + client_certificate_file: + description: unknown + implementationStatus: {} + client_key_file: + description: unknown + implementationStatus: {} + compression: + description: unknown + implementationStatus: {} + default_histogram_aggregation: + description: unknown + implementationStatus: {} + encoding: + description: unknown + implementationStatus: {} + endpoint: + description: | + Configure endpoint, including the metric specific path. + If omitted or null, http://localhost:4318/v1/metrics is used. + implementationStatus: {} + headers: + description: unknown + implementationStatus: {} + headers_list: + description: unknown + implementationStatus: {} + temporality_preference: + description: unknown + implementationStatus: {} + timeout: + description: unknown + implementationStatus: {} +ParentBasedSampler: + definitionSource: tracer_provider.json#/$defs/ParentBasedSampler + paths: [] + properties: + local_parent_not_sampled: + description: unknown + implementationStatus: {} + local_parent_sampled: + description: unknown + implementationStatus: {} + remote_parent_not_sampled: + description: unknown + implementationStatus: {} + remote_parent_sampled: + description: unknown + implementationStatus: {} + root: + description: unknown + implementationStatus: {} +PeriodicMetricReader: + definitionSource: meter_provider.json#/$defs/PeriodicMetricReader + paths: + - .meter_provider.readers[].periodic + properties: + cardinality_limits: + description: Configure cardinality limits. + implementationStatus: {} + exporter: + description: Configure exporter. + implementationStatus: {} + interval: + description: | + Configure delay interval (in milliseconds) between start of two consecutive exports. + Value must be non-negative. + If omitted or null, 60000 is used. + implementationStatus: {} + producers: + description: Configure metric producers. + implementationStatus: {} + timeout: + description: | + Configure maximum allowed time (in milliseconds) to export data. + Value must be non-negative. A value of 0 indicates no limit (infinity). + If omitted or null, 30000 is used. + implementationStatus: {} +Propagator: + definitionSource: opentelemetry_configuration.json#/$defs/Propagator + paths: + - .propagator + properties: + composite: + description: | + Configure the propagators in the composite text map propagator. Entries from .composite_list are appended to the list here with duplicates filtered out. + Built-in propagator keys include: tracecontext, baggage, b3, b3multi, jaeger, ottrace. Known third party keys include: xray. + If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used. + implementationStatus: {} + composite_list: + description: | + Configure the propagators in the composite text map propagator. Entries are appended to .composite with duplicates filtered out. + The value is a comma separated list of propagator identifiers matching the format of OTEL_PROPAGATORS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details. + Built-in propagator identifiers include: tracecontext, baggage, b3, b3multi, jaeger, ottrace. Known third party identifiers include: xray. + If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used. + implementationStatus: {} +PullMetricExporter: + definitionSource: meter_provider.json#/$defs/PullMetricExporter + paths: [] + properties: + prometheus/development: + description: unknown + implementationStatus: {} +PullMetricReader: + definitionSource: meter_provider.json#/$defs/PullMetricReader + paths: + - .meter_provider.readers[].pull + properties: + cardinality_limits: + description: Configure cardinality limits. + implementationStatus: {} + exporter: + description: Configure exporter. + implementationStatus: {} + producers: + description: Configure metric producers. + implementationStatus: {} +PushMetricExporter: + definitionSource: meter_provider.json#/$defs/PushMetricExporter + paths: [] + properties: + console: + description: unknown + implementationStatus: {} + otlp_file/development: + description: unknown + implementationStatus: {} + otlp_grpc: + description: unknown + implementationStatus: {} + otlp_http: + description: unknown + implementationStatus: {} +Resource: + definitionSource: opentelemetry_configuration.json#/$defs/Resource + paths: + - .resource + properties: + attributes: + description: | + Configure resource attributes. Entries have higher priority than entries from .resource.attributes_list. + Entries must contain .name and .value, and may optionally include .type. If an entry's .type omitted or null, string is used. + The .value's type must match the .type. Values for .type include: string, bool, int, double, string_array, bool_array, int_array, double_array. + implementationStatus: {} + attributes_list: + description: | + Configure resource attributes. Entries have lower priority than entries from .resource.attributes. + The value is a list of comma separated key-value pairs matching the format of OTEL_RESOURCE_ATTRIBUTES. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details. + If omitted or null, no resource attributes are added. + implementationStatus: {} + detection/development: + description: | + Configure resource detection. + This type is in development and subject to breaking changes in minor versions. + If omitted or null, resource detection is disabled. + implementationStatus: {} + schema_url: + description: | + Configure resource schema URL. + If omitted or null, no schema URL is used. + implementationStatus: {} +Sampler: + definitionSource: tracer_provider.json#/$defs/Sampler + paths: + - .tracer_provider.sampler + - .tracer_provider.sampler.* + properties: + always_off: + description: Configure sampler to be always_off. + implementationStatus: {} + always_on: + description: Configure sampler to be always_on. + implementationStatus: {} + jaeger_remote: + description: unknown + implementationStatus: {} + parent_based: + description: Configure sampler to be parent_based. + implementationStatus: {} + trace_id_ratio_based: + description: Configure sampler to be trace_id_ratio_based. + implementationStatus: {} +SimpleLogRecordProcessor: + definitionSource: logger_provider.json#/$defs/SimpleLogRecordProcessor + paths: + - .logger_provider.processors[].simple + properties: + exporter: + description: Configure exporter. + implementationStatus: {} +SimpleSpanProcessor: + definitionSource: tracer_provider.json#/$defs/SimpleSpanProcessor + paths: + - .tracer_provider.processors[].simple + properties: + exporter: + description: Configure exporter. + implementationStatus: {} +SpanExporter: + definitionSource: tracer_provider.json#/$defs/SpanExporter + paths: + - .tracer_provider.processors[].*.exporter + properties: + console: + description: Configure exporter to be console. + implementationStatus: {} + otlp_file/development: + description: | + Configure exporter to be OTLP with file transport. + This type is in development and subject to breaking changes in minor versions. + implementationStatus: {} + otlp_grpc: + description: Configure exporter to be OTLP with gRPC transport. + implementationStatus: {} + otlp_http: + description: Configure exporter to be OTLP with HTTP transport. + implementationStatus: {} + zipkin: + description: Configure exporter to be zipkin. + implementationStatus: {} +SpanLimits: + definitionSource: tracer_provider.json#/$defs/SpanLimits + paths: + - .tracer_provider.limits + properties: + attribute_count_limit: + description: | + Configure max attribute count. Overrides .attribute_limits.attribute_count_limit. + Value must be non-negative. + If omitted or null, 128 is used. + implementationStatus: {} + attribute_value_length_limit: + description: | + Configure max attribute value size. Overrides .attribute_limits.attribute_value_length_limit. + Value must be non-negative. + If omitted or null, there is no limit. + implementationStatus: {} + event_attribute_count_limit: + description: | + Configure max attributes per span event. + Value must be non-negative. + If omitted or null, 128 is used. + implementationStatus: {} + event_count_limit: + description: | + Configure max span event count. + Value must be non-negative. + If omitted or null, 128 is used. + implementationStatus: {} + link_attribute_count_limit: + description: | + Configure max attributes per span link. + Value must be non-negative. + If omitted or null, 128 is used. + implementationStatus: {} + link_count_limit: + description: | + Configure max span link count. + Value must be non-negative. + If omitted or null, 128 is used. + implementationStatus: {} +SpanProcessor: + definitionSource: tracer_provider.json#/$defs/SpanProcessor + paths: + - .tracer_provider.processors[] + properties: + batch: + description: Configure a batch span processor. + implementationStatus: {} + simple: + description: Configure a simple span processor. + implementationStatus: {} +SumAggregation: + definitionSource: meter_provider.json#/$defs/SumAggregation + paths: [] + properties: {} +TextMapPropagator: + definitionSource: propagator.json#/$defs/TextMapPropagator + paths: + - .propagator.composite[] + properties: + b3: + description: Include the zipkin b3 propagator. + implementationStatus: {} + b3multi: + description: Include the zipkin b3 multi propagator. + implementationStatus: {} + baggage: + description: Include the w3c baggage propagator. + implementationStatus: {} + jaeger: + description: Include the jaeger propagator. + implementationStatus: {} + ottrace: + description: Include the opentracing propagator. + implementationStatus: {} + tracecontext: + description: Include the w3c trace context propagator. + implementationStatus: {} +TraceContextPropagator: + definitionSource: propagator.json#/$defs/TraceContextPropagator + paths: [] + properties: {} +TraceIdRatioBasedSampler: + definitionSource: tracer_provider.json#/$defs/TraceIdRatioBasedSampler + paths: [] + properties: + ratio: + description: unknown + implementationStatus: {} +TracerProvider: + definitionSource: opentelemetry_configuration.json#/$defs/TracerProvider + paths: + - .tracer_provider + properties: + limits: + description: Configure span limits. See also attribute_limits. + implementationStatus: {} + processors: + description: Configure span processors. + implementationStatus: {} + sampler: + description: | + Configure the sampler. + If omitted, parent based sampler with a root of always_on is used. + implementationStatus: {} + tracer_configurator/development: + description: | + Configure tracers. + This type is in development and subject to breaking changes in minor versions. + implementationStatus: {} +View: + definitionSource: meter_provider.json#/$defs/View + paths: + - .meter_provider.views[] + properties: + selector: + description: | + Configure view selector. + Selection criteria is additive as described in https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#instrument-selection-criteria. + implementationStatus: {} + stream: + description: Configure view stream. + implementationStatus: {} +ViewSelector: + definitionSource: meter_provider.json#/$defs/ViewSelector + paths: + - .meter_provider.views[].selector + properties: + instrument_name: + description: | + Configure instrument name selection criteria. + If omitted or null, all instrument names match. + implementationStatus: {} + instrument_type: + description: | + Configure instrument type selection criteria. + Values include: counter, gauge, histogram, observable_counter, observable_gauge, observable_up_down_counter, up_down_counter. + If omitted or null, all instrument types match. + implementationStatus: {} + meter_name: + description: | + Configure meter name selection criteria. + If omitted or null, all meter names match. + implementationStatus: {} + meter_schema_url: + description: | + Configure meter schema url selection criteria. + If omitted or null, all meter schema URLs match. + implementationStatus: {} + meter_version: + description: | + Configure meter version selection criteria. + If omitted or null, all meter versions match. + implementationStatus: {} + unit: + description: | + Configure the instrument unit selection criteria. + If omitted or null, all instrument units match. + implementationStatus: {} +ViewStream: + definitionSource: meter_provider.json#/$defs/ViewStream + paths: + - .meter_provider.views[].stream + properties: + aggregation: + description: | + Configure aggregation of the resulting stream(s). + Values include: default, drop, explicit_bucket_histogram, base2_exponential_bucket_histogram, last_value, sum. For behavior of values see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#aggregation. + If omitted, default is used. + implementationStatus: {} + aggregation_cardinality_limit: + description: | + Configure the aggregation cardinality limit. + If omitted or null, the metric reader's default cardinality limit is used. + implementationStatus: {} + attribute_keys: + description: | + Configure attribute keys retained in the resulting stream(s). + implementationStatus: {} + description: + description: | + Configure metric description of the resulting stream(s). + If omitted or null, the instrument's origin description is used. + implementationStatus: {} + name: + description: | + Configure metric name of the resulting stream(s). + If omitted or null, the instrument's original name is used. + implementationStatus: {} +ZipkinSpanExporter: + definitionSource: tracer_provider.json#/$defs/ZipkinSpanExporter + paths: + - .tracer_provider.processors[].*.exporter.zipkin + properties: + endpoint: + description: | + Configure endpoint. + If omitted or null, http://localhost:9411/api/v2/spans is used. + implementationStatus: {} + timeout: + description: | + Configure max time (in milliseconds) to wait for each export. + Value must be non-negative. A value of 0 indicates indefinite. + If omitted or null, 10000 is used. + implementationStatus: {} diff --git a/package.json b/package.json index 2ced6b27..a4fb4d7c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,9 @@ { "scripts": { "generate-descriptions": "node scripts/generate-descriptions.js", - "generate-compliance-matrix": "node scripts/compliance-matrix.js" + "generate-compliance-matrix": "node scripts/compliance-matrix.js", + "generate-meta-schema": "node scripts/generate-meta-schema.js", + "validate-meta-schema": "node scripts/validate-meta-schema.js" }, "devDependencies": { "@json-schema-tools/traverse": "^1.10.4", diff --git a/schema/type_descriptions.yaml b/schema/type_descriptions.yaml index d85253a4..5f103a4f 100644 --- a/schema/type_descriptions.yaml +++ b/schema/type_descriptions.yaml @@ -82,7 +82,7 @@ path_patterns: - .resource -- type: ResourceDetection +- type: ExperimentalResourceDetection property_descriptions: attributes: Configure attributes provided by resource detectors. detectors: > @@ -94,7 +94,7 @@ path_patterns: - .resource.detection/development -- type: Detector +- type: ExperimentalResourceDetector property_descriptions: container: > Enable the container resource detector. @@ -115,7 +115,7 @@ path_patterns: - .resource.detection/development.detectors[] -- type: DetectorAttributes +- type: IncludeExclude property_descriptions: included: > Configure list of attribute key patterns to include from resource detectors. @@ -169,7 +169,7 @@ If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used. path_patterns: - .propagator -- type: CompositePropagator +- type: TextMapPropagator property_descriptions: tracecontext: Include the w3c trace context propagator. baggage: Include the w3c baggage propagator. @@ -261,14 +261,14 @@ path_patterns: - .logger_provider.limits -- type: LoggerConfigurator +- type: ExperimentalLoggerConfigurator property_descriptions: default_config: Configure the default logger config used there is no matching entry in .logger_configurator/development.loggers. loggers: Configure loggers. path_patterns: - .logger_provider.logger_configurator/development -- type: LoggerConfigAndMatcher +- type: ExperimentalLoggerMatcherAndConfig property_descriptions: name: > Configure logger names to match, evaluated as follows: @@ -279,7 +279,7 @@ path_patterns: - .logger_provider.logger_configurator/development.loggers[] -- type: LoggerConfig +- type: ExperimentalLoggerConfig property_descriptions: disabled: Configure if the logger is enabled or not. path_patterns: @@ -445,14 +445,14 @@ - .tracer_provider.sampler - .tracer_provider.sampler.* -- type: TracerConfigurator +- type: ExperimentalTracerConfigurator property_descriptions: default_config: Configure the default tracer config used there is no matching entry in .tracer_configurator/development.tracers. tracers: Configure tracers. path_patterns: - .tracer_provider.tracer_configurator/development -- type: TracerConfigAndMatcher +- type: ExperimentalTracerMatcherAndConfig property_descriptions: name: > Configure tracer names to match, evaluated as follows: @@ -463,7 +463,7 @@ path_patterns: - .tracer_provider.tracer_configurator/development.tracers[] -- type: TracerConfig +- type: ExperimentalTracerConfig property_descriptions: disabled: Configure if the tracer is enabled or not. path_patterns: @@ -591,7 +591,7 @@ path_patterns: - .meter_provider.readers[].*.exporter -- type: PrometheusMetricExporter +- type: ExperimentalPrometheusMetricExporter property_descriptions: host: > Configure host. @@ -645,7 +645,7 @@ path_patterns: - .meter_provider.views[] -- type: Selector +- type: ViewSelector property_descriptions: instrument_name: > Configure instrument name selection criteria. @@ -676,7 +676,7 @@ path_patterns: - .meter_provider.views[].selector -- type: Stream +- type: ViewStream property_descriptions: name: > Configure metric name of the resulting stream(s). @@ -714,13 +714,13 @@ path_patterns: - .meter_provider.views[].stream.attribute_keys -- type: StreamAggregation +- type: Aggregation property_descriptions: explicit_bucket_histogram: Configure aggregation to be explicit_bucket_histogram. path_patterns: - .meter_provider.views[].stream.aggregation -- type: StreamAggregationExplicitBucketHistogram +- type: ExplicitBucketHistogramAggregation property_descriptions: boundaries: > Configure bucket boundaries. @@ -733,14 +733,14 @@ path_patterns: - .meter_provider.views[].stream.aggregation.explicit_bucket_histogram -- type: MeterConfigurator +- type: ExperimentalMeterConfigurator property_descriptions: default_config: Configure the default meter config used there is no matching entry in .meter_configurator/development.meters. meters: Configure meters. path_patterns: - .meter_provider.meter_configurator/development -- type: MeterConfigAndMatcher +- type: ExperimentalMeterMatcherAndConfig property_descriptions: name: > Configure meter names to match, evaluated as follows: @@ -751,7 +751,7 @@ path_patterns: - .meter_provider.meter_configurator/development.meters[] -- type: MeterConfig +- type: ExperimentalMeterConfig property_descriptions: disabled: Configure if the meter is enabled or not. path_patterns: @@ -888,7 +888,7 @@ # END common # START Instrumentation -- type: Instrumentation +- type: ExperimentalInstrumentation property_descriptions: general: > Configure general SemConv options that may apply to multiple languages and instrumentations. @@ -908,7 +908,7 @@ path_patterns: - .instrumentation/development -- type: GeneralInstrumentation +- type: ExperimentalGeneralInstrumentation property_descriptions: peer: > Configure instrumentations following the peer semantic conventions. @@ -932,7 +932,7 @@ path_patterns: - .instrumentation/development.general.peer -- type: GeneralInstrumentationHttp +- type: ExperimentalHttpInstrumentation property_descriptions: client: Configure instrumentations following the http client semantic conventions. server: Configure instrumentations following the http server semantic conventions. diff --git a/scripts/compliance-matrix.js b/scripts/compliance-matrix.js index eb292c21..3a60595f 100644 --- a/scripts/compliance-matrix.js +++ b/scripts/compliance-matrix.js @@ -1,5 +1,6 @@ const fs = require("node:fs"); const traverse = require("@json-schema-tools/traverse").default; +const yaml = require('yaml'); /* * Build up a catalog of schema types @@ -7,6 +8,15 @@ const traverse = require("@json-schema-tools/traverse").default; const schemasByName = {}; const topLevelSchemas = {}; +const typeDescriptions = yaml.parse(fs.readFileSync(__dirname + "/../schema/type_descriptions.yaml", "utf-8")); + +function findTypeDescription(type) { + return typeDescriptions.find(typeDescription => { + return typeDescription.type === type; + }); +} + + // Iterate through schema files, adding top-level types and $defs const schemaDirPath = __dirname + "/../schema/"; fs.readdirSync(schemaDirPath) @@ -55,8 +65,19 @@ const languages = ['c++', 'c#', 'erlang', 'go', 'java', 'js', 'php', 'python', ' const output = []; const types = Object.keys(schemasByName); types.sort(); + +const metaSchema = {}; + types.forEach(type => { const value = schemasByName[type]; + let typeDescription = findTypeDescription(type); + if (typeDescription === undefined) { + typeDescription = { path_patterns: [], property_descriptions: {}}; + } + + const typeProperties = {}; + const typeDef = { properties: typeProperties, paths: typeDescription.path_patterns, definitionSource: `${value.file}${value.path}` }; + metaSchema[type] = typeDef; output.push("### " + type + " \n\n") const properties = value.schema.properties; @@ -73,6 +94,17 @@ types.forEach(type => { output.push("\n") Object.entries(properties).forEach(([propertyKey, propertyValue]) => { + let description = typeDescription.property_descriptions[propertyKey]; + if (description === undefined) { + description = "unknown"; + } + + const propertyDef = { + description, + implementationStatus: {} + }; + typeProperties[propertyKey] = propertyDef; + output.push("| " + propertyKey + " | "); output.push(resolveType(propertyValue) + " | "); languages.forEach(language => output.push(" |")); @@ -92,6 +124,34 @@ function findMatch(ref) { }); } +function resolveTypeRaw(schema) { + const ref = schema['$ref']; + if (ref) { + const match = findMatch(ref); + if (!match) { + throw new Error("Could not resolve $ref: " + ref); + } + return match.name; + } + const type = schema.type; + if (type === 'array') { + const items = schema.items; + const itemsType = resolveTypeRaw(items); + return itemsType + "[]"; + } + if (typeof type == 'string') { + return type; + } + if (type === undefined) { + return "unknown"; + } + const filtered = type.filter(val => val !== 'null'); + if (filtered.length !== 1) { + throw new Error("expected type to have size 1 but was: " + type); + } + return filtered[0]; +} + function resolveType(schema) { const ref = schema['$ref']; if (ref) { @@ -117,3 +177,4 @@ function resolveType(schema) { } fs.writeFileSync(__dirname + "/../compliance.md", output.join("")); +fs.writeFileSync(__dirname + "/../meta_schema.yaml", yaml.stringify(metaSchema, { sortMapEntries: true, lineWidth: 0 })); diff --git a/scripts/generate-meta-schema.js b/scripts/generate-meta-schema.js new file mode 100644 index 00000000..3a60595f --- /dev/null +++ b/scripts/generate-meta-schema.js @@ -0,0 +1,180 @@ +const fs = require("node:fs"); +const traverse = require("@json-schema-tools/traverse").default; +const yaml = require('yaml'); + +/* + * Build up a catalog of schema types + */ +const schemasByName = {}; +const topLevelSchemas = {}; + +const typeDescriptions = yaml.parse(fs.readFileSync(__dirname + "/../schema/type_descriptions.yaml", "utf-8")); + +function findTypeDescription(type) { + return typeDescriptions.find(typeDescription => { + return typeDescription.type === type; + }); +} + + +// Iterate through schema files, adding top-level types and $defs +const schemaDirPath = __dirname + "/../schema/"; +fs.readdirSync(schemaDirPath) + .filter(file => file.endsWith(".json")) + .forEach(file => { + const schema = require(`${schemaDirPath}${file}`); + topLevelSchemas[file] = schema; + + if (file === 'opentelemetry_configuration.json') { + schemasByName['OpenTelemetryConfiguration'] = { name: 'OpentelemetryConfiguration', file, path: '.', schema }; + } + + traverse(schema, (schema) => { + const defs = schema['$defs']; + if (defs) { + Object.entries(defs).forEach(([name, schema]) => { + const path = `#/$defs/${name}`; + if (name in schemasByName) { + throw new Error(`${name} already exists in schemasByName with definition: ` + schemasByName[name]); + } + schemasByName[name] = { name, file, path, schema }; + }); + } + }); + }); + +// Resolve refs to top-level types +Object.entries(schemasByName).forEach(([key, value]) => { + const ref = value.schema['$ref']; + if (ref) { + const topLevelSchema = topLevelSchemas[ref]; + if (!topLevelSchema) { + throw new Error("Could not resolve $ref:" + ref); + } + schemasByName[key] = { ...value, schema: topLevelSchema }; + } +}); + +// Uncomment to view contents of catalog +// console.log(schemasByName); + +/** + * Iterate through types and print markdown representation. + */ +const languages = ['c++', 'c#', 'erlang', 'go', 'java', 'js', 'php', 'python', 'ruby', 'rust', 'swift'] +const output = []; +const types = Object.keys(schemasByName); +types.sort(); + +const metaSchema = {}; + +types.forEach(type => { + const value = schemasByName[type]; + let typeDescription = findTypeDescription(type); + if (typeDescription === undefined) { + typeDescription = { path_patterns: [], property_descriptions: {}}; + } + + const typeProperties = {}; + const typeDef = { properties: typeProperties, paths: typeDescription.path_patterns, definitionSource: `${value.file}${value.path}` }; + metaSchema[type] = typeDef; + + output.push("### " + type + " \n\n") + const properties = value.schema.properties; + if (!properties) { + return; + } + + output.push("| Property | Type | "); + languages.forEach(language => output.push(language + " |")); + output.push("\n") + + output.push("|---|---|") + languages.forEach(language => output.push("---|")); + output.push("\n") + + Object.entries(properties).forEach(([propertyKey, propertyValue]) => { + let description = typeDescription.property_descriptions[propertyKey]; + if (description === undefined) { + description = "unknown"; + } + + const propertyDef = { + description, + implementationStatus: {} + }; + typeProperties[propertyKey] = propertyDef; + + output.push("| " + propertyKey + " | "); + output.push(resolveType(propertyValue) + " | "); + languages.forEach(language => output.push(" |")); + output.push("\n") + }); + + output.push("\n") +}) + +function findMatch(ref) { + return Object.values(schemasByName) + .find(value => { + if (value.path === ref) { + return true; + } + return `${value.file}${value.path}` === ref; + }); +} + +function resolveTypeRaw(schema) { + const ref = schema['$ref']; + if (ref) { + const match = findMatch(ref); + if (!match) { + throw new Error("Could not resolve $ref: " + ref); + } + return match.name; + } + const type = schema.type; + if (type === 'array') { + const items = schema.items; + const itemsType = resolveTypeRaw(items); + return itemsType + "[]"; + } + if (typeof type == 'string') { + return type; + } + if (type === undefined) { + return "unknown"; + } + const filtered = type.filter(val => val !== 'null'); + if (filtered.length !== 1) { + throw new Error("expected type to have size 1 but was: " + type); + } + return filtered[0]; +} + +function resolveType(schema) { + const ref = schema['$ref']; + if (ref) { + const match = findMatch(ref); + if (!match) { + throw new Error("Could not resolve $ref: " + ref); + } + return "" + match.name + ""; + } + const type = schema.type; + if (type === 'array') { + const items = schema.items; + const itemsType = resolveType(items); + return itemsType + "[]"; + } + if (typeof type == 'string') { + return type; + } + if (type === undefined) { + return "unknown"; + } + return "[" + type.join(", ") + "]"; +} + +fs.writeFileSync(__dirname + "/../compliance.md", output.join("")); +fs.writeFileSync(__dirname + "/../meta_schema.yaml", yaml.stringify(metaSchema, { sortMapEntries: true, lineWidth: 0 })); diff --git a/scripts/validate-meta-schema.js b/scripts/validate-meta-schema.js new file mode 100644 index 00000000..beae8e62 --- /dev/null +++ b/scripts/validate-meta-schema.js @@ -0,0 +1,104 @@ +const fs = require("node:fs"); +const traverse = require("@json-schema-tools/traverse").default; +const yaml = require('yaml'); + +const metaSchemaPath = __dirname + "/../meta_schema.yaml"; +const metaSchemaContent = fs.readFileSync(metaSchemaPath, "utf-8"); +const metaSchemaDoc = yaml.parse(metaSchemaContent); + +// console.log(metaSchemaDoc); + +const schemasByName = {}; +const topLevelSchemas = {}; + +// Iterate through schema files, adding top-level types and $defs +const schemaDirPath = __dirname + "/../schema/"; +fs.readdirSync(schemaDirPath) + .filter(file => file.endsWith(".json")) + .forEach(file => { + const schema = require(`${schemaDirPath}${file}`); + topLevelSchemas[file] = schema; + + if (file === 'opentelemetry_configuration.json') { + schemasByName['OpenTelemetryConfiguration'] = { name: 'OpentelemetryConfiguration', file, path: '.', schema }; + } + + traverse(schema, (schema) => { + const defs = schema['$defs']; + if (!defs) return; + Object.entries(defs).forEach(([name, schema]) => { + const path = `#/$defs/${name}`; + if (name in schemasByName) { + throw new Error(`${name} already exists in schemasByName with definition: ` + schemasByName[name]); + } + schemasByName[name] = { name, file, path, schema }; + }); + }); + }); + +// Resolve refs to top-level types +Object.entries(schemasByName).forEach(([key, value]) => { + const ref = value.schema['$ref']; + if (!ref) return; + const topLevelSchema = topLevelSchemas[ref]; + if (!topLevelSchema) { + throw new Error("Could not resolve $ref:" + ref); + } + schemasByName[key] = { ...value, schema: topLevelSchema }; +}); + +// Validate no extra types in meta schema which are not in schema +const schemaTypes = Object.keys(schemasByName); +const metaSchemaTypes = Object.keys(metaSchemaDoc); + +metaSchemaTypes.forEach(typeName => { + if (!(typeName in schemasByName)) { + throw new Error(`${metaSchemaPath} has extra definition for type ${typeName} which is not part of schema`); + } +}); + +// Validate no extra types in schema which are not in meta schema +schemaTypes.forEach(typeName => { + if (!(typeName in metaSchemaDoc)) { + throw new Error(`${metaSchemaPath} missing definition for type ${typeName}`); + } +}); + +// Validate meta schema types are in lexicographical order +schemaTypes.sort(); +for (let i = 0; i < schemaTypes.length; i++) { + console.log(schemaTypes[i] + " " + metaSchemaTypes[i]); + if (schemaTypes[i] !== metaSchemaTypes[i]) { + throw new Error(`${metaSchemaPath} types are not in lexicographical order\n`); + } +} + +// Iterate through schema and validate all are correctly reflected in the meta schema +schemaTypes.forEach(typeName => { + const type = schemasByName[typeName]; +// console.log(typeName); +// console.log(type); +// console.log(); + + // We've previously asserted that metaSchemaDoc and schemasByname contains the same keys + const metaSchemaDef = metaSchemaDoc[typeName]; + + // TODO: validate metaSchemaDef has definitionSource, paths, properties + + const metasSchemaProperties = metaSchemaDef['properties']; + // TODO: check that properties is an object + if (!metasSchemaProperties) { + throw new Error(`${metaSchemaPath} has invalid definition for type ${typeName}: missing properties`); + } + + const properties = type.schema['properties']; + if (!properties) { + return; + } + Object.entries(properties).forEach(([propertyName, property]) => { + const metaSchemaProperty = metasSchemaProperties[propertyName]; + if (!metaSchemaProperty) { + throw new Error(`${metaSchemaPath} has invalid definition for type ${typeName}: missing property ${propertyName}`); + } + }); +}); From 723e380515f9a3cc51f45f2e0a05ea0fad5e8dff Mon Sep 17 00:00:00 2001 From: Jack Berg <34418638+jack-berg@users.noreply.github.com> Date: Fri, 25 Apr 2025 12:43:24 -0500 Subject: [PATCH 04/23] Progress --- Makefile | 6 +- compliance.md | 567 ----------------------------- package.json | 2 +- schema.md | 611 ++++++++++++++++++++++++++++++++ scripts/compliance-matrix.js | 180 ---------- scripts/generate-markdown.js | 43 +++ scripts/generate-meta-schema.js | 139 +------- scripts/schema.js | 96 +++++ 8 files changed, 756 insertions(+), 888 deletions(-) delete mode 100644 compliance.md create mode 100644 schema.md delete mode 100644 scripts/compliance-matrix.js create mode 100644 scripts/generate-markdown.js create mode 100644 scripts/schema.js diff --git a/Makefile b/Makefile index 2c881ad3..a4c70500 100644 --- a/Makefile +++ b/Makefile @@ -41,9 +41,9 @@ update-file-format: sed -e 's/file_format:.*/file_format: \"$(FILE_FORMAT)\"/g' -i '' ./examples/$$f; \ done -.PHONY: generate-compliance-matrix -generate-compliance-matrix: - npm run-script generate-compliance-matrix || exit 1; \ +.PHONY: generate-markdown +generate-markdown: + npm run-script generate-markdown || exit 1; \ .PHONY: generate-meta-schema generate-meta-schema: diff --git a/compliance.md b/compliance.md deleted file mode 100644 index b75dfaba..00000000 --- a/compliance.md +++ /dev/null @@ -1,567 +0,0 @@ -### Aggregation - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| default | DefaultAggregation | | | | | | | | | | | | -| drop | DropAggregation | | | | | | | | | | | | -| explicit_bucket_histogram | ExplicitBucketHistogramAggregation | | | | | | | | | | | | -| base2_exponential_bucket_histogram | Base2ExponentialBucketHistogramAggregation | | | | | | | | | | | | -| last_value | LastValueAggregation | | | | | | | | | | | | -| sum | SumAggregation | | | | | | | | | | | | - -### AlwaysOffSampler - -### AlwaysOnSampler - -### AttributeLimits - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| attribute_value_length_limit | [integer, null] | | | | | | | | | | | | -| attribute_count_limit | [integer, null] | | | | | | | | | | | | - -### AttributeNameValue - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| name | string | | | | | | | | | | | | -| value | unknown | | | | | | | | | | | | -| type | AttributeType | | | | | | | | | | | | - -### AttributeType - -### B3MultiPropagator - -### B3Propagator - -### BaggagePropagator - -### Base2ExponentialBucketHistogramAggregation - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| max_scale | [integer, null] | | | | | | | | | | | | -| max_size | [integer, null] | | | | | | | | | | | | -| record_min_max | [boolean, null] | | | | | | | | | | | | - -### BatchLogRecordProcessor - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| schedule_delay | [integer, null] | | | | | | | | | | | | -| export_timeout | [integer, null] | | | | | | | | | | | | -| max_queue_size | [integer, null] | | | | | | | | | | | | -| max_export_batch_size | [integer, null] | | | | | | | | | | | | -| exporter | LogRecordExporter | | | | | | | | | | | | - -### BatchSpanProcessor - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| schedule_delay | [integer, null] | | | | | | | | | | | | -| export_timeout | [integer, null] | | | | | | | | | | | | -| max_queue_size | [integer, null] | | | | | | | | | | | | -| max_export_batch_size | [integer, null] | | | | | | | | | | | | -| exporter | SpanExporter | | | | | | | | | | | | - -### CardinalityLimits - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| default | [integer, null] | | | | | | | | | | | | -| counter | [integer, null] | | | | | | | | | | | | -| gauge | [integer, null] | | | | | | | | | | | | -| histogram | [integer, null] | | | | | | | | | | | | -| observable_counter | [integer, null] | | | | | | | | | | | | -| observable_gauge | [integer, null] | | | | | | | | | | | | -| observable_up_down_counter | [integer, null] | | | | | | | | | | | | -| up_down_counter | [integer, null] | | | | | | | | | | | | - -### ConsoleExporter - -### DefaultAggregation - -### DropAggregation - -### ExemplarFilter - -### ExperimentalGeneralInstrumentation - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| peer | ExperimentalPeerInstrumentation | | | | | | | | | | | | -| http | ExperimentalHttpInstrumentation | | | | | | | | | | | | - -### ExperimentalHttpInstrumentation - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| client | object | | | | | | | | | | | | -| server | object | | | | | | | | | | | | - -### ExperimentalInstrumentation - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| general | ExperimentalGeneralInstrumentation | | | | | | | | | | | | -| cpp | ExperimentalLanguageSpecificInstrumentation | | | | | | | | | | | | -| dotnet | ExperimentalLanguageSpecificInstrumentation | | | | | | | | | | | | -| erlang | ExperimentalLanguageSpecificInstrumentation | | | | | | | | | | | | -| go | ExperimentalLanguageSpecificInstrumentation | | | | | | | | | | | | -| java | ExperimentalLanguageSpecificInstrumentation | | | | | | | | | | | | -| js | ExperimentalLanguageSpecificInstrumentation | | | | | | | | | | | | -| php | ExperimentalLanguageSpecificInstrumentation | | | | | | | | | | | | -| python | ExperimentalLanguageSpecificInstrumentation | | | | | | | | | | | | -| ruby | ExperimentalLanguageSpecificInstrumentation | | | | | | | | | | | | -| rust | ExperimentalLanguageSpecificInstrumentation | | | | | | | | | | | | -| swift | ExperimentalLanguageSpecificInstrumentation | | | | | | | | | | | | - -### ExperimentalLanguageSpecificInstrumentation - -### ExperimentalLoggerConfig - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| disabled | [boolean] | | | | | | | | | | | | - -### ExperimentalLoggerConfigurator - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| default_config | ExperimentalLoggerConfig | | | | | | | | | | | | -| loggers | ExperimentalLoggerMatcherAndConfig[] | | | | | | | | | | | | - -### ExperimentalLoggerMatcherAndConfig - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| name | [string] | | | | | | | | | | | | -| config | ExperimentalLoggerConfig | | | | | | | | | | | | - -### ExperimentalMeterConfig - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| disabled | [boolean] | | | | | | | | | | | | - -### ExperimentalMeterConfigurator - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| default_config | ExperimentalMeterConfig | | | | | | | | | | | | -| meters | ExperimentalMeterMatcherAndConfig[] | | | | | | | | | | | | - -### ExperimentalMeterMatcherAndConfig - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| name | [string] | | | | | | | | | | | | -| config | ExperimentalMeterConfig | | | | | | | | | | | | - -### ExperimentalOtlpFileExporter - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| output_stream | [string, null] | | | | | | | | | | | | - -### ExperimentalOtlpFileMetricExporter - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| output_stream | [string, null] | | | | | | | | | | | | -| temporality_preference | ExporterTemporalityPreference | | | | | | | | | | | | -| default_histogram_aggregation | ExporterDefaultHistogramAggregation | | | | | | | | | | | | - -### ExperimentalPeerInstrumentation - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| service_mapping | object[] | | | | | | | | | | | | - -### ExperimentalPrometheusMetricExporter - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| host | [string, null] | | | | | | | | | | | | -| port | [integer, null] | | | | | | | | | | | | -| without_units | [boolean, null] | | | | | | | | | | | | -| without_type_suffix | [boolean, null] | | | | | | | | | | | | -| without_scope_info | [boolean, null] | | | | | | | | | | | | -| with_resource_constant_labels | IncludeExclude | | | | | | | | | | | | - -### ExperimentalResourceDetection - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| attributes | IncludeExclude | | | | | | | | | | | | -| detectors | ExperimentalResourceDetector[] | | | | | | | | | | | | - -### ExperimentalResourceDetector - -### ExperimentalTracerConfig - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| disabled | [boolean] | | | | | | | | | | | | - -### ExperimentalTracerConfigurator - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| default_config | ExperimentalTracerConfig | | | | | | | | | | | | -| tracers | ExperimentalTracerMatcherAndConfig[] | | | | | | | | | | | | - -### ExperimentalTracerMatcherAndConfig - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| name | [string] | | | | | | | | | | | | -| config | ExperimentalTracerConfig | | | | | | | | | | | | - -### ExplicitBucketHistogramAggregation - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| boundaries | number[] | | | | | | | | | | | | -| record_min_max | [boolean, null] | | | | | | | | | | | | - -### ExporterDefaultHistogramAggregation - -### ExporterTemporalityPreference - -### IncludeExclude - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| included | string[] | | | | | | | | | | | | -| excluded | string[] | | | | | | | | | | | | - -### InstrumentType - -### JaegerPropagator - -### JaegerRemoteSampler - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| endpoint | [string, null] | | | | | | | | | | | | -| interval | [integer, null] | | | | | | | | | | | | -| initial_sampler | Sampler | | | | | | | | | | | | - -### LastValueAggregation - -### LogRecordExporter - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| otlp_http | OtlpHttpExporter | | | | | | | | | | | | -| otlp_grpc | OtlpGrpcExporter | | | | | | | | | | | | -| otlp_file/development | ExperimentalOtlpFileExporter | | | | | | | | | | | | -| console | ConsoleExporter | | | | | | | | | | | | - -### LogRecordLimits - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| attribute_value_length_limit | [integer, null] | | | | | | | | | | | | -| attribute_count_limit | [integer, null] | | | | | | | | | | | | - -### LogRecordProcessor - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| batch | BatchLogRecordProcessor | | | | | | | | | | | | -| simple | SimpleLogRecordProcessor | | | | | | | | | | | | - -### LoggerProvider - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| processors | LogRecordProcessor[] | | | | | | | | | | | | -| limits | LogRecordLimits | | | | | | | | | | | | -| logger_configurator/development | ExperimentalLoggerConfigurator | | | | | | | | | | | | - -### MeterProvider - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| readers | MetricReader[] | | | | | | | | | | | | -| views | View[] | | | | | | | | | | | | -| exemplar_filter | ExemplarFilter | | | | | | | | | | | | -| meter_configurator/development | ExperimentalMeterConfigurator | | | | | | | | | | | | - -### MetricProducer - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| opencensus | OpenCensusMetricProducer | | | | | | | | | | | | - -### MetricReader - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| periodic | PeriodicMetricReader | | | | | | | | | | | | -| pull | PullMetricReader | | | | | | | | | | | | - -### NameStringValuePair - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| name | string | | | | | | | | | | | | -| value | [string, null] | | | | | | | | | | | | - -### OpenCensusMetricProducer - -### OpenTelemetryConfiguration - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| file_format | string | | | | | | | | | | | | -| disabled | [boolean, null] | | | | | | | | | | | | -| log_level | [string, null] | | | | | | | | | | | | -| attribute_limits | AttributeLimits | | | | | | | | | | | | -| logger_provider | LoggerProvider | | | | | | | | | | | | -| meter_provider | MeterProvider | | | | | | | | | | | | -| propagator | Propagator | | | | | | | | | | | | -| tracer_provider | TracerProvider | | | | | | | | | | | | -| resource | Resource | | | | | | | | | | | | -| instrumentation/development | ExperimentalInstrumentation | | | | | | | | | | | | - -### OpenTracingPropagator - -### OtlpGrpcExporter - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| endpoint | [string, null] | | | | | | | | | | | | -| certificate_file | [string, null] | | | | | | | | | | | | -| client_key_file | [string, null] | | | | | | | | | | | | -| client_certificate_file | [string, null] | | | | | | | | | | | | -| headers | NameStringValuePair[] | | | | | | | | | | | | -| headers_list | [string, null] | | | | | | | | | | | | -| compression | [string, null] | | | | | | | | | | | | -| timeout | [integer, null] | | | | | | | | | | | | -| insecure | [boolean, null] | | | | | | | | | | | | - -### OtlpGrpcMetricExporter - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| endpoint | [string, null] | | | | | | | | | | | | -| certificate_file | [string, null] | | | | | | | | | | | | -| client_key_file | [string, null] | | | | | | | | | | | | -| client_certificate_file | [string, null] | | | | | | | | | | | | -| headers | NameStringValuePair[] | | | | | | | | | | | | -| headers_list | [string, null] | | | | | | | | | | | | -| compression | [string, null] | | | | | | | | | | | | -| timeout | [integer, null] | | | | | | | | | | | | -| insecure | [boolean, null] | | | | | | | | | | | | -| temporality_preference | ExporterTemporalityPreference | | | | | | | | | | | | -| default_histogram_aggregation | ExporterDefaultHistogramAggregation | | | | | | | | | | | | - -### OtlpHttpEncoding - -### OtlpHttpExporter - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| endpoint | [string, null] | | | | | | | | | | | | -| certificate_file | [string, null] | | | | | | | | | | | | -| client_key_file | [string, null] | | | | | | | | | | | | -| client_certificate_file | [string, null] | | | | | | | | | | | | -| headers | NameStringValuePair[] | | | | | | | | | | | | -| headers_list | [string, null] | | | | | | | | | | | | -| compression | [string, null] | | | | | | | | | | | | -| timeout | [integer, null] | | | | | | | | | | | | -| encoding | OtlpHttpEncoding | | | | | | | | | | | | - -### OtlpHttpMetricExporter - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| endpoint | [string, null] | | | | | | | | | | | | -| certificate_file | [string, null] | | | | | | | | | | | | -| client_key_file | [string, null] | | | | | | | | | | | | -| client_certificate_file | [string, null] | | | | | | | | | | | | -| headers | NameStringValuePair[] | | | | | | | | | | | | -| headers_list | [string, null] | | | | | | | | | | | | -| compression | [string, null] | | | | | | | | | | | | -| timeout | [integer, null] | | | | | | | | | | | | -| encoding | OtlpHttpEncoding | | | | | | | | | | | | -| temporality_preference | ExporterTemporalityPreference | | | | | | | | | | | | -| default_histogram_aggregation | ExporterDefaultHistogramAggregation | | | | | | | | | | | | - -### ParentBasedSampler - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| root | Sampler | | | | | | | | | | | | -| remote_parent_sampled | Sampler | | | | | | | | | | | | -| remote_parent_not_sampled | Sampler | | | | | | | | | | | | -| local_parent_sampled | Sampler | | | | | | | | | | | | -| local_parent_not_sampled | Sampler | | | | | | | | | | | | - -### PeriodicMetricReader - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| interval | [integer, null] | | | | | | | | | | | | -| timeout | [integer, null] | | | | | | | | | | | | -| exporter | PushMetricExporter | | | | | | | | | | | | -| producers | MetricProducer[] | | | | | | | | | | | | -| cardinality_limits | CardinalityLimits | | | | | | | | | | | | - -### Propagator - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| composite | TextMapPropagator[] | | | | | | | | | | | | -| composite_list | [string, null] | | | | | | | | | | | | - -### PullMetricExporter - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| prometheus/development | ExperimentalPrometheusMetricExporter | | | | | | | | | | | | - -### PullMetricReader - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| exporter | PullMetricExporter | | | | | | | | | | | | -| producers | MetricProducer[] | | | | | | | | | | | | -| cardinality_limits | CardinalityLimits | | | | | | | | | | | | - -### PushMetricExporter - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| otlp_http | OtlpHttpMetricExporter | | | | | | | | | | | | -| otlp_grpc | OtlpGrpcMetricExporter | | | | | | | | | | | | -| otlp_file/development | ExperimentalOtlpFileMetricExporter | | | | | | | | | | | | -| console | ConsoleExporter | | | | | | | | | | | | - -### Resource - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| attributes | AttributeNameValue[] | | | | | | | | | | | | -| detection/development | ExperimentalResourceDetection | | | | | | | | | | | | -| schema_url | [string, null] | | | | | | | | | | | | -| attributes_list | [string, null] | | | | | | | | | | | | - -### Sampler - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| always_off | AlwaysOffSampler | | | | | | | | | | | | -| always_on | AlwaysOnSampler | | | | | | | | | | | | -| jaeger_remote | JaegerRemoteSampler | | | | | | | | | | | | -| parent_based | ParentBasedSampler | | | | | | | | | | | | -| trace_id_ratio_based | TraceIdRatioBasedSampler | | | | | | | | | | | | - -### SimpleLogRecordProcessor - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| exporter | LogRecordExporter | | | | | | | | | | | | - -### SimpleSpanProcessor - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| exporter | SpanExporter | | | | | | | | | | | | - -### SpanExporter - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| otlp_http | OtlpHttpExporter | | | | | | | | | | | | -| otlp_grpc | OtlpGrpcExporter | | | | | | | | | | | | -| otlp_file/development | ExperimentalOtlpFileExporter | | | | | | | | | | | | -| console | ConsoleExporter | | | | | | | | | | | | -| zipkin | ZipkinSpanExporter | | | | | | | | | | | | - -### SpanLimits - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| attribute_value_length_limit | [integer, null] | | | | | | | | | | | | -| attribute_count_limit | [integer, null] | | | | | | | | | | | | -| event_count_limit | [integer, null] | | | | | | | | | | | | -| link_count_limit | [integer, null] | | | | | | | | | | | | -| event_attribute_count_limit | [integer, null] | | | | | | | | | | | | -| link_attribute_count_limit | [integer, null] | | | | | | | | | | | | - -### SpanProcessor - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| batch | BatchSpanProcessor | | | | | | | | | | | | -| simple | SimpleSpanProcessor | | | | | | | | | | | | - -### SumAggregation - -### TextMapPropagator - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| tracecontext | TraceContextPropagator | | | | | | | | | | | | -| baggage | BaggagePropagator | | | | | | | | | | | | -| b3 | B3Propagator | | | | | | | | | | | | -| b3multi | B3MultiPropagator | | | | | | | | | | | | -| jaeger | JaegerPropagator | | | | | | | | | | | | -| ottrace | OpenTracingPropagator | | | | | | | | | | | | - -### TraceContextPropagator - -### TraceIdRatioBasedSampler - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| ratio | [number, null] | | | | | | | | | | | | - -### TracerProvider - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| processors | SpanProcessor[] | | | | | | | | | | | | -| limits | SpanLimits | | | | | | | | | | | | -| sampler | Sampler | | | | | | | | | | | | -| tracer_configurator/development | ExperimentalTracerConfigurator | | | | | | | | | | | | - -### View - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| selector | ViewSelector | | | | | | | | | | | | -| stream | ViewStream | | | | | | | | | | | | - -### ViewSelector - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| instrument_name | [string, null] | | | | | | | | | | | | -| instrument_type | InstrumentType | | | | | | | | | | | | -| unit | [string, null] | | | | | | | | | | | | -| meter_name | [string, null] | | | | | | | | | | | | -| meter_version | [string, null] | | | | | | | | | | | | -| meter_schema_url | [string, null] | | | | | | | | | | | | - -### ViewStream - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| name | [string, null] | | | | | | | | | | | | -| description | [string, null] | | | | | | | | | | | | -| aggregation | Aggregation | | | | | | | | | | | | -| aggregation_cardinality_limit | [integer, null] | | | | | | | | | | | | -| attribute_keys | IncludeExclude | | | | | | | | | | | | - -### ZipkinSpanExporter - -| Property | Type | c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---| -| endpoint | [string, null] | | | | | | | | | | | | -| timeout | [integer, null] | | | | | | | | | | | | - diff --git a/package.json b/package.json index a4fb4d7c..13a9afce 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "scripts": { "generate-descriptions": "node scripts/generate-descriptions.js", - "generate-compliance-matrix": "node scripts/compliance-matrix.js", + "generate-markdown": "node scripts/generate-markdown.js", "generate-meta-schema": "node scripts/generate-meta-schema.js", "validate-meta-schema": "node scripts/validate-meta-schema.js" }, diff --git a/schema.md b/schema.md new file mode 100644 index 00000000..c7756bc1 --- /dev/null +++ b/schema.md @@ -0,0 +1,611 @@ +### Aggregation + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| base2_exponential_bucket_histogram | Base2ExponentialBucketHistogramAggregation | unknown | | | | | | | | | | | | +| default | DefaultAggregation | unknown | | | | | | | | | | | | +| drop | DropAggregation | unknown | | | | | | | | | | | | +| explicit_bucket_histogram | ExplicitBucketHistogramAggregation | Configure aggregation to be explicit_bucket_histogram. | | | | | | | | | | | | +| last_value | LastValueAggregation | unknown | | | | | | | | | | | | +| sum | SumAggregation | unknown | | | | | | | | | | | | + +### AlwaysOffSampler + +No properties + +### AlwaysOnSampler + +No properties + +### AttributeLimits + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| attribute_count_limit | integer | Configure max attribute count.
Value must be non-negative.
If omitted or null, 128 is used.
| | | | | | | | | | | | +| attribute_value_length_limit | integer | Configure max attribute value size.
Value must be non-negative.
If omitted or null, there is no limit.
| | | | | | | | | | | | + +### AttributeNameValue + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| name | string | unknown | | | | | | | | | | | | +| type | AttributeType | unknown | | | | | | | | | | | | +| value | unknown | unknown | | | | | | | | | | | | + +### AttributeType + +No properties + +### B3MultiPropagator + +No properties + +### B3Propagator + +No properties + +### BaggagePropagator + +No properties + +### Base2ExponentialBucketHistogramAggregation + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| max_scale | integer | unknown | | | | | | | | | | | | +| max_size | integer | unknown | | | | | | | | | | | | +| record_min_max | boolean | unknown | | | | | | | | | | | | + +### BatchLogRecordProcessor + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| export_timeout | integer | Configure maximum allowed time (in milliseconds) to export data.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 30000 is used.
| | | | | | | | | | | | +| exporter | LogRecordExporter | Configure exporter. | | | | | | | | | | | | +| max_export_batch_size | integer | Configure maximum batch size. Value must be positive.
If omitted or null, 512 is used.
| | | | | | | | | | | | +| max_queue_size | integer | Configure maximum queue size. Value must be positive.
If omitted or null, 2048 is used.
| | | | | | | | | | | | +| schedule_delay | integer | Configure delay interval (in milliseconds) between two consecutive exports.
Value must be non-negative.
If omitted or null, 1000 is used.
| | | | | | | | | | | | + +### BatchSpanProcessor + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| export_timeout | integer | Configure maximum allowed time (in milliseconds) to export data.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 30000 is used.
| | | | | | | | | | | | +| exporter | SpanExporter | Configure exporter. | | | | | | | | | | | | +| max_export_batch_size | integer | Configure maximum batch size. Value must be positive.
If omitted or null, 512 is used.
| | | | | | | | | | | | +| max_queue_size | integer | Configure maximum queue size. Value must be positive.
If omitted or null, 2048 is used.
| | | | | | | | | | | | +| schedule_delay | integer | Configure delay interval (in milliseconds) between two consecutive exports.
Value must be non-negative.
If omitted or null, 5000 is used.
| | | | | | | | | | | | + +### CardinalityLimits + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| counter | integer | Configure default cardinality limit for counter instruments.
If omitted or null, the value from .default is used.
| | | | | | | | | | | | +| default | integer | Configure default cardinality limit for all instrument types.
Instrument-specific cardinality limits take priority.
If omitted or null, 2000 is used.
| | | | | | | | | | | | +| gauge | integer | Configure default cardinality limit for gauge instruments.
If omitted or null, the value from .default is used.
| | | | | | | | | | | | +| histogram | integer | Configure default cardinality limit for histogram instruments.
If omitted or null, the value from .default is used.
| | | | | | | | | | | | +| observable_counter | integer | Configure default cardinality limit for observable_counter instruments.
If omitted or null, the value from .default is used.
| | | | | | | | | | | | +| observable_gauge | integer | Configure default cardinality limit for observable_gauge instruments.
If omitted or null, the value from .default is used.
| | | | | | | | | | | | +| observable_up_down_counter | integer | Configure default cardinality limit for observable_up_down_counter instruments.
If omitted or null, the value from .default is used.
| | | | | | | | | | | | +| up_down_counter | integer | Configure default cardinality limit for up_down_counter instruments.
If omitted or null, the value from .default is used.
| | | | | | | | | | | | + +### ConsoleExporter + +No properties + +### DefaultAggregation + +No properties + +### DropAggregation + +No properties + +### ExemplarFilter + +No properties + +### ExperimentalGeneralInstrumentation + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| http | ExperimentalHttpInstrumentation | Configure instrumentations following the http semantic conventions.
See http semantic conventions: https://opentelemetry.io/docs/specs/semconv/http/
| | | | | | | | | | | | +| peer | ExperimentalPeerInstrumentation | Configure instrumentations following the peer semantic conventions.
See peer semantic conventions: https://opentelemetry.io/docs/specs/semconv/attributes-registry/peer/
| | | | | | | | | | | | + +### ExperimentalHttpInstrumentation + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| client | object | Configure instrumentations following the http client semantic conventions. | | | | | | | | | | | | +| server | object | Configure instrumentations following the http server semantic conventions. | | | | | | | | | | | | + +### ExperimentalInstrumentation + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| cpp | ExperimentalLanguageSpecificInstrumentation | Configure C++ language-specific instrumentation libraries. | | | | | | | | | | | | +| dotnet | ExperimentalLanguageSpecificInstrumentation | Configure .NET language-specific instrumentation libraries. | | | | | | | | | | | | +| erlang | ExperimentalLanguageSpecificInstrumentation | Configure Erlang language-specific instrumentation libraries. | | | | | | | | | | | | +| general | ExperimentalGeneralInstrumentation | Configure general SemConv options that may apply to multiple languages and instrumentations.
Instrumenation may merge general config options with the language specific configuration at .instrumentation..
| | | | | | | | | | | | +| go | ExperimentalLanguageSpecificInstrumentation | Configure Go language-specific instrumentation libraries. | | | | | | | | | | | | +| java | ExperimentalLanguageSpecificInstrumentation | Configure Java language-specific instrumentation libraries. | | | | | | | | | | | | +| js | ExperimentalLanguageSpecificInstrumentation | Configure JavaScript language-specific instrumentation libraries. | | | | | | | | | | | | +| php | ExperimentalLanguageSpecificInstrumentation | Configure PHP language-specific instrumentation libraries. | | | | | | | | | | | | +| python | ExperimentalLanguageSpecificInstrumentation | Configure Python language-specific instrumentation libraries. | | | | | | | | | | | | +| ruby | ExperimentalLanguageSpecificInstrumentation | Configure Ruby language-specific instrumentation libraries. | | | | | | | | | | | | +| rust | ExperimentalLanguageSpecificInstrumentation | Configure Rust language-specific instrumentation libraries. | | | | | | | | | | | | +| swift | ExperimentalLanguageSpecificInstrumentation | Configure Swift language-specific instrumentation libraries. | | | | | | | | | | | | + +### ExperimentalLanguageSpecificInstrumentation + +No properties + +### ExperimentalLoggerConfig + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| disabled | boolean | Configure if the logger is enabled or not. | | | | | | | | | | | | + +### ExperimentalLoggerConfigurator + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| default_config | ExperimentalLoggerConfig | Configure the default logger config used there is no matching entry in .logger_configurator/development.loggers. | | | | | | | | | | | | +| loggers | ExperimentalLoggerMatcherAndConfig[] | Configure loggers. | | | | | | | | | | | | + +### ExperimentalLoggerMatcherAndConfig + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| config | ExperimentalLoggerConfig | The logger config. | | | | | | | | | | | | +| name | string | Configure logger names to match, evaluated as follows:

* If the logger name exactly matches.
* If the logger name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
| | | | | | | | | | | | + +### ExperimentalMeterConfig + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| disabled | boolean | Configure if the meter is enabled or not. | | | | | | | | | | | | + +### ExperimentalMeterConfigurator + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| default_config | ExperimentalMeterConfig | Configure the default meter config used there is no matching entry in .meter_configurator/development.meters. | | | | | | | | | | | | +| meters | ExperimentalMeterMatcherAndConfig[] | Configure meters. | | | | | | | | | | | | + +### ExperimentalMeterMatcherAndConfig + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| config | ExperimentalMeterConfig | The meter config. | | | | | | | | | | | | +| name | string | Configure meter names to match, evaluated as follows:

* If the meter name exactly matches.
* If the meter name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
| | | | | | | | | | | | + +### ExperimentalOtlpFileExporter + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| output_stream | string | unknown | | | | | | | | | | | | + +### ExperimentalOtlpFileMetricExporter + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| default_histogram_aggregation | ExporterDefaultHistogramAggregation | unknown | | | | | | | | | | | | +| output_stream | string | unknown | | | | | | | | | | | | +| temporality_preference | ExporterTemporalityPreference | unknown | | | | | | | | | | | | + +### ExperimentalPeerInstrumentation + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| service_mapping | object[] | unknown | | | | | | | | | | | | + +### ExperimentalPrometheusMetricExporter + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| host | string | Configure host.
If omitted or null, localhost is used.
| | | | | | | | | | | | +| port | integer | Configure port.
If omitted or null, 9464 is used.
| | | | | | | | | | | | +| with_resource_constant_labels | IncludeExclude | Configure Prometheus Exporter to add resource attributes as metrics attributes. | | | | | | | | | | | | +| without_scope_info | boolean | Configure Prometheus Exporter to produce metrics without a scope info metric.
If omitted or null, false is used.
| | | | | | | | | | | | +| without_type_suffix | boolean | Configure Prometheus Exporter to produce metrics without a type suffix.
If omitted or null, false is used.
| | | | | | | | | | | | +| without_units | boolean | Configure Prometheus Exporter to produce metrics without a unit suffix or UNIT metadata.
If omitted or null, false is used.
| | | | | | | | | | | | + +### ExperimentalResourceDetection + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| attributes | IncludeExclude | Configure attributes provided by resource detectors. | | | | | | | | | | | | +| detectors | ExperimentalResourceDetector[] | Configure resource detectors.
Resource detector names are dependent on the SDK language ecosystem. Please consult documentation for each respective language.
If omitted or null, no resource detectors are enabled.
| | | | | | | | | | | | + +### ExperimentalResourceDetector + +No properties + +### ExperimentalTracerConfig + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| disabled | boolean | Configure if the tracer is enabled or not. | | | | | | | | | | | | + +### ExperimentalTracerConfigurator + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| default_config | ExperimentalTracerConfig | Configure the default tracer config used there is no matching entry in .tracer_configurator/development.tracers. | | | | | | | | | | | | +| tracers | ExperimentalTracerMatcherAndConfig[] | Configure tracers. | | | | | | | | | | | | + +### ExperimentalTracerMatcherAndConfig + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| config | ExperimentalTracerConfig | The tracer config. | | | | | | | | | | | | +| name | string | Configure tracer names to match, evaluated as follows:

* If the tracer name exactly matches.
* If the tracer name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
| | | | | | | | | | | | + +### ExplicitBucketHistogramAggregation + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| boundaries | number[] | Configure bucket boundaries.
If omitted, [0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, 7500, 10000] is used.
| | | | | | | | | | | | +| record_min_max | boolean | Configure record min and max.
If omitted or null, true is used.
| | | | | | | | | | | | + +### ExporterDefaultHistogramAggregation + +No properties + +### ExporterTemporalityPreference + +No properties + +### IncludeExclude + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| excluded | string[] | Configure list of attribute key patterns to exclude from resource detectors. Applies after .resource.detectors.attributes.included (i.e. excluded has higher priority than included).
Attribute keys from resource detectors are evaluated to match as follows:
* If the value of the attribute key exactly matches.
* If the value of the attribute key matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
If omitted, .included attributes are included.
| | | | | | | | | | | | +| included | string[] | Configure list of attribute key patterns to include from resource detectors.
Attribute keys from resource detectors are evaluated to match as follows:
* If the value of the attribute key exactly matches.
* If the value of the attribute key matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
If omitted, all attributes are included.
| | | | | | | | | | | | + +### InstrumentType + +No properties + +### JaegerPropagator + +No properties + +### JaegerRemoteSampler + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| endpoint | string | unknown | | | | | | | | | | | | +| initial_sampler | Sampler | unknown | | | | | | | | | | | | +| interval | integer | unknown | | | | | | | | | | | | + +### LastValueAggregation + +No properties + +### LogRecordExporter + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| console | ConsoleExporter | Configure exporter to be console. | | | | | | | | | | | | +| otlp_file/development | ExperimentalOtlpFileExporter | Configure exporter to be OTLP with file transport.
This type is in development and subject to breaking changes in minor versions.
| | | | | | | | | | | | +| otlp_grpc | OtlpGrpcExporter | Configure exporter to be OTLP with gRPC transport. | | | | | | | | | | | | +| otlp_http | OtlpHttpExporter | Configure exporter to be OTLP with HTTP transport. | | | | | | | | | | | | + +### LogRecordLimits + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| attribute_count_limit | integer | Configure max attribute count. Overrides .attribute_limits.attribute_count_limit.
Value must be non-negative.
If omitted or null, 128 is used.
| | | | | | | | | | | | +| attribute_value_length_limit | integer | Configure max attribute value size. Overrides .attribute_limits.attribute_value_length_limit.
Value must be non-negative.
If omitted or null, there is no limit.
| | | | | | | | | | | | + +### LogRecordProcessor + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| batch | BatchLogRecordProcessor | Configure a batch log record processor. | | | | | | | | | | | | +| simple | SimpleLogRecordProcessor | Configure a simple log record processor. | | | | | | | | | | | | + +### LoggerProvider + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| limits | LogRecordLimits | Configure log record limits. See also attribute_limits. | | | | | | | | | | | | +| logger_configurator/development | ExperimentalLoggerConfigurator | Configure loggers.
This type is in development and subject to breaking changes in minor versions.
| | | | | | | | | | | | +| processors | LogRecordProcessor[] | Configure log record processors. | | | | | | | | | | | | + +### MeterProvider + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| exemplar_filter | ExemplarFilter | Configure the exemplar filter.
Values include: trace_based, always_on, always_off. For behavior of values see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#metrics-sdk-configuration.
If omitted or null, trace_based is used.
| | | | | | | | | | | | +| meter_configurator/development | ExperimentalMeterConfigurator | Configure meters.
This type is in development and subject to breaking changes in minor versions.
| | | | | | | | | | | | +| readers | MetricReader[] | Configure metric readers. | | | | | | | | | | | | +| views | View[] | Configure views.
Each view has a selector which determines the instrument(s) it applies to, and a configuration for the resulting stream(s).
| | | | | | | | | | | | + +### MetricProducer + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| opencensus | OpenCensusMetricProducer | Configure metric producer to be opencensus. | | | | | | | | | | | | + +### MetricReader + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| periodic | PeriodicMetricReader | Configure a periodic metric reader. | | | | | | | | | | | | +| pull | PullMetricReader | Configure a pull based metric reader. | | | | | | | | | | | | + +### NameStringValuePair + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| name | string | unknown | | | | | | | | | | | | +| value | string | unknown | | | | | | | | | | | | + +### OpenCensusMetricProducer + +No properties + +### OpenTelemetryConfiguration + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| attribute_limits | AttributeLimits | Configure general attribute limits. See also tracer_provider.limits, logger_provider.limits. | | | | | | | | | | | | +| disabled | boolean | Configure if the SDK is disabled or not.
If omitted or null, false is used.
| | | | | | | | | | | | +| file_format | string | The file format version.
The yaml format is documented at
https://github.com/open-telemetry/opentelemetry-configuration/tree/main/schema
| | | | | | | | | | | | +| instrumentation/development | ExperimentalInstrumentation | Configure instrumentation.
This type is in development and subject to breaking changes in minor versions.
| | | | | | | | | | | | +| log_level | string | Configure the log level of the internal logger used by the SDK.
If omitted, info is used.
| | | | | | | | | | | | +| logger_provider | LoggerProvider | Configure logger provider.
If omitted, a noop logger provider is used.
| | | | | | | | | | | | +| meter_provider | MeterProvider | Configure meter provider.
If omitted, a noop meter provider is used.
| | | | | | | | | | | | +| propagator | Propagator | Configure text map context propagators.
If omitted, a noop propagator is used.
| | | | | | | | | | | | +| resource | Resource | Configure resource for all signals.
If omitted, the default resource is used.
| | | | | | | | | | | | +| tracer_provider | TracerProvider | Configure tracer provider.
If omitted, a noop tracer provider is used.
| | | | | | | | | | | | + +### OpenTracingPropagator + +No properties + +### OtlpGrpcExporter + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| certificate_file | string | unknown | | | | | | | | | | | | +| client_certificate_file | string | unknown | | | | | | | | | | | | +| client_key_file | string | unknown | | | | | | | | | | | | +| compression | string | unknown | | | | | | | | | | | | +| endpoint | string | Configure endpoint.
If omitted or null, http://localhost:4317 is used.
| | | | | | | | | | | | +| headers | NameStringValuePair[] | unknown | | | | | | | | | | | | +| headers_list | string | unknown | | | | | | | | | | | | +| insecure | boolean | Configure client transport security for the exporter's connection.
Only applicable when .endpoint is provided without http or https scheme. Implementations may choose to ignore .insecure.
If omitted or null, false is used.
| | | | | | | | | | | | +| timeout | integer | unknown | | | | | | | | | | | | + +### OtlpGrpcMetricExporter + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| certificate_file | string | unknown | | | | | | | | | | | | +| client_certificate_file | string | unknown | | | | | | | | | | | | +| client_key_file | string | unknown | | | | | | | | | | | | +| compression | string | unknown | | | | | | | | | | | | +| default_histogram_aggregation | ExporterDefaultHistogramAggregation | unknown | | | | | | | | | | | | +| endpoint | string | unknown | | | | | | | | | | | | +| headers | NameStringValuePair[] | unknown | | | | | | | | | | | | +| headers_list | string | unknown | | | | | | | | | | | | +| insecure | boolean | unknown | | | | | | | | | | | | +| temporality_preference | ExporterTemporalityPreference | unknown | | | | | | | | | | | | +| timeout | integer | unknown | | | | | | | | | | | | + +### OtlpHttpEncoding + +No properties + +### OtlpHttpExporter + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| certificate_file | string | unknown | | | | | | | | | | | | +| client_certificate_file | string | unknown | | | | | | | | | | | | +| client_key_file | string | unknown | | | | | | | | | | | | +| compression | string | unknown | | | | | | | | | | | | +| encoding | OtlpHttpEncoding | Configure the encoding used for messages.
Values include: protobuf, json. Implementations may not support json.
If omitted or null, protobuf is used.
| | | | | | | | | | | | +| endpoint | string | unknown | | | | | | | | | | | | +| headers | NameStringValuePair[] | unknown | | | | | | | | | | | | +| headers_list | string | unknown | | | | | | | | | | | | +| timeout | integer | unknown | | | | | | | | | | | | + +### OtlpHttpMetricExporter + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| certificate_file | string | unknown | | | | | | | | | | | | +| client_certificate_file | string | unknown | | | | | | | | | | | | +| client_key_file | string | unknown | | | | | | | | | | | | +| compression | string | unknown | | | | | | | | | | | | +| default_histogram_aggregation | ExporterDefaultHistogramAggregation | unknown | | | | | | | | | | | | +| encoding | OtlpHttpEncoding | unknown | | | | | | | | | | | | +| endpoint | string | Configure endpoint, including the metric specific path.
If omitted or null, http://localhost:4318/v1/metrics is used.
| | | | | | | | | | | | +| headers | NameStringValuePair[] | unknown | | | | | | | | | | | | +| headers_list | string | unknown | | | | | | | | | | | | +| temporality_preference | ExporterTemporalityPreference | unknown | | | | | | | | | | | | +| timeout | integer | unknown | | | | | | | | | | | | + +### ParentBasedSampler + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| local_parent_not_sampled | Sampler | unknown | | | | | | | | | | | | +| local_parent_sampled | Sampler | unknown | | | | | | | | | | | | +| remote_parent_not_sampled | Sampler | unknown | | | | | | | | | | | | +| remote_parent_sampled | Sampler | unknown | | | | | | | | | | | | +| root | Sampler | unknown | | | | | | | | | | | | + +### PeriodicMetricReader + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| cardinality_limits | CardinalityLimits | Configure cardinality limits. | | | | | | | | | | | | +| exporter | PushMetricExporter | Configure exporter. | | | | | | | | | | | | +| interval | integer | Configure delay interval (in milliseconds) between start of two consecutive exports.
Value must be non-negative.
If omitted or null, 60000 is used.
| | | | | | | | | | | | +| producers | MetricProducer[] | Configure metric producers. | | | | | | | | | | | | +| timeout | integer | Configure maximum allowed time (in milliseconds) to export data.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 30000 is used.
| | | | | | | | | | | | + +### Propagator + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| composite | TextMapPropagator[] | Configure the propagators in the composite text map propagator. Entries from .composite_list are appended to the list here with duplicates filtered out.
Built-in propagator keys include: tracecontext, baggage, b3, b3multi, jaeger, ottrace. Known third party keys include: xray.
If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used.
| | | | | | | | | | | | +| composite_list | string | Configure the propagators in the composite text map propagator. Entries are appended to .composite with duplicates filtered out.
The value is a comma separated list of propagator identifiers matching the format of OTEL_PROPAGATORS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details.
Built-in propagator identifiers include: tracecontext, baggage, b3, b3multi, jaeger, ottrace. Known third party identifiers include: xray.
If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used.
| | | | | | | | | | | | + +### PullMetricExporter + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| prometheus/development | ExperimentalPrometheusMetricExporter | unknown | | | | | | | | | | | | + +### PullMetricReader + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| cardinality_limits | CardinalityLimits | Configure cardinality limits. | | | | | | | | | | | | +| exporter | PullMetricExporter | Configure exporter. | | | | | | | | | | | | +| producers | MetricProducer[] | Configure metric producers. | | | | | | | | | | | | + +### PushMetricExporter + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| console | ConsoleExporter | unknown | | | | | | | | | | | | +| otlp_file/development | ExperimentalOtlpFileMetricExporter | unknown | | | | | | | | | | | | +| otlp_grpc | OtlpGrpcMetricExporter | unknown | | | | | | | | | | | | +| otlp_http | OtlpHttpMetricExporter | unknown | | | | | | | | | | | | + +### Resource + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| attributes | AttributeNameValue[] | Configure resource attributes. Entries have higher priority than entries from .resource.attributes_list.
Entries must contain .name and .value, and may optionally include .type. If an entry's .type omitted or null, string is used.
The .value's type must match the .type. Values for .type include: string, bool, int, double, string_array, bool_array, int_array, double_array.
| | | | | | | | | | | | +| attributes_list | string | Configure resource attributes. Entries have lower priority than entries from .resource.attributes.
The value is a list of comma separated key-value pairs matching the format of OTEL_RESOURCE_ATTRIBUTES. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details.
If omitted or null, no resource attributes are added.
| | | | | | | | | | | | +| detection/development | ExperimentalResourceDetection | Configure resource detection.
This type is in development and subject to breaking changes in minor versions.
If omitted or null, resource detection is disabled.
| | | | | | | | | | | | +| schema_url | string | Configure resource schema URL.
If omitted or null, no schema URL is used.
| | | | | | | | | | | | + +### Sampler + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| always_off | AlwaysOffSampler | Configure sampler to be always_off. | | | | | | | | | | | | +| always_on | AlwaysOnSampler | Configure sampler to be always_on. | | | | | | | | | | | | +| jaeger_remote | JaegerRemoteSampler | unknown | | | | | | | | | | | | +| parent_based | ParentBasedSampler | Configure sampler to be parent_based. | | | | | | | | | | | | +| trace_id_ratio_based | TraceIdRatioBasedSampler | Configure sampler to be trace_id_ratio_based. | | | | | | | | | | | | + +### SimpleLogRecordProcessor + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| exporter | LogRecordExporter | Configure exporter. | | | | | | | | | | | | + +### SimpleSpanProcessor + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| exporter | SpanExporter | Configure exporter. | | | | | | | | | | | | + +### SpanExporter + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| console | ConsoleExporter | Configure exporter to be console. | | | | | | | | | | | | +| otlp_file/development | ExperimentalOtlpFileExporter | Configure exporter to be OTLP with file transport.
This type is in development and subject to breaking changes in minor versions.
| | | | | | | | | | | | +| otlp_grpc | OtlpGrpcExporter | Configure exporter to be OTLP with gRPC transport. | | | | | | | | | | | | +| otlp_http | OtlpHttpExporter | Configure exporter to be OTLP with HTTP transport. | | | | | | | | | | | | +| zipkin | ZipkinSpanExporter | Configure exporter to be zipkin. | | | | | | | | | | | | + +### SpanLimits + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| attribute_count_limit | integer | Configure max attribute count. Overrides .attribute_limits.attribute_count_limit.
Value must be non-negative.
If omitted or null, 128 is used.
| | | | | | | | | | | | +| attribute_value_length_limit | integer | Configure max attribute value size. Overrides .attribute_limits.attribute_value_length_limit.
Value must be non-negative.
If omitted or null, there is no limit.
| | | | | | | | | | | | +| event_attribute_count_limit | integer | Configure max attributes per span event.
Value must be non-negative.
If omitted or null, 128 is used.
| | | | | | | | | | | | +| event_count_limit | integer | Configure max span event count.
Value must be non-negative.
If omitted or null, 128 is used.
| | | | | | | | | | | | +| link_attribute_count_limit | integer | Configure max attributes per span link.
Value must be non-negative.
If omitted or null, 128 is used.
| | | | | | | | | | | | +| link_count_limit | integer | Configure max span link count.
Value must be non-negative.
If omitted or null, 128 is used.
| | | | | | | | | | | | + +### SpanProcessor + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| batch | BatchSpanProcessor | Configure a batch span processor. | | | | | | | | | | | | +| simple | SimpleSpanProcessor | Configure a simple span processor. | | | | | | | | | | | | + +### SumAggregation + +No properties + +### TextMapPropagator + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| b3 | B3Propagator | Include the zipkin b3 propagator. | | | | | | | | | | | | +| b3multi | B3MultiPropagator | Include the zipkin b3 multi propagator. | | | | | | | | | | | | +| baggage | BaggagePropagator | Include the w3c baggage propagator. | | | | | | | | | | | | +| jaeger | JaegerPropagator | Include the jaeger propagator. | | | | | | | | | | | | +| ottrace | OpenTracingPropagator | Include the opentracing propagator. | | | | | | | | | | | | +| tracecontext | TraceContextPropagator | Include the w3c trace context propagator. | | | | | | | | | | | | + +### TraceContextPropagator + +No properties + +### TraceIdRatioBasedSampler + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| ratio | number | unknown | | | | | | | | | | | | + +### TracerProvider + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| limits | SpanLimits | Configure span limits. See also attribute_limits. | | | | | | | | | | | | +| processors | SpanProcessor[] | Configure span processors. | | | | | | | | | | | | +| sampler | Sampler | Configure the sampler.
If omitted, parent based sampler with a root of always_on is used.
| | | | | | | | | | | | +| tracer_configurator/development | ExperimentalTracerConfigurator | Configure tracers.
This type is in development and subject to breaking changes in minor versions.
| | | | | | | | | | | | + +### View + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| selector | ViewSelector | Configure view selector.
Selection criteria is additive as described in https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#instrument-selection-criteria.
| | | | | | | | | | | | +| stream | ViewStream | Configure view stream. | | | | | | | | | | | | + +### ViewSelector + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| instrument_name | string | Configure instrument name selection criteria.
If omitted or null, all instrument names match.
| | | | | | | | | | | | +| instrument_type | InstrumentType | Configure instrument type selection criteria.
Values include: counter, gauge, histogram, observable_counter, observable_gauge, observable_up_down_counter, up_down_counter.
If omitted or null, all instrument types match.
| | | | | | | | | | | | +| meter_name | string | Configure meter name selection criteria.
If omitted or null, all meter names match.
| | | | | | | | | | | | +| meter_schema_url | string | Configure meter schema url selection criteria.
If omitted or null, all meter schema URLs match.
| | | | | | | | | | | | +| meter_version | string | Configure meter version selection criteria.
If omitted or null, all meter versions match.
| | | | | | | | | | | | +| unit | string | Configure the instrument unit selection criteria.
If omitted or null, all instrument units match.
| | | | | | | | | | | | + +### ViewStream + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| aggregation | Aggregation | Configure aggregation of the resulting stream(s).
Values include: default, drop, explicit_bucket_histogram, base2_exponential_bucket_histogram, last_value, sum. For behavior of values see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#aggregation.
If omitted, default is used.
| | | | | | | | | | | | +| aggregation_cardinality_limit | integer | Configure the aggregation cardinality limit.
If omitted or null, the metric reader's default cardinality limit is used.
| | | | | | | | | | | | +| attribute_keys | IncludeExclude | Configure attribute keys retained in the resulting stream(s).
| | | | | | | | | | | | +| description | string | Configure metric description of the resulting stream(s).
If omitted or null, the instrument's origin description is used.
| | | | | | | | | | | | +| name | string | Configure metric name of the resulting stream(s).
If omitted or null, the instrument's original name is used.
| | | | | | | | | | | | + +### ZipkinSpanExporter + +| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| endpoint | string | Configure endpoint.
If omitted or null, http://localhost:9411/api/v2/spans is used.
| | | | | | | | | | | | +| timeout | integer | Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates indefinite.
If omitted or null, 10000 is used.
| | | | | | | | | | | | + diff --git a/scripts/compliance-matrix.js b/scripts/compliance-matrix.js deleted file mode 100644 index 3a60595f..00000000 --- a/scripts/compliance-matrix.js +++ /dev/null @@ -1,180 +0,0 @@ -const fs = require("node:fs"); -const traverse = require("@json-schema-tools/traverse").default; -const yaml = require('yaml'); - -/* - * Build up a catalog of schema types - */ -const schemasByName = {}; -const topLevelSchemas = {}; - -const typeDescriptions = yaml.parse(fs.readFileSync(__dirname + "/../schema/type_descriptions.yaml", "utf-8")); - -function findTypeDescription(type) { - return typeDescriptions.find(typeDescription => { - return typeDescription.type === type; - }); -} - - -// Iterate through schema files, adding top-level types and $defs -const schemaDirPath = __dirname + "/../schema/"; -fs.readdirSync(schemaDirPath) - .filter(file => file.endsWith(".json")) - .forEach(file => { - const schema = require(`${schemaDirPath}${file}`); - topLevelSchemas[file] = schema; - - if (file === 'opentelemetry_configuration.json') { - schemasByName['OpenTelemetryConfiguration'] = { name: 'OpentelemetryConfiguration', file, path: '.', schema }; - } - - traverse(schema, (schema) => { - const defs = schema['$defs']; - if (defs) { - Object.entries(defs).forEach(([name, schema]) => { - const path = `#/$defs/${name}`; - if (name in schemasByName) { - throw new Error(`${name} already exists in schemasByName with definition: ` + schemasByName[name]); - } - schemasByName[name] = { name, file, path, schema }; - }); - } - }); - }); - -// Resolve refs to top-level types -Object.entries(schemasByName).forEach(([key, value]) => { - const ref = value.schema['$ref']; - if (ref) { - const topLevelSchema = topLevelSchemas[ref]; - if (!topLevelSchema) { - throw new Error("Could not resolve $ref:" + ref); - } - schemasByName[key] = { ...value, schema: topLevelSchema }; - } -}); - -// Uncomment to view contents of catalog -// console.log(schemasByName); - -/** - * Iterate through types and print markdown representation. - */ -const languages = ['c++', 'c#', 'erlang', 'go', 'java', 'js', 'php', 'python', 'ruby', 'rust', 'swift'] -const output = []; -const types = Object.keys(schemasByName); -types.sort(); - -const metaSchema = {}; - -types.forEach(type => { - const value = schemasByName[type]; - let typeDescription = findTypeDescription(type); - if (typeDescription === undefined) { - typeDescription = { path_patterns: [], property_descriptions: {}}; - } - - const typeProperties = {}; - const typeDef = { properties: typeProperties, paths: typeDescription.path_patterns, definitionSource: `${value.file}${value.path}` }; - metaSchema[type] = typeDef; - - output.push("### " + type + " \n\n") - const properties = value.schema.properties; - if (!properties) { - return; - } - - output.push("| Property | Type | "); - languages.forEach(language => output.push(language + " |")); - output.push("\n") - - output.push("|---|---|") - languages.forEach(language => output.push("---|")); - output.push("\n") - - Object.entries(properties).forEach(([propertyKey, propertyValue]) => { - let description = typeDescription.property_descriptions[propertyKey]; - if (description === undefined) { - description = "unknown"; - } - - const propertyDef = { - description, - implementationStatus: {} - }; - typeProperties[propertyKey] = propertyDef; - - output.push("| " + propertyKey + " | "); - output.push(resolveType(propertyValue) + " | "); - languages.forEach(language => output.push(" |")); - output.push("\n") - }); - - output.push("\n") -}) - -function findMatch(ref) { - return Object.values(schemasByName) - .find(value => { - if (value.path === ref) { - return true; - } - return `${value.file}${value.path}` === ref; - }); -} - -function resolveTypeRaw(schema) { - const ref = schema['$ref']; - if (ref) { - const match = findMatch(ref); - if (!match) { - throw new Error("Could not resolve $ref: " + ref); - } - return match.name; - } - const type = schema.type; - if (type === 'array') { - const items = schema.items; - const itemsType = resolveTypeRaw(items); - return itemsType + "[]"; - } - if (typeof type == 'string') { - return type; - } - if (type === undefined) { - return "unknown"; - } - const filtered = type.filter(val => val !== 'null'); - if (filtered.length !== 1) { - throw new Error("expected type to have size 1 but was: " + type); - } - return filtered[0]; -} - -function resolveType(schema) { - const ref = schema['$ref']; - if (ref) { - const match = findMatch(ref); - if (!match) { - throw new Error("Could not resolve $ref: " + ref); - } - return "" + match.name + ""; - } - const type = schema.type; - if (type === 'array') { - const items = schema.items; - const itemsType = resolveType(items); - return itemsType + "[]"; - } - if (typeof type == 'string') { - return type; - } - if (type === undefined) { - return "unknown"; - } - return "[" + type.join(", ") + "]"; -} - -fs.writeFileSync(__dirname + "/../compliance.md", output.join("")); -fs.writeFileSync(__dirname + "/../meta_schema.yaml", yaml.stringify(metaSchema, { sortMapEntries: true, lineWidth: 0 })); diff --git a/scripts/generate-markdown.js b/scripts/generate-markdown.js new file mode 100644 index 00000000..1970075a --- /dev/null +++ b/scripts/generate-markdown.js @@ -0,0 +1,43 @@ +const fs = require("node:fs"); +const traverse = require("@json-schema-tools/traverse").default; +const yaml = require('yaml'); +const schema = require('./schema'); + +const resolvePropertyType = schema.resolvePropertyType; + +const metaSchema = yaml.parse(fs.readFileSync(__dirname + "/../meta_schema.yaml", "utf-8")); + +const output = []; +const languages = ['c++', 'c#', 'erlang', 'go', 'java', 'js', 'php', 'python', 'ruby', 'rust', 'swift'] + +Object.entries(metaSchema).forEach(([typeName, typeMeta]) => { + output.push("### " + typeName + " \n\n"); + + // TODO: print raw JSON schema + // TODO: link to definition in source code + + if (Object.keys(typeMeta.properties).length === 0) { + output.push("No properties\n\n"); + return; + } + + output.push("| Property | Type | Description |"); + languages.forEach(language => output.push(language + " |")); + output.push("\n"); + + output.push("|---|---|---|"); + languages.forEach(language => output.push("---|")); + output.push("\n"); + + Object.entries(typeMeta.properties).forEach(([propertyName, property]) => { + const propertyType = resolvePropertyType(typeName, propertyName, type => `${type}`); + output.push("| " + propertyName + " | "); + output.push(propertyType + " | "); + output.push(property.description.split("\n").join("
") + " | "); + languages.forEach(language => output.push(" |")); + output.push("\n"); + }); + output.push("\n"); +}); + +fs.writeFileSync(__dirname + "/../schema.md", output.join("")); \ No newline at end of file diff --git a/scripts/generate-meta-schema.js b/scripts/generate-meta-schema.js index 3a60595f..46ca3bbb 100644 --- a/scripts/generate-meta-schema.js +++ b/scripts/generate-meta-schema.js @@ -1,12 +1,7 @@ const fs = require("node:fs"); const traverse = require("@json-schema-tools/traverse").default; const yaml = require('yaml'); - -/* - * Build up a catalog of schema types - */ -const schemasByName = {}; -const topLevelSchemas = {}; +const schemasByName = require('./schema').schemasByName; const typeDescriptions = yaml.parse(fs.readFileSync(__dirname + "/../schema/type_descriptions.yaml", "utf-8")); @@ -16,60 +11,9 @@ function findTypeDescription(type) { }); } - -// Iterate through schema files, adding top-level types and $defs -const schemaDirPath = __dirname + "/../schema/"; -fs.readdirSync(schemaDirPath) - .filter(file => file.endsWith(".json")) - .forEach(file => { - const schema = require(`${schemaDirPath}${file}`); - topLevelSchemas[file] = schema; - - if (file === 'opentelemetry_configuration.json') { - schemasByName['OpenTelemetryConfiguration'] = { name: 'OpentelemetryConfiguration', file, path: '.', schema }; - } - - traverse(schema, (schema) => { - const defs = schema['$defs']; - if (defs) { - Object.entries(defs).forEach(([name, schema]) => { - const path = `#/$defs/${name}`; - if (name in schemasByName) { - throw new Error(`${name} already exists in schemasByName with definition: ` + schemasByName[name]); - } - schemasByName[name] = { name, file, path, schema }; - }); - } - }); - }); - -// Resolve refs to top-level types -Object.entries(schemasByName).forEach(([key, value]) => { - const ref = value.schema['$ref']; - if (ref) { - const topLevelSchema = topLevelSchemas[ref]; - if (!topLevelSchema) { - throw new Error("Could not resolve $ref:" + ref); - } - schemasByName[key] = { ...value, schema: topLevelSchema }; - } -}); - -// Uncomment to view contents of catalog -// console.log(schemasByName); - -/** - * Iterate through types and print markdown representation. - */ -const languages = ['c++', 'c#', 'erlang', 'go', 'java', 'js', 'php', 'python', 'ruby', 'rust', 'swift'] -const output = []; -const types = Object.keys(schemasByName); -types.sort(); - const metaSchema = {}; -types.forEach(type => { - const value = schemasByName[type]; +Object.entries(schemasByName).forEach(([type, value]) => { let typeDescription = findTypeDescription(type); if (typeDescription === undefined) { typeDescription = { path_patterns: [], property_descriptions: {}}; @@ -79,20 +23,11 @@ types.forEach(type => { const typeDef = { properties: typeProperties, paths: typeDescription.path_patterns, definitionSource: `${value.file}${value.path}` }; metaSchema[type] = typeDef; - output.push("### " + type + " \n\n") const properties = value.schema.properties; if (!properties) { return; } - output.push("| Property | Type | "); - languages.forEach(language => output.push(language + " |")); - output.push("\n") - - output.push("|---|---|") - languages.forEach(language => output.push("---|")); - output.push("\n") - Object.entries(properties).forEach(([propertyKey, propertyValue]) => { let description = typeDescription.property_descriptions[propertyKey]; if (description === undefined) { @@ -104,77 +39,7 @@ types.forEach(type => { implementationStatus: {} }; typeProperties[propertyKey] = propertyDef; - - output.push("| " + propertyKey + " | "); - output.push(resolveType(propertyValue) + " | "); - languages.forEach(language => output.push(" |")); - output.push("\n") }); - - output.push("\n") }) -function findMatch(ref) { - return Object.values(schemasByName) - .find(value => { - if (value.path === ref) { - return true; - } - return `${value.file}${value.path}` === ref; - }); -} - -function resolveTypeRaw(schema) { - const ref = schema['$ref']; - if (ref) { - const match = findMatch(ref); - if (!match) { - throw new Error("Could not resolve $ref: " + ref); - } - return match.name; - } - const type = schema.type; - if (type === 'array') { - const items = schema.items; - const itemsType = resolveTypeRaw(items); - return itemsType + "[]"; - } - if (typeof type == 'string') { - return type; - } - if (type === undefined) { - return "unknown"; - } - const filtered = type.filter(val => val !== 'null'); - if (filtered.length !== 1) { - throw new Error("expected type to have size 1 but was: " + type); - } - return filtered[0]; -} - -function resolveType(schema) { - const ref = schema['$ref']; - if (ref) { - const match = findMatch(ref); - if (!match) { - throw new Error("Could not resolve $ref: " + ref); - } - return "" + match.name + ""; - } - const type = schema.type; - if (type === 'array') { - const items = schema.items; - const itemsType = resolveType(items); - return itemsType + "[]"; - } - if (typeof type == 'string') { - return type; - } - if (type === undefined) { - return "unknown"; - } - return "[" + type.join(", ") + "]"; -} - -fs.writeFileSync(__dirname + "/../compliance.md", output.join("")); fs.writeFileSync(__dirname + "/../meta_schema.yaml", yaml.stringify(metaSchema, { sortMapEntries: true, lineWidth: 0 })); diff --git a/scripts/schema.js b/scripts/schema.js new file mode 100644 index 00000000..31d825a7 --- /dev/null +++ b/scripts/schema.js @@ -0,0 +1,96 @@ +const fs = require("node:fs"); +const traverse = require("@json-schema-tools/traverse").default; +const yaml = require('yaml'); + +/* + * Build up a catalog of schema types + */ +const schemasByName = {}; +const topLevelSchemas = {}; + +// Iterate through schema files, adding top-level types and $defs +const schemaDirPath = __dirname + "/../schema/"; +fs.readdirSync(schemaDirPath) + .filter(file => file.endsWith(".json")) + .forEach(file => { + const schema = require(`${schemaDirPath}${file}`); + topLevelSchemas[file] = schema; + + if (file === 'opentelemetry_configuration.json') { + schemasByName['OpenTelemetryConfiguration'] = { name: 'OpentelemetryConfiguration', file, path: '.', schema }; + } + + traverse(schema, (schema) => { + const defs = schema['$defs']; + if (defs) { + Object.entries(defs).forEach(([name, schema]) => { + const path = `#/$defs/${name}`; + if (name in schemasByName) { + throw new Error(`${name} already exists in schemasByName with definition: ` + schemasByName[name]); + } + schemasByName[name] = { name, file, path, schema }; + }); + } + }); + }); + +// Resolve refs to top-level types +Object.entries(schemasByName).forEach(([key, value]) => { + const ref = value.schema['$ref']; + if (ref) { + const topLevelSchema = topLevelSchemas[ref]; + if (!topLevelSchema) { + throw new Error("Could not resolve $ref:" + ref); + } + schemasByName[key] = { ...value, schema: topLevelSchema }; + } +}); + +function findMatch(ref) { + return Object.values(schemasByName) + .find(value => { + if (value.path === ref) { + return true; + } + return `${value.file}${value.path}` === ref; + }); +} + +function resolveType(schema, formatter) { + const ref = schema['$ref']; + if (ref) { + const match = findMatch(ref); + if (!match) { + throw new Error("Could not resolve $ref: " + ref); + } + return formatter(match.name); + } + const type = schema.type; + if (type === 'array') { + const items = schema.items; + const itemsType = resolveType(items, formatter); + return itemsType + "[]"; + } + if (typeof type == 'string') { + return type; + } + if (type === undefined) { + return "unknown"; + } + // primitive + const filtered = type.filter(val => val !== 'null'); + if (filtered.length !== 1) { + throw new Error("expected type to have size 1 but was: " + type); + } + return filtered[0]; +} + +function resolvePropertyType(typeName, propertyName, formatter) { + const schemaForType = schemasByName[typeName]; + const property = schemaForType.schema.properties[propertyName]; + + return resolveType(property, formatter); +} + +exports.schemasByName = schemasByName; +exports.resolvePropertyType = resolvePropertyType; From 2bad00b12944e218d881a8113272380722fcaf38 Mon Sep 17 00:00:00 2001 From: Jack Berg <34418638+jack-berg@users.noreply.github.com> Date: Tue, 30 Sep 2025 12:15:49 -0500 Subject: [PATCH 05/23] wip --- package.json | 5 +- schema/meta_schema.yaml | 610 ++++++++++++++++++++++++++++++ scripts/schema.js | 2 +- scripts1/fix-meta-schema.js | 120 ++++++ scripts1/generate-descriptions.js | 0 scripts1/schema.js | 117 ++++++ 6 files changed, 852 insertions(+), 2 deletions(-) create mode 100644 schema/meta_schema.yaml create mode 100644 scripts1/fix-meta-schema.js create mode 100644 scripts1/generate-descriptions.js create mode 100644 scripts1/schema.js diff --git a/package.json b/package.json index 13a9afce..cf9615fb 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,12 @@ { + "type": "module", "scripts": { "generate-descriptions": "node scripts/generate-descriptions.js", "generate-markdown": "node scripts/generate-markdown.js", "generate-meta-schema": "node scripts/generate-meta-schema.js", - "validate-meta-schema": "node scripts/validate-meta-schema.js" + "validate-meta-schema": "node scripts/validate-meta-schema.js", + "fix-meta-schema": "node scripts1/fix-meta-schema.js", + "generate-meta-schema-new": "node scripts1/generate-meta-schema.js" }, "devDependencies": { "@json-schema-tools/traverse": "^1.10.4", diff --git a/schema/meta_schema.yaml b/schema/meta_schema.yaml new file mode 100644 index 00000000..7619dabd --- /dev/null +++ b/schema/meta_schema.yaml @@ -0,0 +1,610 @@ +- type: Aggregation + properties: + - property: default + description: TODO + - property: drop + description: TODO + - property: explicit_bucket_histogram + description: TODO + - property: base2_exponential_bucket_histogram + description: TODO + - property: last_value + description: TODO + - property: sum + description: TODO +- type: AlwaysOffSampler + properties: [] +- type: AlwaysOnSampler + properties: [] +- type: AttributeLimits + properties: + - property: attribute_value_length_limit + description: TODO + - property: attribute_count_limit + description: TODO +- type: AttributeNameValue + properties: + - property: name + description: TODO + - property: value + description: TODO + - property: type + description: TODO +- type: AttributeType + properties: [] +- type: B3MultiPropagator + properties: [] +- type: B3Propagator + properties: [] +- type: BaggagePropagator + properties: [] +- type: Base2ExponentialBucketHistogramAggregation + properties: + - property: max_scale + description: TODO + - property: max_size + description: TODO + - property: record_min_max + description: TODO +- type: BatchLogRecordProcessor + properties: + - property: schedule_delay + description: TODO + - property: export_timeout + description: TODO + - property: max_queue_size + description: TODO + - property: max_export_batch_size + description: TODO + - property: exporter + description: TODO +- type: BatchSpanProcessor + properties: + - property: schedule_delay + description: TODO + - property: export_timeout + description: TODO + - property: max_queue_size + description: TODO + - property: max_export_batch_size + description: TODO + - property: exporter + description: TODO +- type: CardinalityLimits + properties: + - property: default + description: TODO + - property: counter + description: TODO + - property: gauge + description: TODO + - property: histogram + description: TODO + - property: observable_counter + description: TODO + - property: observable_gauge + description: TODO + - property: observable_up_down_counter + description: TODO + - property: up_down_counter + description: TODO +- type: ConsoleExporter + properties: [] +- type: DefaultAggregation + properties: [] +- type: DropAggregation + properties: [] +- type: ExemplarFilter + properties: [] +- type: ExperimentalGeneralInstrumentation + properties: + - property: peer + description: TODO + - property: http + description: TODO +- type: ExperimentalHttpInstrumentation + properties: + - property: client + description: TODO + - property: server + description: TODO +- type: ExperimentalInstrumentation + properties: + - property: general + description: TODO + - property: cpp + description: TODO + - property: dotnet + description: TODO + - property: erlang + description: TODO + - property: go + description: TODO + - property: java + description: TODO + - property: js + description: TODO + - property: php + description: TODO + - property: python + description: TODO + - property: ruby + description: TODO + - property: rust + description: TODO + - property: swift + description: TODO +- type: ExperimentalLanguageSpecificInstrumentation + properties: [] +- type: ExperimentalLoggerConfig + properties: + - property: disabled + description: TODO +- type: ExperimentalLoggerConfigurator + properties: + - property: default_config + description: TODO + - property: loggers + description: TODO +- type: ExperimentalLoggerMatcherAndConfig + properties: + - property: name + description: TODO + - property: config + description: TODO +- type: ExperimentalMeterConfig + properties: + - property: disabled + description: TODO +- type: ExperimentalMeterConfigurator + properties: + - property: default_config + description: TODO + - property: meters + description: TODO +- type: ExperimentalMeterMatcherAndConfig + properties: + - property: name + description: TODO + - property: config + description: TODO +- type: ExperimentalOtlpFileExporter + properties: + - property: output_stream + description: TODO +- type: ExperimentalOtlpFileMetricExporter + properties: + - property: output_stream + description: TODO + - property: temporality_preference + description: TODO + - property: default_histogram_aggregation + description: TODO +- type: ExperimentalPeerInstrumentation + properties: + - property: service_mapping + description: TODO +- type: ExperimentalPrometheusMetricExporter + properties: + - property: host + description: TODO + - property: port + description: TODO + - property: without_units + description: TODO + - property: without_type_suffix + description: TODO + - property: without_scope_info + description: TODO + - property: with_resource_constant_labels + description: TODO +- type: ExperimentalResourceDetection + properties: + - property: attributes + description: TODO + - property: detectors + description: TODO +- type: ExperimentalResourceDetector + properties: [] +- type: ExperimentalTracerConfig + properties: + - property: disabled + description: TODO +- type: ExperimentalTracerConfigurator + properties: + - property: default_config + description: TODO + - property: tracers + description: TODO +- type: ExperimentalTracerMatcherAndConfig + properties: + - property: name + description: TODO + - property: config + description: TODO +- type: ExplicitBucketHistogramAggregation + properties: + - property: boundaries + description: TODO + - property: record_min_max + description: TODO +- type: ExporterDefaultHistogramAggregation + properties: [] +- type: ExporterTemporalityPreference + properties: [] +- type: IncludeExclude + properties: + - property: included + description: TODO + - property: excluded + description: TODO +- type: InstrumentType + properties: [] +- type: JaegerPropagator + properties: [] +- type: JaegerRemoteSampler + properties: + - property: endpoint + description: TODO + - property: interval + description: TODO + - property: initial_sampler + description: TODO +- type: LastValueAggregation + properties: [] +- type: LoggerProvider + properties: + - property: processors + description: TODO + - property: limits + description: TODO + - property: logger_configurator/development + description: TODO +- type: LogRecordExporter + properties: + - property: otlp_http + description: TODO + - property: otlp_grpc + description: TODO + - property: otlp_file/development + description: TODO + - property: console + description: TODO +- type: LogRecordLimits + properties: + - property: attribute_value_length_limit + description: TODO + - property: attribute_count_limit + description: TODO +- type: LogRecordProcessor + properties: + - property: batch + description: TODO + - property: simple + description: TODO +- type: MeterProvider + properties: + - property: readers + description: TODO + - property: views + description: TODO + - property: exemplar_filter + description: TODO + - property: meter_configurator/development + description: TODO +- type: MetricProducer + properties: + - property: opencensus + description: TODO +- type: MetricReader + properties: + - property: periodic + description: TODO + - property: pull + description: TODO +- type: NameStringValuePair + properties: + - property: name + description: TODO + - property: value + description: TODO +- type: OpenCensusMetricProducer + properties: [] +- type: OpentelemetryConfiguration + properties: + - property: file_format + description: TODO + - property: disabled + description: TODO + - property: log_level + description: TODO + - property: attribute_limits + description: TODO + - property: logger_provider + description: TODO + - property: meter_provider + description: TODO + - property: propagator + description: TODO + - property: tracer_provider + description: TODO + - property: resource + description: TODO + - property: instrumentation/development + description: TODO +- type: OpenTracingPropagator + properties: [] +- type: OtlpGrpcExporter + properties: + - property: endpoint + description: TODO + - property: certificate_file + description: TODO + - property: client_key_file + description: TODO + - property: client_certificate_file + description: TODO + - property: headers + description: TODO + - property: headers_list + description: TODO + - property: compression + description: TODO + - property: timeout + description: TODO + - property: insecure + description: TODO +- type: OtlpGrpcMetricExporter + properties: + - property: endpoint + description: TODO + - property: certificate_file + description: TODO + - property: client_key_file + description: TODO + - property: client_certificate_file + description: TODO + - property: headers + description: TODO + - property: headers_list + description: TODO + - property: compression + description: TODO + - property: timeout + description: TODO + - property: insecure + description: TODO + - property: temporality_preference + description: TODO + - property: default_histogram_aggregation + description: TODO +- type: OtlpHttpEncoding + properties: [] +- type: OtlpHttpExporter + properties: + - property: endpoint + description: TODO + - property: certificate_file + description: TODO + - property: client_key_file + description: TODO + - property: client_certificate_file + description: TODO + - property: headers + description: TODO + - property: headers_list + description: TODO + - property: compression + description: TODO + - property: timeout + description: TODO + - property: encoding + description: TODO +- type: OtlpHttpMetricExporter + properties: + - property: endpoint + description: TODO + - property: certificate_file + description: TODO + - property: client_key_file + description: TODO + - property: client_certificate_file + description: TODO + - property: headers + description: TODO + - property: headers_list + description: TODO + - property: compression + description: TODO + - property: timeout + description: TODO + - property: encoding + description: TODO + - property: temporality_preference + description: TODO + - property: default_histogram_aggregation + description: TODO +- type: ParentBasedSampler + properties: + - property: root + description: TODO + - property: remote_parent_sampled + description: TODO + - property: remote_parent_not_sampled + description: TODO + - property: local_parent_sampled + description: TODO + - property: local_parent_not_sampled + description: TODO +- type: PeriodicMetricReader + properties: + - property: interval + description: TODO + - property: timeout + description: TODO + - property: exporter + description: TODO + - property: producers + description: TODO + - property: cardinality_limits + description: TODO +- type: Propagator + properties: + - property: composite + description: TODO + - property: composite_list + description: TODO +- type: PullMetricExporter + properties: + - property: prometheus/development + description: TODO +- type: PullMetricReader + properties: + - property: exporter + description: TODO + - property: producers + description: TODO + - property: cardinality_limits + description: TODO +- type: PushMetricExporter + properties: + - property: otlp_http + description: TODO + - property: otlp_grpc + description: TODO + - property: otlp_file/development + description: TODO + - property: console + description: TODO +- type: Resource + properties: + - property: attributes + description: TODO + - property: detection/development + description: TODO + - property: schema_url + description: TODO + - property: attributes_list + description: TODO +- type: Sampler + properties: + - property: always_off + description: TODO + - property: always_on + description: TODO + - property: jaeger_remote + description: TODO + - property: parent_based + description: TODO + - property: trace_id_ratio_based + description: TODO +- type: SimpleLogRecordProcessor + properties: + - property: exporter + description: TODO +- type: SimpleSpanProcessor + properties: + - property: exporter + description: TODO +- type: SpanExporter + properties: + - property: otlp_http + description: TODO + - property: otlp_grpc + description: TODO + - property: otlp_file/development + description: TODO + - property: console + description: TODO + - property: zipkin + description: TODO +- type: SpanLimits + properties: + - property: attribute_value_length_limit + description: TODO + - property: attribute_count_limit + description: TODO + - property: event_count_limit + description: TODO + - property: link_count_limit + description: TODO + - property: event_attribute_count_limit + description: TODO + - property: link_attribute_count_limit + description: TODO +- type: SpanProcessor + properties: + - property: batch + description: TODO + - property: simple + description: TODO +- type: SumAggregation + properties: [] +- type: TextMapPropagator + properties: + - property: tracecontext + description: TODO + - property: baggage + description: TODO + - property: b3 + description: TODO + - property: b3multi + description: TODO + - property: jaeger + description: TODO + - property: ottrace + description: TODO +- type: TraceContextPropagator + properties: [] +- type: TraceIdRatioBasedSampler + properties: + - property: ratio + description: TODO +- type: TracerProvider + properties: + - property: processors + description: TODO + - property: limits + description: TODO + - property: sampler + description: TODO + - property: tracer_configurator/development + description: TODO +- type: View + properties: + - property: selector + description: TODO + - property: stream + description: TODO +- type: ViewSelector + properties: + - property: instrument_name + description: TODO + - property: instrument_type + description: TODO + - property: unit + description: TODO + - property: meter_name + description: TODO + - property: meter_version + description: TODO + - property: meter_schema_url + description: TODO +- type: ViewStream + properties: + - property: name + description: TODO + - property: description + description: TODO + - property: aggregation + description: TODO + - property: aggregation_cardinality_limit + description: TODO + - property: attribute_keys + description: TODO +- type: ZipkinSpanExporter + properties: + - property: endpoint + description: TODO + - property: timeout + description: TODO diff --git a/scripts/schema.js b/scripts/schema.js index 31d825a7..2688e9f1 100644 --- a/scripts/schema.js +++ b/scripts/schema.js @@ -63,7 +63,7 @@ function resolveType(schema, formatter) { if (!match) { throw new Error("Could not resolve $ref: " + ref); } - return formatter(match.name); + return formatter(match.type); } const type = schema.type; if (type === 'array') { diff --git a/scripts1/fix-meta-schema.js b/scripts1/fix-meta-schema.js new file mode 100644 index 00000000..29bad71e --- /dev/null +++ b/scripts1/fix-meta-schema.js @@ -0,0 +1,120 @@ + +import { + readMetaSchemaDoc, + metaSchemaFileName, + readJsonSchemaTypes, + MetaSchemaProperty, + writeMetaSchemaTypes, +} from "./schema.js"; + +// Track messages to be written to console +const messages = []; + +// Read meta schema and sanitize +const metaSchemaDoc = readMetaSchemaDoc(); +const metaSchemaTypes = []; +if (Array.isArray(metaSchemaDoc)) { + metaSchemaDoc.forEach(rawMetaSchemaType => { + const type = rawMetaSchemaType['type']; + + if (typeof type !== 'string') { + messages.push(`${metaSchemaFileName} contains entry ${JSON.stringify(rawMetaSchemaType)} with invalid type. Ignoring type.`); + return; + } + + const rawProperties = rawMetaSchemaType['properties']; + const metaSchemaProperties = []; + + if (Array.isArray(rawProperties)) { + rawProperties.forEach(rawProperty => { + const property = rawProperty['property']; + if (typeof property !== 'string') { + messages.push(`${metaSchemaFileName} type ${type} contains property ${JSON.stringify(rawProperty)} with invalid property. Ignoring property.`); + return; + } + + let description = rawProperty['description']; + if (typeof description !== 'string') { + messages.push(`${metaSchemaFileName} type ${type} contains property ${property} with invalid description. Ignoring description.`); + description = ''; + } + + metaSchemaProperties.push(new MetaSchemaProperty(property, description)); + }); + } else { + messages.push(`${metaSchemaFileName} contains entry ${JSON.stringify(rawMetaSchemaType)} with invalid properties. Ignoring properties.`); + } + + metaSchemaTypes.push(new MetaSchemaType(type, metaSchemaProperties)); + }); +} else { + messages.push(`${metaSchemaFileName} must be array of types.`); +} + +const metaSchemaTypesByType = {}; +metaSchemaTypes.forEach(type => metaSchemaTypesByType[type.type] = type); + +const jsonSchemaTypesByType = {}; +readJsonSchemaTypes().forEach(type => jsonSchemaTypesByType[type.type] = type); + +// Find any types in both json schema and meta schema and make sure all json schema properties match +Object.entries(metaSchemaTypesByType).forEach(([type, metaSchemaType]) => { + const jsonSchemaType = jsonSchemaTypesByType[type]; + if (!jsonSchemaType) { + return; + } + const sanitizedProperties = []; + const jsonSchemaProperties = jsonSchemaType.toMetaSchemaType().properties; + + // Remove properties in meta schema and not in json schema + const jsonSchemaPropertiesByProperty = {}; + jsonSchemaProperties.forEach(property => jsonSchemaPropertiesByProperty[property.property] = property); + metaSchemaType.properties.forEach(property => { + const propertyName = property.property; + if (!(propertyName in jsonSchemaPropertiesByProperty)) { + messages.push(`Type ${type} has property ${propertyName} in meta schema and not in JSON schema. Removing.`); + return; + } + sanitizedProperties.push(property); + }); + + // Add properties in json schema and not in meta schema + const metaSchemaPropertiesByProperty = {}; + metaSchemaType.properties.forEach(property => metaSchemaPropertiesByProperty[property.property] = property); + jsonSchemaProperties.forEach(property => { + const propertyName = property.property; + if (!(propertyName in metaSchemaPropertiesByProperty)) { + messages.push(`Type ${type} has property ${propertyName} in JSON schema and not in meta schema. Adding.`); + sanitizedProperties.push(property); + } + }); + + metaSchemaType.properties = sanitizedProperties; +}); + +// Find and remove any types in meta schema not in json schema +Object.entries(metaSchemaTypesByType).forEach(([type, unused]) => { + if (!(type in jsonSchemaTypesByType)) { + messages.push(`Type ${type} found in ${metaSchemaFileName} but not in JSON schema. Removing.`); + delete metaSchemaTypesByType[type]; + } +}); + +// Find and add any types in json schema not in meta schema +Object.entries(jsonSchemaTypesByType).forEach(([type, jsonSchemaType]) => { + if (!(type in metaSchemaTypesByType)) { + messages.push(`Type ${type} in ${jsonSchemaType.file} and path ${jsonSchemaType.path} is missing from ${metaSchemaFileName}. Adding.`); + const metaSchemaType = jsonSchemaType.toMetaSchemaType(); + metaSchemaTypesByType[metaSchemaType.type] = metaSchemaType; + } +}); + +// Sort lexigraphically and write to meta schema +let sortedMetaSchemaTypes = Object.values(metaSchemaTypesByType).map(type => type.toJson()); +sortedMetaSchemaTypes.sort((a, b) => a.type.localeCompare(b.type)); +writeMetaSchemaTypes(sortedMetaSchemaTypes); + +// Write messages to console +messages.forEach(message => { + console.log(message); +}); diff --git a/scripts1/generate-descriptions.js b/scripts1/generate-descriptions.js new file mode 100644 index 00000000..e69de29b diff --git a/scripts1/schema.js b/scripts1/schema.js new file mode 100644 index 00000000..80ea9bd4 --- /dev/null +++ b/scripts1/schema.js @@ -0,0 +1,117 @@ +import path from 'path'; +import { fileURLToPath } from 'url'; +import fs from 'fs'; +import yaml from 'yaml'; +import traverse from '@json-schema-tools/traverse'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +export const metaSchemaFileName = "meta_schema.yaml"; +const schemaDirPath = __dirname + "/../schema/"; +const metaSchemaPath = schemaDirPath + metaSchemaFileName; + +export function readMetaSchemaDoc() { + const metaSchemaContent = fs.readFileSync(metaSchemaPath, "utf-8"); + return yaml.parse(metaSchemaContent); +}; + +export function writeMetaSchemaTypes(metaSchemaTypes) { + fs.writeFileSync(metaSchemaPath, yaml.stringify(metaSchemaTypes, { lineWidth: 0 })); +} + +export function readJsonSchemaTypes() { + const schemasByType = {}; + const topLevelSchemas = {}; + + fs.readdirSync(schemaDirPath) + .filter(file => file.endsWith(".json")) + .forEach(file => { + const schema = JSON.parse(fs.readFileSync(schemaDirPath + file, "utf-8")); + topLevelSchemas[file] = schema; + + if (file === 'opentelemetry_configuration.json') { + schemasByType['OpenTelemetryConfiguration'] = new JsonSchemaType('OpentelemetryConfiguration', file, '.', schema); + } + + traverse.default(schema, (schema) => { + const defs = schema['$defs']; + if (!defs) return; + Object.entries(defs).forEach(([type, schema]) => { + const path = `#/$defs/${type}`; + if (type in schemasByType) { + throw new Error(`${type} already exists in schemasByName with definition: ` + schemasByType[type]); + } + schemasByType[type] = new JsonSchemaType(type, file, path, schema); + }); + }); + }); + + // Resolve refs to top-level types + Object.entries(schemasByType).forEach(([name, jsonSchemaType]) => { + const ref = jsonSchemaType.schema['$ref']; + if (!ref) return; + const topLevelSchema = topLevelSchemas[ref]; + if (!topLevelSchema) { + throw new Error("Could not resolve $ref:" + ref); + } + schemasByType[name] = new JsonSchemaType(name, jsonSchemaType.file, jsonSchemaType.path, topLevelSchema); + }); + + return Object.values(schemasByType); +} + +export class JsonSchemaType { + type; + file; + path; + schema; + + constructor(type, file, path, schema) { + this.type = type; + this.file = file; + this.path = path; + this.schema = schema; + } + + toMetaSchemaType() { + const properties = []; + if (this.schema.properties) { + Object.entries(this.schema.properties).forEach(([propertyName, schema]) => { + properties.push(new MetaSchemaProperty(propertyName, "TODO")); + }); + } + return new MetaSchemaType(this.type, properties); + } +} + +export class MetaSchemaProperty { + property; + description; + + constructor(property, description) { + this.property = property; + this.description = description; + } + + toJson() { + return { property: this.property, description: this.description }; + } +} + +export class MetaSchemaType { + type; + properties; + + constructor(type, properties) { + this.type = type; + this.properties = properties; + } + + toJson() { + const properties = this.properties.map(property => property.toJson()); + properties.sort((a, b) => a.property.localeCompare(b.property)); + + return { type: this.type, properties: this.properties }; + } +} From 2291cdf6a67c8e68acff9678849fe13238deb190 Mon Sep 17 00:00:00 2001 From: Jack Berg <34418638+jack-berg@users.noreply.github.com> Date: Wed, 1 Oct 2025 12:37:12 -0500 Subject: [PATCH 06/23] path patterns working --- package.json | 2 +- scripts1/fix-meta-schema.js | 2 +- scripts1/generate-descriptions.js | 16 ++++ scripts1/schema.js | 119 ++++++++++++++++++++++++------ 4 files changed, 116 insertions(+), 23 deletions(-) diff --git a/package.json b/package.json index cf9615fb..b01d034f 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "generate-meta-schema": "node scripts/generate-meta-schema.js", "validate-meta-schema": "node scripts/validate-meta-schema.js", "fix-meta-schema": "node scripts1/fix-meta-schema.js", - "generate-meta-schema-new": "node scripts1/generate-meta-schema.js" + "generate-descriptions-new": "node scripts1/generate-descriptions.js" }, "devDependencies": { "@json-schema-tools/traverse": "^1.10.4", diff --git a/scripts1/fix-meta-schema.js b/scripts1/fix-meta-schema.js index 29bad71e..29d8cc11 100644 --- a/scripts1/fix-meta-schema.js +++ b/scripts1/fix-meta-schema.js @@ -103,7 +103,7 @@ Object.entries(metaSchemaTypesByType).forEach(([type, unused]) => { // Find and add any types in json schema not in meta schema Object.entries(jsonSchemaTypesByType).forEach(([type, jsonSchemaType]) => { if (!(type in metaSchemaTypesByType)) { - messages.push(`Type ${type} in ${jsonSchemaType.file} and path ${jsonSchemaType.path} is missing from ${metaSchemaFileName}. Adding.`); + messages.push(`Type ${type} in ${jsonSchemaType.file} and path ${jsonSchemaType.jsonSchemaPath} is missing from ${metaSchemaFileName}. Adding.`); const metaSchemaType = jsonSchemaType.toMetaSchemaType(); metaSchemaTypesByType[metaSchemaType.type] = metaSchemaType; } diff --git a/scripts1/generate-descriptions.js b/scripts1/generate-descriptions.js index e69de29b..89ccd7bb 100644 --- a/scripts1/generate-descriptions.js +++ b/scripts1/generate-descriptions.js @@ -0,0 +1,16 @@ +import { + readJsonSchemaTypes +} from "./schema.js"; + +const jsonSchemaTypes = readJsonSchemaTypes(); + +// console.log(JSON.stringify(jsonSchemaTypes, null, 2)); + +jsonSchemaTypes.forEach(type => { + const json = { + type: type.type, + file: type.file, + pathPatterns: type.pathPatterns, + }; + console.log(JSON.stringify(json, null, 2)); +}); diff --git a/scripts1/schema.js b/scripts1/schema.js index 80ea9bd4..46b7c43a 100644 --- a/scripts1/schema.js +++ b/scripts1/schema.js @@ -2,7 +2,6 @@ import path from 'path'; import { fileURLToPath } from 'url'; import fs from 'fs'; import yaml from 'yaml'; -import traverse from '@json-schema-tools/traverse'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); @@ -27,51 +26,129 @@ export function readJsonSchemaTypes() { fs.readdirSync(schemaDirPath) .filter(file => file.endsWith(".json")) .forEach(file => { - const schema = JSON.parse(fs.readFileSync(schemaDirPath + file, "utf-8")); - topLevelSchemas[file] = schema; + const fileContent = JSON.parse(fs.readFileSync(schemaDirPath + file, "utf-8")); + + topLevelSchemas[file] = fileContent; if (file === 'opentelemetry_configuration.json') { - schemasByType['OpenTelemetryConfiguration'] = new JsonSchemaType('OpentelemetryConfiguration', file, '.', schema); + schemasByType['OpenTelemetryConfiguration'] = new JsonSchemaType('OpentelemetryConfiguration', file, fileContent, '.', fileContent); } - traverse.default(schema, (schema) => { - const defs = schema['$defs']; - if (!defs) return; - Object.entries(defs).forEach(([type, schema]) => { - const path = `#/$defs/${type}`; - if (type in schemasByType) { - throw new Error(`${type} already exists in schemasByName with definition: ` + schemasByType[type]); - } - schemasByType[type] = new JsonSchemaType(type, file, path, schema); - }); + Object.entries(getDefs(fileContent)).forEach(([type, schema]) => { + const jsonSchemaPath = `${localDefPrefix}${type}`; + if (type in schemasByType) { + throw new Error(`${type} already exists in schemasByName with definition: ` + schemasByType[type]); + } + schemasByType[type] = new JsonSchemaType(type, file, fileContent, jsonSchemaPath, schema); }); }); // Resolve refs to top-level types - Object.entries(schemasByType).forEach(([name, jsonSchemaType]) => { + Object.values(schemasByType).forEach(jsonSchemaType => { const ref = jsonSchemaType.schema['$ref']; - if (!ref) return; + if (!ref) { + return; + } const topLevelSchema = topLevelSchemas[ref]; if (!topLevelSchema) { - throw new Error("Could not resolve $ref:" + ref); + throw new Error("Could not resolve top level $ref:" + ref); } - schemasByType[name] = new JsonSchemaType(name, jsonSchemaType.file, jsonSchemaType.path, topLevelSchema); + jsonSchemaType.file = ref; + jsonSchemaType.jsonSchemaPath = '.'; + jsonSchemaType.schema = topLevelSchema; }); + // Compute path patterns for types + // DFS starting at OpenTelemetryConfigurationType + let current = schemasByType['OpenTelemetryConfiguration']; + if (current === null) { + throw new Error("Missing OpenTelemetryConfiguration type"); + } + recursiveAddPathPatterns(current, schemasByType, ".", []); + return Object.values(schemasByType); } +const localDefPrefix = '#/$defs/'; + +function resolveRef(ref, schemasByType) { + if (ref.startsWith(localDefPrefix)) { + const type = ref.substring(localDefPrefix.length); + return schemasByType[type]; + } + return Object.values(schemasByType).find(jsonSchemaType => jsonSchemaType.jsonSchemaRef() === ref); +} + +function getDefs(jsonSchema) { + const defs = jsonSchema['$defs']; + if (!defs) { + return {}; + } + return defs; +} + +function recursiveAddPathPatterns(currentJsonSchemaType, schemasByType, currentPath, parentTypes) { + if (currentJsonSchemaType.type === 'Sampler') { + console.log("Sampler!"); + } + currentJsonSchemaType.pathPatterns.push(currentPath); + + const properties = currentJsonSchemaType.schema['properties']; + if (!properties) { + return; + } + const nextParentTypes = [...parentTypes, currentJsonSchemaType]; + Object.entries(properties).forEach(([property, schema]) => { + let ref = schema['$ref']; + const isArray = schema['type'] === 'array'; + if (!ref && isArray) { + const items = schema['items']; + if (items) { + ref = items['$ref']; + } + } + if (!ref) { + return; + } + const resolvedRef = resolveRef(ref, schemasByType); + if (!resolvedRef) { + throw new Error(`Failed to find type for json schema ref ${ref}`); + } + if (parentTypes.find(type => type.type === resolvedRef.type)) { + return; // Recursive reference + } + let nextPath = currentPath; + nextPath += (currentPath === '.') ? property : ('.' + property) + if (isArray) { + nextPath += '[]'; + } + recursiveAddPathPatterns(resolvedRef, schemasByType, nextPath, nextParentTypes); + }); +} + export class JsonSchemaType { type; file; - path; + fileContent; + jsonSchemaPath; schema; + pathPatterns; - constructor(type, file, path, schema) { + constructor(type, file, fileContent, jsonSchemaPath, schema) { this.type = type; this.file = file; - this.path = path; + this.fileContent = fileContent; + this.jsonSchemaPath = jsonSchemaPath; this.schema = schema; + this.pathPatterns = []; + } + + jsonSchemaRef() { + let ref = this.file; + if (this.jsonSchemaPath !== '.') { + ref += this.jsonSchemaPath; + } + return ref; } toMetaSchemaType() { From e414c139516408b3f8417df5c0e18f39ef7b7797 Mon Sep 17 00:00:00 2001 From: Jack Berg <34418638+jack-berg@users.noreply.github.com> Date: Wed, 1 Oct 2025 13:38:55 -0500 Subject: [PATCH 07/23] Basic markdown script --- package.json | 3 +- schema-docs.md | 5054 ++++++++++++++++++++++++ scripts1/fix-meta-schema.js | 112 +- scripts1/generate-descriptions.js | 2 +- scripts1/generate-markdown.js | 74 + scripts1/{schema.js => json-schema.js} | 57 +- scripts1/meta-schema.js | 148 + scripts1/util.js | 17 + 8 files changed, 5303 insertions(+), 164 deletions(-) create mode 100644 schema-docs.md create mode 100644 scripts1/generate-markdown.js rename scripts1/{schema.js => json-schema.js} (76%) create mode 100644 scripts1/meta-schema.js create mode 100644 scripts1/util.js diff --git a/package.json b/package.json index b01d034f..96c372db 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,8 @@ "generate-meta-schema": "node scripts/generate-meta-schema.js", "validate-meta-schema": "node scripts/validate-meta-schema.js", "fix-meta-schema": "node scripts1/fix-meta-schema.js", - "generate-descriptions-new": "node scripts1/generate-descriptions.js" + "generate-descriptions-new": "node scripts1/generate-descriptions.js", + "generate-markdown-new": "node scripts1/generate-markdown.js" }, "devDependencies": { "@json-schema-tools/traverse": "^1.10.4", diff --git a/schema-docs.md b/schema-docs.md new file mode 100644 index 00000000..e7676dc1 --- /dev/null +++ b/schema-docs.md @@ -0,0 +1,5054 @@ +### Aggregation + +| Property | Type | Description | +|---|---|---| +| default | TODO | TODO | +| drop | TODO | TODO | +| explicit_bucket_histogram | TODO | TODO | +| base2_exponential_bucket_histogram | TODO | TODO | +| last_value | TODO | TODO | +| sum | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| default |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| drop |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| explicit_bucket_histogram |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| base2_exponential_bucket_histogram |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| last_value |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| sum |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/meter_provider.json) +
{
+  "type": "object",
+  "additionalProperties": false,
+  "minProperties": 1,
+  "maxProperties": 1,
+  "properties": {
+    "default": {
+      "$ref": "#/$defs/DefaultAggregation"
+    },
+    "drop": {
+      "$ref": "#/$defs/DropAggregation"
+    },
+    "explicit_bucket_histogram": {
+      "$ref": "#/$defs/ExplicitBucketHistogramAggregation"
+    },
+    "base2_exponential_bucket_histogram": {
+      "$ref": "#/$defs/Base2ExponentialBucketHistogramAggregation"
+    },
+    "last_value": {
+      "$ref": "#/$defs/LastValueAggregation"
+    },
+    "sum": {
+      "$ref": "#/$defs/SumAggregation"
+    }
+  }
+}
+
+Path patterns + +* `.meter_provider.views[].stream.aggregation`
+### AlwaysOffSampler + +No properties. + +
+JSON Schema + +[JSON Schema Source File](./schema/tracer_provider.json) +
{
+  "type": [
+    "object",
+    "null"
+  ],
+  "additionalProperties": false
+}
+
+Path patterns + +* `.tracer_provider.sampler.always_off`
+### AlwaysOnSampler + +No properties. + +
+JSON Schema + +[JSON Schema Source File](./schema/tracer_provider.json) +
{
+  "type": [
+    "object",
+    "null"
+  ],
+  "additionalProperties": false
+}
+
+Path patterns + +* `.tracer_provider.sampler.always_on`
+### AttributeLimits + +| Property | Type | Description | +|---|---|---| +| attribute_value_length_limit | TODO | TODO | +| attribute_count_limit | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| attribute_value_length_limit |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| attribute_count_limit |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/opentelemetry_configuration.json) +
{
+  "type": "object",
+  "additionalProperties": true,
+  "properties": {
+    "attribute_value_length_limit": {
+      "type": [
+        "integer",
+        "null"
+      ]
+    },
+    "attribute_count_limit": {
+      "type": [
+        "integer",
+        "null"
+      ]
+    }
+  }
+}
+
+Path patterns + +* `.attribute_limits`
+### AttributeNameValue + +| Property | Type | Description | +|---|---|---| +| name | TODO | TODO | +| value | TODO | TODO | +| type | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| name |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| value |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| type |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/resource.json) +
{
+  "type": "object",
+  "additionalProperties": false,
+  "properties": {
+    "name": {
+      "type": "string"
+    },
+    "value": {
+      "oneOf": [
+        {
+          "type": "string"
+        },
+        {
+          "type": "number"
+        },
+        {
+          "type": "boolean"
+        },
+        {
+          "type": "null"
+        },
+        {
+          "type": "array",
+          "items": {
+            "type": "string"
+          }
+        },
+        {
+          "type": "array",
+          "items": {
+            "type": "boolean"
+          }
+        },
+        {
+          "type": "array",
+          "items": {
+            "type": "number"
+          }
+        }
+      ]
+    },
+    "type": {
+      "$ref": "#/$defs/AttributeType"
+    }
+  },
+  "required": [
+    "name",
+    "value"
+  ]
+}
+
+Path patterns + +* `.resource.attributes[]`
+### AttributeType + +No properties. + +
+JSON Schema + +[JSON Schema Source File](./schema/resource.json) +
{
+  "type": [
+    "string",
+    "null"
+  ],
+  "enum": [
+    null,
+    "string",
+    "bool",
+    "int",
+    "double",
+    "string_array",
+    "bool_array",
+    "int_array",
+    "double_array"
+  ]
+}
+
+Path patterns + +* `.resource.attributes[].type`
+### B3MultiPropagator + +No properties. + +
+JSON Schema + +[JSON Schema Source File](./schema/propagator.json) +
{
+  "type": [
+    "object",
+    "null"
+  ],
+  "additionalProperties": false
+}
+
+Path patterns + +* `.propagator.composite[].b3multi`
+### B3Propagator + +No properties. + +
+JSON Schema + +[JSON Schema Source File](./schema/propagator.json) +
{
+  "type": [
+    "object",
+    "null"
+  ],
+  "additionalProperties": false
+}
+
+Path patterns + +* `.propagator.composite[].b3`
+### BaggagePropagator + +No properties. + +
+JSON Schema + +[JSON Schema Source File](./schema/propagator.json) +
{
+  "type": [
+    "object",
+    "null"
+  ],
+  "additionalProperties": false
+}
+
+Path patterns + +* `.propagator.composite[].baggage`
+### Base2ExponentialBucketHistogramAggregation + +| Property | Type | Description | +|---|---|---| +| max_scale | TODO | TODO | +| max_size | TODO | TODO | +| record_min_max | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| max_scale |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| max_size |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| record_min_max |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/meter_provider.json) +
{
+  "type": [
+    "object",
+    "null"
+  ],
+  "additionalProperties": false,
+  "properties": {
+    "max_scale": {
+      "type": [
+        "integer",
+        "null"
+      ]
+    },
+    "max_size": {
+      "type": [
+        "integer",
+        "null"
+      ]
+    },
+    "record_min_max": {
+      "type": [
+        "boolean",
+        "null"
+      ]
+    }
+  }
+}
+
+Path patterns + +* `.meter_provider.views[].stream.aggregation.base2_exponential_bucket_histogram`
+### BatchLogRecordProcessor + +| Property | Type | Description | +|---|---|---| +| schedule_delay | TODO | TODO | +| export_timeout | TODO | TODO | +| max_queue_size | TODO | TODO | +| max_export_batch_size | TODO | TODO | +| exporter | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| schedule_delay |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| export_timeout |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| max_queue_size |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| max_export_batch_size |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| exporter |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/logger_provider.json) +
{
+  "type": "object",
+  "additionalProperties": false,
+  "properties": {
+    "schedule_delay": {
+      "type": [
+        "integer",
+        "null"
+      ],
+      "minimum": 0
+    },
+    "export_timeout": {
+      "type": [
+        "integer",
+        "null"
+      ],
+      "minimum": 0
+    },
+    "max_queue_size": {
+      "type": [
+        "integer",
+        "null"
+      ],
+      "exclusiveMinimum": 0
+    },
+    "max_export_batch_size": {
+      "type": [
+        "integer",
+        "null"
+      ],
+      "exclusiveMinimum": 0
+    },
+    "exporter": {
+      "$ref": "#/$defs/LogRecordExporter"
+    }
+  },
+  "required": [
+    "exporter"
+  ]
+}
+
+Path patterns + +* `.logger_provider.processors[].batch`
+### BatchSpanProcessor + +| Property | Type | Description | +|---|---|---| +| schedule_delay | TODO | TODO | +| export_timeout | TODO | TODO | +| max_queue_size | TODO | TODO | +| max_export_batch_size | TODO | TODO | +| exporter | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| schedule_delay |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| export_timeout |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| max_queue_size |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| max_export_batch_size |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| exporter |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/tracer_provider.json) +
{
+  "type": "object",
+  "additionalProperties": false,
+  "properties": {
+    "schedule_delay": {
+      "type": [
+        "integer",
+        "null"
+      ],
+      "minimum": 0
+    },
+    "export_timeout": {
+      "type": [
+        "integer",
+        "null"
+      ],
+      "minimum": 0
+    },
+    "max_queue_size": {
+      "type": [
+        "integer",
+        "null"
+      ],
+      "exclusiveMinimum": 0
+    },
+    "max_export_batch_size": {
+      "type": [
+        "integer",
+        "null"
+      ],
+      "exclusiveMinimum": 0
+    },
+    "exporter": {
+      "$ref": "#/$defs/SpanExporter"
+    }
+  },
+  "required": [
+    "exporter"
+  ]
+}
+
+Path patterns + +* `.tracer_provider.processors[].batch`
+### CardinalityLimits + +| Property | Type | Description | +|---|---|---| +| default | TODO | TODO | +| counter | TODO | TODO | +| gauge | TODO | TODO | +| histogram | TODO | TODO | +| observable_counter | TODO | TODO | +| observable_gauge | TODO | TODO | +| observable_up_down_counter | TODO | TODO | +| up_down_counter | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| default |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| counter |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| gauge |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| histogram |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| observable_counter |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| observable_gauge |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| observable_up_down_counter |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| up_down_counter |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/meter_provider.json) +
{
+  "type": "object",
+  "additionalProperties": false,
+  "properties": {
+    "default": {
+      "type": [
+        "integer",
+        "null"
+      ],
+      "exclusiveMinimum": 0
+    },
+    "counter": {
+      "type": [
+        "integer",
+        "null"
+      ],
+      "exclusiveMinimum": 0
+    },
+    "gauge": {
+      "type": [
+        "integer",
+        "null"
+      ],
+      "exclusiveMinimum": 0
+    },
+    "histogram": {
+      "type": [
+        "integer",
+        "null"
+      ],
+      "exclusiveMinimum": 0
+    },
+    "observable_counter": {
+      "type": [
+        "integer",
+        "null"
+      ],
+      "exclusiveMinimum": 0
+    },
+    "observable_gauge": {
+      "type": [
+        "integer",
+        "null"
+      ],
+      "exclusiveMinimum": 0
+    },
+    "observable_up_down_counter": {
+      "type": [
+        "integer",
+        "null"
+      ],
+      "exclusiveMinimum": 0
+    },
+    "up_down_counter": {
+      "type": [
+        "integer",
+        "null"
+      ],
+      "exclusiveMinimum": 0
+    }
+  }
+}
+
+Path patterns + +* `.meter_provider.readers[].periodic.cardinality_limits`* `.meter_provider.readers[].pull.cardinality_limits`
+### ConsoleExporter + +No properties. + +
+JSON Schema + +[JSON Schema Source File](./schema/common.json) +
{
+  "type": [
+    "object",
+    "null"
+  ],
+  "additionalProperties": false
+}
+
+Path patterns + +* `.logger_provider.processors[].batch.exporter.console`* `.logger_provider.processors[].simple.exporter.console`* `.meter_provider.readers[].periodic.exporter.console`* `.tracer_provider.processors[].batch.exporter.console`* `.tracer_provider.processors[].simple.exporter.console`
+### DefaultAggregation + +No properties. + +
+JSON Schema + +[JSON Schema Source File](./schema/meter_provider.json) +
{
+  "type": [
+    "object",
+    "null"
+  ],
+  "additionalProperties": false
+}
+
+Path patterns + +* `.meter_provider.views[].stream.aggregation.default`
+### DropAggregation + +No properties. + +
+JSON Schema + +[JSON Schema Source File](./schema/meter_provider.json) +
{
+  "type": [
+    "object",
+    "null"
+  ],
+  "additionalProperties": false
+}
+
+Path patterns + +* `.meter_provider.views[].stream.aggregation.drop`
+### ExemplarFilter + +No properties. + +
+JSON Schema + +[JSON Schema Source File](./schema/meter_provider.json) +
{
+  "type": [
+    "string",
+    "null"
+  ],
+  "enum": [
+    "always_on",
+    "always_off",
+    "trace_based"
+  ]
+}
+
+Path patterns + +* `.meter_provider.exemplar_filter`
+### ExperimentalGeneralInstrumentation + +| Property | Type | Description | +|---|---|---| +| peer | TODO | TODO | +| http | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| peer |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| http |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/instrumentation.json) +
{
+  "type": "object",
+  "additionalProperties": false,
+  "properties": {
+    "peer": {
+      "$ref": "#/$defs/ExperimentalPeerInstrumentation"
+    },
+    "http": {
+      "$ref": "#/$defs/ExperimentalHttpInstrumentation"
+    }
+  }
+}
+
+Path patterns + +* `.instrumentation/development.general`
+### ExperimentalHttpInstrumentation + +| Property | Type | Description | +|---|---|---| +| client | TODO | TODO | +| server | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| client |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| server |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/instrumentation.json) +
{
+  "type": "object",
+  "additionalProperties": false,
+  "properties": {
+    "client": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "request_captured_headers": {
+          "type": "array",
+          "items": {
+            "type": "string"
+          }
+        },
+        "response_captured_headers": {
+          "type": "array",
+          "items": {
+            "type": "string"
+          }
+        }
+      }
+    },
+    "server": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "request_captured_headers": {
+          "type": "array",
+          "items": {
+            "type": "string"
+          }
+        },
+        "response_captured_headers": {
+          "type": "array",
+          "items": {
+            "type": "string"
+          }
+        }
+      }
+    }
+  }
+}
+
+Path patterns + +* `.instrumentation/development.general.http`
+### ExperimentalInstrumentation + +| Property | Type | Description | +|---|---|---| +| general | TODO | TODO | +| cpp | TODO | TODO | +| dotnet | TODO | TODO | +| erlang | TODO | TODO | +| go | TODO | TODO | +| java | TODO | TODO | +| js | TODO | TODO | +| php | TODO | TODO | +| python | TODO | TODO | +| ruby | TODO | TODO | +| rust | TODO | TODO | +| swift | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| general |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| cpp |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| dotnet |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| erlang |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| go |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| java |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| js |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| php |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| python |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| ruby |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| rust |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| swift |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/instrumentation.json) +
{
+  "$id": "https://opentelemetry.io/otelconfig/instrumentation.json",
+  "$schema": "https://json-schema.org/draft/2020-12/schema",
+  "type": "object",
+  "additionalProperties": false,
+  "properties": {
+    "general": {
+      "$ref": "#/$defs/ExperimentalGeneralInstrumentation"
+    },
+    "cpp": {
+      "$ref": "#/$defs/ExperimentalLanguageSpecificInstrumentation"
+    },
+    "dotnet": {
+      "$ref": "#/$defs/ExperimentalLanguageSpecificInstrumentation"
+    },
+    "erlang": {
+      "$ref": "#/$defs/ExperimentalLanguageSpecificInstrumentation"
+    },
+    "go": {
+      "$ref": "#/$defs/ExperimentalLanguageSpecificInstrumentation"
+    },
+    "java": {
+      "$ref": "#/$defs/ExperimentalLanguageSpecificInstrumentation"
+    },
+    "js": {
+      "$ref": "#/$defs/ExperimentalLanguageSpecificInstrumentation"
+    },
+    "php": {
+      "$ref": "#/$defs/ExperimentalLanguageSpecificInstrumentation"
+    },
+    "python": {
+      "$ref": "#/$defs/ExperimentalLanguageSpecificInstrumentation"
+    },
+    "ruby": {
+      "$ref": "#/$defs/ExperimentalLanguageSpecificInstrumentation"
+    },
+    "rust": {
+      "$ref": "#/$defs/ExperimentalLanguageSpecificInstrumentation"
+    },
+    "swift": {
+      "$ref": "#/$defs/ExperimentalLanguageSpecificInstrumentation"
+    }
+  },
+  "patternProperties": {
+    ".*": {
+      "$ref": "#/$defs/ExperimentalLanguageSpecificInstrumentation"
+    }
+  },
+  "$defs": {
+    "ExperimentalGeneralInstrumentation": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "peer": {
+          "$ref": "#/$defs/ExperimentalPeerInstrumentation"
+        },
+        "http": {
+          "$ref": "#/$defs/ExperimentalHttpInstrumentation"
+        }
+      }
+    },
+    "ExperimentalPeerInstrumentation": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "service_mapping": {
+          "type": "array",
+          "items": {
+            "type": "object",
+            "additionalProperties": false,
+            "properties": {
+              "peer": {
+                "type": "string"
+              },
+              "service": {
+                "type": "string"
+              }
+            },
+            "required": [
+              "peer",
+              "service"
+            ]
+          }
+        }
+      }
+    },
+    "ExperimentalHttpInstrumentation": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "client": {
+          "type": "object",
+          "additionalProperties": false,
+          "properties": {
+            "request_captured_headers": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "response_captured_headers": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          }
+        },
+        "server": {
+          "type": "object",
+          "additionalProperties": false,
+          "properties": {
+            "request_captured_headers": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            "response_captured_headers": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            }
+          }
+        }
+      }
+    },
+    "ExperimentalLanguageSpecificInstrumentation": {
+      "type": "object",
+      "additionalProperties": true,
+      "patternProperties": {
+        ".*": {
+          "type": "object"
+        }
+      }
+    }
+  }
+}
+
+Path patterns + +* `.instrumentation/development`
+### ExperimentalLanguageSpecificInstrumentation + +No properties. + +
+JSON Schema + +[JSON Schema Source File](./schema/instrumentation.json) +
{
+  "type": "object",
+  "additionalProperties": true,
+  "patternProperties": {
+    ".*": {
+      "type": "object"
+    }
+  }
+}
+
+Path patterns + +* `.instrumentation/development.cpp`* `.instrumentation/development.dotnet`* `.instrumentation/development.erlang`* `.instrumentation/development.go`* `.instrumentation/development.java`* `.instrumentation/development.js`* `.instrumentation/development.php`* `.instrumentation/development.python`* `.instrumentation/development.ruby`* `.instrumentation/development.rust`* `.instrumentation/development.swift`
+### ExperimentalLoggerConfig + +| Property | Type | Description | +|---|---|---| +| disabled | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| disabled |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/logger_provider.json) +
{
+  "type": [
+    "object"
+  ],
+  "additionalProperties": false,
+  "properties": {
+    "disabled": {
+      "type": [
+        "boolean"
+      ]
+    }
+  }
+}
+
+Path patterns + +* `.logger_provider.logger_configurator/development.default_config`* `.logger_provider.logger_configurator/development.loggers[].config`
+### ExperimentalLoggerConfigurator + +| Property | Type | Description | +|---|---|---| +| default_config | TODO | TODO | +| loggers | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| default_config |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| loggers |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/logger_provider.json) +
{
+  "type": [
+    "object"
+  ],
+  "additionalProperties": false,
+  "properties": {
+    "default_config": {
+      "$ref": "#/$defs/ExperimentalLoggerConfig"
+    },
+    "loggers": {
+      "type": "array",
+      "items": {
+        "$ref": "#/$defs/ExperimentalLoggerMatcherAndConfig"
+      }
+    }
+  }
+}
+
+Path patterns + +* `.logger_provider.logger_configurator/development`
+### ExperimentalLoggerMatcherAndConfig + +| Property | Type | Description | +|---|---|---| +| name | TODO | TODO | +| config | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| name |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| config |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/logger_provider.json) +
{
+  "type": [
+    "object"
+  ],
+  "additionalProperties": false,
+  "properties": {
+    "name": {
+      "type": [
+        "string"
+      ]
+    },
+    "config": {
+      "$ref": "#/$defs/ExperimentalLoggerConfig"
+    }
+  }
+}
+
+Path patterns + +* `.logger_provider.logger_configurator/development.loggers[]`
+### ExperimentalMeterConfig + +| Property | Type | Description | +|---|---|---| +| disabled | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| disabled |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/meter_provider.json) +
{
+  "type": [
+    "object"
+  ],
+  "additionalProperties": false,
+  "properties": {
+    "disabled": {
+      "type": [
+        "boolean"
+      ]
+    }
+  }
+}
+
+Path patterns + +* `.meter_provider.meter_configurator/development.default_config`* `.meter_provider.meter_configurator/development.meters[].config`
+### ExperimentalMeterConfigurator + +| Property | Type | Description | +|---|---|---| +| default_config | TODO | TODO | +| meters | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| default_config |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| meters |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/meter_provider.json) +
{
+  "type": [
+    "object"
+  ],
+  "additionalProperties": false,
+  "properties": {
+    "default_config": {
+      "$ref": "#/$defs/ExperimentalMeterConfig"
+    },
+    "meters": {
+      "type": "array",
+      "items": {
+        "$ref": "#/$defs/ExperimentalMeterMatcherAndConfig"
+      }
+    }
+  }
+}
+
+Path patterns + +* `.meter_provider.meter_configurator/development`
+### ExperimentalMeterMatcherAndConfig + +| Property | Type | Description | +|---|---|---| +| name | TODO | TODO | +| config | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| name |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| config |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/meter_provider.json) +
{
+  "type": [
+    "object"
+  ],
+  "additionalProperties": false,
+  "properties": {
+    "name": {
+      "type": [
+        "string"
+      ]
+    },
+    "config": {
+      "$ref": "#/$defs/ExperimentalMeterConfig"
+    }
+  }
+}
+
+Path patterns + +* `.meter_provider.meter_configurator/development.meters[]`
+### ExperimentalOtlpFileExporter + +| Property | Type | Description | +|---|---|---| +| output_stream | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| output_stream |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/common.json) +
{
+  "type": [
+    "object",
+    "null"
+  ],
+  "additionalProperties": false,
+  "properties": {
+    "output_stream": {
+      "type": [
+        "string",
+        "null"
+      ]
+    }
+  }
+}
+
+Path patterns + +* `.logger_provider.processors[].batch.exporter.otlp_file/development`* `.logger_provider.processors[].simple.exporter.otlp_file/development`* `.tracer_provider.processors[].batch.exporter.otlp_file/development`* `.tracer_provider.processors[].simple.exporter.otlp_file/development`
+### ExperimentalOtlpFileMetricExporter + +| Property | Type | Description | +|---|---|---| +| output_stream | TODO | TODO | +| temporality_preference | TODO | TODO | +| default_histogram_aggregation | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| output_stream |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| temporality_preference |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| default_histogram_aggregation |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/meter_provider.json) +
{
+  "type": [
+    "object",
+    "null"
+  ],
+  "additionalProperties": false,
+  "properties": {
+    "output_stream": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "temporality_preference": {
+      "$ref": "#/$defs/ExporterTemporalityPreference"
+    },
+    "default_histogram_aggregation": {
+      "$ref": "#/$defs/ExporterDefaultHistogramAggregation"
+    }
+  }
+}
+
+Path patterns + +* `.meter_provider.readers[].periodic.exporter.otlp_file/development`
+### ExperimentalPeerInstrumentation + +| Property | Type | Description | +|---|---|---| +| service_mapping | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| service_mapping |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/instrumentation.json) +
{
+  "type": "object",
+  "additionalProperties": false,
+  "properties": {
+    "service_mapping": {
+      "type": "array",
+      "items": {
+        "type": "object",
+        "additionalProperties": false,
+        "properties": {
+          "peer": {
+            "type": "string"
+          },
+          "service": {
+            "type": "string"
+          }
+        },
+        "required": [
+          "peer",
+          "service"
+        ]
+      }
+    }
+  }
+}
+
+Path patterns + +* `.instrumentation/development.general.peer`
+### ExperimentalPrometheusMetricExporter + +| Property | Type | Description | +|---|---|---| +| host | TODO | TODO | +| port | TODO | TODO | +| without_units | TODO | TODO | +| without_type_suffix | TODO | TODO | +| without_scope_info | TODO | TODO | +| with_resource_constant_labels | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| host |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| port |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| without_units |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| without_type_suffix |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| without_scope_info |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| with_resource_constant_labels |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/meter_provider.json) +
{
+  "type": [
+    "object",
+    "null"
+  ],
+  "additionalProperties": false,
+  "properties": {
+    "host": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "port": {
+      "type": [
+        "integer",
+        "null"
+      ]
+    },
+    "without_units": {
+      "type": [
+        "boolean",
+        "null"
+      ]
+    },
+    "without_type_suffix": {
+      "type": [
+        "boolean",
+        "null"
+      ]
+    },
+    "without_scope_info": {
+      "type": [
+        "boolean",
+        "null"
+      ]
+    },
+    "with_resource_constant_labels": {
+      "$ref": "common.json#/$defs/IncludeExclude"
+    }
+  }
+}
+
+Path patterns + +* `.meter_provider.readers[].pull.exporter.prometheus/development`
+### ExperimentalResourceDetection + +| Property | Type | Description | +|---|---|---| +| attributes | TODO | TODO | +| detectors | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| attributes |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| detectors |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/resource.json) +
{
+  "type": "object",
+  "additionalProperties": false,
+  "properties": {
+    "attributes": {
+      "$ref": "common.json#/$defs/IncludeExclude"
+    },
+    "detectors": {
+      "type": "array",
+      "items": {
+        "$ref": "#/$defs/ExperimentalResourceDetector"
+      }
+    }
+  }
+}
+
+Path patterns + +* `.resource.detection/development`
+### ExperimentalResourceDetector + +No properties. + +
+JSON Schema + +[JSON Schema Source File](./schema/resource.json) +
{
+  "type": "object",
+  "additionalProperties": true,
+  "minProperties": 1,
+  "maxProperties": 1,
+  "patternProperties": {
+    ".*": {
+      "type": [
+        "object",
+        "null"
+      ]
+    }
+  }
+}
+
+Path patterns + +* `.resource.detection/development.detectors[]`
+### ExperimentalTracerConfig + +| Property | Type | Description | +|---|---|---| +| disabled | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| disabled |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/tracer_provider.json) +
{
+  "type": [
+    "object"
+  ],
+  "additionalProperties": false,
+  "properties": {
+    "disabled": {
+      "type": [
+        "boolean"
+      ]
+    }
+  },
+  "required": [
+    "disabled"
+  ]
+}
+
+Path patterns + +* `.tracer_provider.tracer_configurator/development.default_config`* `.tracer_provider.tracer_configurator/development.tracers[].config`
+### ExperimentalTracerConfigurator + +| Property | Type | Description | +|---|---|---| +| default_config | TODO | TODO | +| tracers | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| default_config |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| tracers |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/tracer_provider.json) +
{
+  "type": [
+    "object"
+  ],
+  "additionalProperties": false,
+  "properties": {
+    "default_config": {
+      "$ref": "#/$defs/ExperimentalTracerConfig"
+    },
+    "tracers": {
+      "type": "array",
+      "items": {
+        "$ref": "#/$defs/ExperimentalTracerMatcherAndConfig"
+      }
+    }
+  }
+}
+
+Path patterns + +* `.tracer_provider.tracer_configurator/development`
+### ExperimentalTracerMatcherAndConfig + +| Property | Type | Description | +|---|---|---| +| name | TODO | TODO | +| config | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| name |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| config |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/tracer_provider.json) +
{
+  "type": [
+    "object"
+  ],
+  "additionalProperties": false,
+  "properties": {
+    "name": {
+      "type": [
+        "string"
+      ]
+    },
+    "config": {
+      "$ref": "#/$defs/ExperimentalTracerConfig"
+    }
+  },
+  "required": [
+    "name",
+    "config"
+  ]
+}
+
+Path patterns + +* `.tracer_provider.tracer_configurator/development.tracers[]`
+### ExplicitBucketHistogramAggregation + +| Property | Type | Description | +|---|---|---| +| boundaries | TODO | TODO | +| record_min_max | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| boundaries |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| record_min_max |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/meter_provider.json) +
{
+  "type": [
+    "object",
+    "null"
+  ],
+  "additionalProperties": false,
+  "properties": {
+    "boundaries": {
+      "type": "array",
+      "items": {
+        "type": "number"
+      }
+    },
+    "record_min_max": {
+      "type": [
+        "boolean",
+        "null"
+      ]
+    }
+  }
+}
+
+Path patterns + +* `.meter_provider.views[].stream.aggregation.explicit_bucket_histogram`
+### ExporterDefaultHistogramAggregation + +No properties. + +
+JSON Schema + +[JSON Schema Source File](./schema/meter_provider.json) +
{
+  "type": [
+    "string",
+    "null"
+  ],
+  "enum": [
+    "explicit_bucket_histogram",
+    "base2_exponential_bucket_histogram"
+  ]
+}
+
+Path patterns + +* `.meter_provider.readers[].periodic.exporter.otlp_http.default_histogram_aggregation`* `.meter_provider.readers[].periodic.exporter.otlp_grpc.default_histogram_aggregation`* `.meter_provider.readers[].periodic.exporter.otlp_file/development.default_histogram_aggregation`
+### ExporterTemporalityPreference + +No properties. + +
+JSON Schema + +[JSON Schema Source File](./schema/meter_provider.json) +
{
+  "type": [
+    "string",
+    "null"
+  ],
+  "enum": [
+    "cumulative",
+    "delta",
+    "low_memory"
+  ]
+}
+
+Path patterns + +* `.meter_provider.readers[].periodic.exporter.otlp_http.temporality_preference`* `.meter_provider.readers[].periodic.exporter.otlp_grpc.temporality_preference`* `.meter_provider.readers[].periodic.exporter.otlp_file/development.temporality_preference`
+### IncludeExclude + +| Property | Type | Description | +|---|---|---| +| included | TODO | TODO | +| excluded | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| included |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| excluded |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/common.json) +
{
+  "type": "object",
+  "additionalProperties": false,
+  "properties": {
+    "included": {
+      "type": "array",
+      "items": {
+        "type": "string"
+      }
+    },
+    "excluded": {
+      "type": "array",
+      "items": {
+        "type": "string"
+      }
+    }
+  }
+}
+
+Path patterns + +* `.meter_provider.readers[].pull.exporter.prometheus/development.with_resource_constant_labels`* `.meter_provider.views[].stream.attribute_keys`* `.resource.detection/development.attributes`
+### InstrumentType + +No properties. + +
+JSON Schema + +[JSON Schema Source File](./schema/meter_provider.json) +
{
+  "type": [
+    "string",
+    "null"
+  ],
+  "enum": [
+    "counter",
+    "gauge",
+    "histogram",
+    "observable_counter",
+    "observable_gauge",
+    "observable_up_down_counter",
+    "up_down_counter"
+  ]
+}
+
+Path patterns + +* `.meter_provider.views[].selector.instrument_type`
+### JaegerPropagator + +No properties. + +
+JSON Schema + +[JSON Schema Source File](./schema/propagator.json) +
{
+  "type": [
+    "object",
+    "null"
+  ],
+  "additionalProperties": false
+}
+
+Path patterns + +* `.propagator.composite[].jaeger`
+### JaegerRemoteSampler + +| Property | Type | Description | +|---|---|---| +| endpoint | TODO | TODO | +| interval | TODO | TODO | +| initial_sampler | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| endpoint |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| interval |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| initial_sampler |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/tracer_provider.json) +
{
+  "type": [
+    "object",
+    "null"
+  ],
+  "additionalProperties": false,
+  "properties": {
+    "endpoint": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "interval": {
+      "type": [
+        "integer",
+        "null"
+      ],
+      "minimum": 0
+    },
+    "initial_sampler": {
+      "$ref": "#/$defs/Sampler"
+    }
+  }
+}
+
+Path patterns + +* `.tracer_provider.sampler.jaeger_remote`
+### LastValueAggregation + +No properties. + +
+JSON Schema + +[JSON Schema Source File](./schema/meter_provider.json) +
{
+  "type": [
+    "object",
+    "null"
+  ],
+  "additionalProperties": false
+}
+
+Path patterns + +* `.meter_provider.views[].stream.aggregation.last_value`
+### LoggerProvider + +| Property | Type | Description | +|---|---|---| +| processors | TODO | TODO | +| limits | TODO | TODO | +| logger_configurator/development | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| processors |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| limits |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| logger_configurator/development |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/logger_provider.json) +
{
+  "$id": "https://opentelemetry.io/otelconfig/logger_provider.json",
+  "$schema": "https://json-schema.org/draft/2020-12/schema",
+  "type": "object",
+  "additionalProperties": false,
+  "properties": {
+    "processors": {
+      "type": "array",
+      "minItems": 1,
+      "items": {
+        "$ref": "#/$defs/LogRecordProcessor"
+      }
+    },
+    "limits": {
+      "$ref": "#/$defs/LogRecordLimits"
+    },
+    "logger_configurator/development": {
+      "$ref": "#/$defs/ExperimentalLoggerConfigurator"
+    }
+  },
+  "required": [
+    "processors"
+  ],
+  "$defs": {
+    "SimpleLogRecordProcessor": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "exporter": {
+          "$ref": "#/$defs/LogRecordExporter"
+        }
+      },
+      "required": [
+        "exporter"
+      ]
+    },
+    "BatchLogRecordProcessor": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "schedule_delay": {
+          "type": [
+            "integer",
+            "null"
+          ],
+          "minimum": 0
+        },
+        "export_timeout": {
+          "type": [
+            "integer",
+            "null"
+          ],
+          "minimum": 0
+        },
+        "max_queue_size": {
+          "type": [
+            "integer",
+            "null"
+          ],
+          "exclusiveMinimum": 0
+        },
+        "max_export_batch_size": {
+          "type": [
+            "integer",
+            "null"
+          ],
+          "exclusiveMinimum": 0
+        },
+        "exporter": {
+          "$ref": "#/$defs/LogRecordExporter"
+        }
+      },
+      "required": [
+        "exporter"
+      ]
+    },
+    "LogRecordExporter": {
+      "type": "object",
+      "additionalProperties": true,
+      "minProperties": 1,
+      "maxProperties": 1,
+      "properties": {
+        "otlp_http": {
+          "$ref": "common.json#/$defs/OtlpHttpExporter"
+        },
+        "otlp_grpc": {
+          "$ref": "common.json#/$defs/OtlpGrpcExporter"
+        },
+        "otlp_file/development": {
+          "$ref": "common.json#/$defs/ExperimentalOtlpFileExporter"
+        },
+        "console": {
+          "$ref": "common.json#/$defs/ConsoleExporter"
+        }
+      },
+      "patternProperties": {
+        ".*": {
+          "type": [
+            "object",
+            "null"
+          ]
+        }
+      }
+    },
+    "LogRecordLimits": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "attribute_value_length_limit": {
+          "type": [
+            "integer",
+            "null"
+          ],
+          "minimum": 0
+        },
+        "attribute_count_limit": {
+          "type": [
+            "integer",
+            "null"
+          ],
+          "minimum": 0
+        }
+      }
+    },
+    "LogRecordProcessor": {
+      "type": "object",
+      "additionalProperties": true,
+      "minProperties": 1,
+      "maxProperties": 1,
+      "properties": {
+        "batch": {
+          "$ref": "#/$defs/BatchLogRecordProcessor"
+        },
+        "simple": {
+          "$ref": "#/$defs/SimpleLogRecordProcessor"
+        }
+      },
+      "patternProperties": {
+        ".*": {
+          "type": [
+            "object"
+          ]
+        }
+      }
+    },
+    "ExperimentalLoggerConfigurator": {
+      "type": [
+        "object"
+      ],
+      "additionalProperties": false,
+      "properties": {
+        "default_config": {
+          "$ref": "#/$defs/ExperimentalLoggerConfig"
+        },
+        "loggers": {
+          "type": "array",
+          "items": {
+            "$ref": "#/$defs/ExperimentalLoggerMatcherAndConfig"
+          }
+        }
+      }
+    },
+    "ExperimentalLoggerMatcherAndConfig": {
+      "type": [
+        "object"
+      ],
+      "additionalProperties": false,
+      "properties": {
+        "name": {
+          "type": [
+            "string"
+          ]
+        },
+        "config": {
+          "$ref": "#/$defs/ExperimentalLoggerConfig"
+        }
+      }
+    },
+    "ExperimentalLoggerConfig": {
+      "type": [
+        "object"
+      ],
+      "additionalProperties": false,
+      "properties": {
+        "disabled": {
+          "type": [
+            "boolean"
+          ]
+        }
+      }
+    }
+  }
+}
+
+Path patterns + +* `.logger_provider`
+### LogRecordExporter + +| Property | Type | Description | +|---|---|---| +| otlp_http | TODO | TODO | +| otlp_grpc | TODO | TODO | +| otlp_file/development | TODO | TODO | +| console | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| otlp_http |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| otlp_grpc |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| otlp_file/development |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| console |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/logger_provider.json) +
{
+  "type": "object",
+  "additionalProperties": true,
+  "minProperties": 1,
+  "maxProperties": 1,
+  "properties": {
+    "otlp_http": {
+      "$ref": "common.json#/$defs/OtlpHttpExporter"
+    },
+    "otlp_grpc": {
+      "$ref": "common.json#/$defs/OtlpGrpcExporter"
+    },
+    "otlp_file/development": {
+      "$ref": "common.json#/$defs/ExperimentalOtlpFileExporter"
+    },
+    "console": {
+      "$ref": "common.json#/$defs/ConsoleExporter"
+    }
+  },
+  "patternProperties": {
+    ".*": {
+      "type": [
+        "object",
+        "null"
+      ]
+    }
+  }
+}
+
+Path patterns + +* `.logger_provider.processors[].batch.exporter`* `.logger_provider.processors[].simple.exporter`
+### LogRecordLimits + +| Property | Type | Description | +|---|---|---| +| attribute_value_length_limit | TODO | TODO | +| attribute_count_limit | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| attribute_value_length_limit |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| attribute_count_limit |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/logger_provider.json) +
{
+  "type": "object",
+  "additionalProperties": false,
+  "properties": {
+    "attribute_value_length_limit": {
+      "type": [
+        "integer",
+        "null"
+      ],
+      "minimum": 0
+    },
+    "attribute_count_limit": {
+      "type": [
+        "integer",
+        "null"
+      ],
+      "minimum": 0
+    }
+  }
+}
+
+Path patterns + +* `.logger_provider.limits`
+### LogRecordProcessor + +| Property | Type | Description | +|---|---|---| +| batch | TODO | TODO | +| simple | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| batch |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| simple |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/logger_provider.json) +
{
+  "type": "object",
+  "additionalProperties": true,
+  "minProperties": 1,
+  "maxProperties": 1,
+  "properties": {
+    "batch": {
+      "$ref": "#/$defs/BatchLogRecordProcessor"
+    },
+    "simple": {
+      "$ref": "#/$defs/SimpleLogRecordProcessor"
+    }
+  },
+  "patternProperties": {
+    ".*": {
+      "type": [
+        "object"
+      ]
+    }
+  }
+}
+
+Path patterns + +* `.logger_provider.processors[]`
+### MeterProvider + +| Property | Type | Description | +|---|---|---| +| readers | TODO | TODO | +| views | TODO | TODO | +| exemplar_filter | TODO | TODO | +| meter_configurator/development | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| readers |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| views |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| exemplar_filter |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| meter_configurator/development |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/meter_provider.json) +
{
+  "$id": "https://opentelemetry.io/otelconfig/meter_provider.json",
+  "$schema": "https://json-schema.org/draft/2020-12/schema",
+  "type": "object",
+  "additionalProperties": false,
+  "properties": {
+    "readers": {
+      "type": "array",
+      "minItems": 1,
+      "items": {
+        "$ref": "#/$defs/MetricReader"
+      }
+    },
+    "views": {
+      "type": "array",
+      "items": {
+        "$ref": "#/$defs/View"
+      }
+    },
+    "exemplar_filter": {
+      "$ref": "#/$defs/ExemplarFilter"
+    },
+    "meter_configurator/development": {
+      "$ref": "#/$defs/ExperimentalMeterConfigurator"
+    }
+  },
+  "required": [
+    "readers"
+  ],
+  "$defs": {
+    "ExemplarFilter": {
+      "type": [
+        "string",
+        "null"
+      ],
+      "enum": [
+        "always_on",
+        "always_off",
+        "trace_based"
+      ]
+    },
+    "PeriodicMetricReader": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "interval": {
+          "type": [
+            "integer",
+            "null"
+          ],
+          "minimum": 0
+        },
+        "timeout": {
+          "type": [
+            "integer",
+            "null"
+          ],
+          "minimum": 0
+        },
+        "exporter": {
+          "$ref": "#/$defs/PushMetricExporter"
+        },
+        "producers": {
+          "type": "array",
+          "items": {
+            "$ref": "#/$defs/MetricProducer"
+          }
+        },
+        "cardinality_limits": {
+          "$ref": "#/$defs/CardinalityLimits"
+        }
+      },
+      "required": [
+        "exporter"
+      ]
+    },
+    "PullMetricReader": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "exporter": {
+          "$ref": "#/$defs/PullMetricExporter"
+        },
+        "producers": {
+          "type": "array",
+          "items": {
+            "$ref": "#/$defs/MetricProducer"
+          }
+        },
+        "cardinality_limits": {
+          "$ref": "#/$defs/CardinalityLimits"
+        }
+      },
+      "required": [
+        "exporter"
+      ]
+    },
+    "CardinalityLimits": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "default": {
+          "type": [
+            "integer",
+            "null"
+          ],
+          "exclusiveMinimum": 0
+        },
+        "counter": {
+          "type": [
+            "integer",
+            "null"
+          ],
+          "exclusiveMinimum": 0
+        },
+        "gauge": {
+          "type": [
+            "integer",
+            "null"
+          ],
+          "exclusiveMinimum": 0
+        },
+        "histogram": {
+          "type": [
+            "integer",
+            "null"
+          ],
+          "exclusiveMinimum": 0
+        },
+        "observable_counter": {
+          "type": [
+            "integer",
+            "null"
+          ],
+          "exclusiveMinimum": 0
+        },
+        "observable_gauge": {
+          "type": [
+            "integer",
+            "null"
+          ],
+          "exclusiveMinimum": 0
+        },
+        "observable_up_down_counter": {
+          "type": [
+            "integer",
+            "null"
+          ],
+          "exclusiveMinimum": 0
+        },
+        "up_down_counter": {
+          "type": [
+            "integer",
+            "null"
+          ],
+          "exclusiveMinimum": 0
+        }
+      }
+    },
+    "PushMetricExporter": {
+      "type": "object",
+      "additionalProperties": true,
+      "minProperties": 1,
+      "maxProperties": 1,
+      "properties": {
+        "otlp_http": {
+          "$ref": "#/$defs/OtlpHttpMetricExporter"
+        },
+        "otlp_grpc": {
+          "$ref": "#/$defs/OtlpGrpcMetricExporter"
+        },
+        "otlp_file/development": {
+          "$ref": "#/$defs/ExperimentalOtlpFileMetricExporter"
+        },
+        "console": {
+          "$ref": "common.json#/$defs/ConsoleExporter"
+        }
+      },
+      "patternProperties": {
+        ".*": {
+          "type": [
+            "object",
+            "null"
+          ]
+        }
+      }
+    },
+    "PullMetricExporter": {
+      "type": [
+        "object"
+      ],
+      "additionalProperties": true,
+      "minProperties": 1,
+      "maxProperties": 1,
+      "properties": {
+        "prometheus/development": {
+          "$ref": "#/$defs/ExperimentalPrometheusMetricExporter"
+        }
+      },
+      "patternProperties": {
+        ".*": {
+          "type": [
+            "object",
+            "null"
+          ]
+        }
+      }
+    },
+    "MetricProducer": {
+      "type": "object",
+      "additionalProperties": true,
+      "minProperties": 1,
+      "maxProperties": 1,
+      "properties": {
+        "opencensus": {
+          "$ref": "#/$defs/OpenCensusMetricProducer"
+        }
+      },
+      "patternProperties": {
+        ".*": {
+          "type": [
+            "object",
+            "null"
+          ]
+        }
+      }
+    },
+    "OpenCensusMetricProducer": {
+      "type": [
+        "object",
+        "null"
+      ],
+      "additionalProperties": false
+    },
+    "ExperimentalPrometheusMetricExporter": {
+      "type": [
+        "object",
+        "null"
+      ],
+      "additionalProperties": false,
+      "properties": {
+        "host": {
+          "type": [
+            "string",
+            "null"
+          ]
+        },
+        "port": {
+          "type": [
+            "integer",
+            "null"
+          ]
+        },
+        "without_units": {
+          "type": [
+            "boolean",
+            "null"
+          ]
+        },
+        "without_type_suffix": {
+          "type": [
+            "boolean",
+            "null"
+          ]
+        },
+        "without_scope_info": {
+          "type": [
+            "boolean",
+            "null"
+          ]
+        },
+        "with_resource_constant_labels": {
+          "$ref": "common.json#/$defs/IncludeExclude"
+        }
+      }
+    },
+    "MetricReader": {
+      "type": "object",
+      "additionalProperties": false,
+      "minProperties": 1,
+      "maxProperties": 1,
+      "properties": {
+        "periodic": {
+          "$ref": "#/$defs/PeriodicMetricReader"
+        },
+        "pull": {
+          "$ref": "#/$defs/PullMetricReader"
+        }
+      }
+    },
+    "ExporterTemporalityPreference": {
+      "type": [
+        "string",
+        "null"
+      ],
+      "enum": [
+        "cumulative",
+        "delta",
+        "low_memory"
+      ]
+    },
+    "ExporterDefaultHistogramAggregation": {
+      "type": [
+        "string",
+        "null"
+      ],
+      "enum": [
+        "explicit_bucket_histogram",
+        "base2_exponential_bucket_histogram"
+      ]
+    },
+    "OtlpHttpMetricExporter": {
+      "type": [
+        "object",
+        "null"
+      ],
+      "additionalProperties": false,
+      "properties": {
+        "endpoint": {
+          "type": [
+            "string",
+            "null"
+          ]
+        },
+        "certificate_file": {
+          "type": [
+            "string",
+            "null"
+          ]
+        },
+        "client_key_file": {
+          "type": [
+            "string",
+            "null"
+          ]
+        },
+        "client_certificate_file": {
+          "type": [
+            "string",
+            "null"
+          ]
+        },
+        "headers": {
+          "type": "array",
+          "items": {
+            "$ref": "common.json#/$defs/NameStringValuePair"
+          }
+        },
+        "headers_list": {
+          "type": [
+            "string",
+            "null"
+          ]
+        },
+        "compression": {
+          "type": [
+            "string",
+            "null"
+          ]
+        },
+        "timeout": {
+          "type": [
+            "integer",
+            "null"
+          ],
+          "minimum": 0
+        },
+        "encoding": {
+          "$ref": "common.json#/$defs/OtlpHttpEncoding"
+        },
+        "temporality_preference": {
+          "$ref": "#/$defs/ExporterTemporalityPreference"
+        },
+        "default_histogram_aggregation": {
+          "$ref": "#/$defs/ExporterDefaultHistogramAggregation"
+        }
+      }
+    },
+    "OtlpGrpcMetricExporter": {
+      "type": [
+        "object",
+        "null"
+      ],
+      "additionalProperties": false,
+      "properties": {
+        "endpoint": {
+          "type": [
+            "string",
+            "null"
+          ]
+        },
+        "certificate_file": {
+          "type": [
+            "string",
+            "null"
+          ]
+        },
+        "client_key_file": {
+          "type": [
+            "string",
+            "null"
+          ]
+        },
+        "client_certificate_file": {
+          "type": [
+            "string",
+            "null"
+          ]
+        },
+        "headers": {
+          "type": "array",
+          "items": {
+            "$ref": "common.json#/$defs/NameStringValuePair"
+          }
+        },
+        "headers_list": {
+          "type": [
+            "string",
+            "null"
+          ]
+        },
+        "compression": {
+          "type": [
+            "string",
+            "null"
+          ]
+        },
+        "timeout": {
+          "type": [
+            "integer",
+            "null"
+          ],
+          "minimum": 0
+        },
+        "insecure": {
+          "type": [
+            "boolean",
+            "null"
+          ]
+        },
+        "temporality_preference": {
+          "$ref": "#/$defs/ExporterTemporalityPreference"
+        },
+        "default_histogram_aggregation": {
+          "$ref": "#/$defs/ExporterDefaultHistogramAggregation"
+        }
+      }
+    },
+    "ExperimentalOtlpFileMetricExporter": {
+      "type": [
+        "object",
+        "null"
+      ],
+      "additionalProperties": false,
+      "properties": {
+        "output_stream": {
+          "type": [
+            "string",
+            "null"
+          ]
+        },
+        "temporality_preference": {
+          "$ref": "#/$defs/ExporterTemporalityPreference"
+        },
+        "default_histogram_aggregation": {
+          "$ref": "#/$defs/ExporterDefaultHistogramAggregation"
+        }
+      }
+    },
+    "View": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "selector": {
+          "$ref": "#/$defs/ViewSelector"
+        },
+        "stream": {
+          "$ref": "#/$defs/ViewStream"
+        }
+      }
+    },
+    "ViewSelector": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "instrument_name": {
+          "type": [
+            "string",
+            "null"
+          ]
+        },
+        "instrument_type": {
+          "$ref": "#/$defs/InstrumentType"
+        },
+        "unit": {
+          "type": [
+            "string",
+            "null"
+          ]
+        },
+        "meter_name": {
+          "type": [
+            "string",
+            "null"
+          ]
+        },
+        "meter_version": {
+          "type": [
+            "string",
+            "null"
+          ]
+        },
+        "meter_schema_url": {
+          "type": [
+            "string",
+            "null"
+          ]
+        }
+      }
+    },
+    "InstrumentType": {
+      "type": [
+        "string",
+        "null"
+      ],
+      "enum": [
+        "counter",
+        "gauge",
+        "histogram",
+        "observable_counter",
+        "observable_gauge",
+        "observable_up_down_counter",
+        "up_down_counter"
+      ]
+    },
+    "ViewStream": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "name": {
+          "type": [
+            "string",
+            "null"
+          ]
+        },
+        "description": {
+          "type": [
+            "string",
+            "null"
+          ]
+        },
+        "aggregation": {
+          "$ref": "#/$defs/Aggregation"
+        },
+        "aggregation_cardinality_limit": {
+          "type": [
+            "integer",
+            "null"
+          ],
+          "exclusiveMinimum": 0
+        },
+        "attribute_keys": {
+          "$ref": "common.json#/$defs/IncludeExclude"
+        }
+      }
+    },
+    "Aggregation": {
+      "type": "object",
+      "additionalProperties": false,
+      "minProperties": 1,
+      "maxProperties": 1,
+      "properties": {
+        "default": {
+          "$ref": "#/$defs/DefaultAggregation"
+        },
+        "drop": {
+          "$ref": "#/$defs/DropAggregation"
+        },
+        "explicit_bucket_histogram": {
+          "$ref": "#/$defs/ExplicitBucketHistogramAggregation"
+        },
+        "base2_exponential_bucket_histogram": {
+          "$ref": "#/$defs/Base2ExponentialBucketHistogramAggregation"
+        },
+        "last_value": {
+          "$ref": "#/$defs/LastValueAggregation"
+        },
+        "sum": {
+          "$ref": "#/$defs/SumAggregation"
+        }
+      }
+    },
+    "DefaultAggregation": {
+      "type": [
+        "object",
+        "null"
+      ],
+      "additionalProperties": false
+    },
+    "DropAggregation": {
+      "type": [
+        "object",
+        "null"
+      ],
+      "additionalProperties": false
+    },
+    "ExplicitBucketHistogramAggregation": {
+      "type": [
+        "object",
+        "null"
+      ],
+      "additionalProperties": false,
+      "properties": {
+        "boundaries": {
+          "type": "array",
+          "items": {
+            "type": "number"
+          }
+        },
+        "record_min_max": {
+          "type": [
+            "boolean",
+            "null"
+          ]
+        }
+      }
+    },
+    "Base2ExponentialBucketHistogramAggregation": {
+      "type": [
+        "object",
+        "null"
+      ],
+      "additionalProperties": false,
+      "properties": {
+        "max_scale": {
+          "type": [
+            "integer",
+            "null"
+          ]
+        },
+        "max_size": {
+          "type": [
+            "integer",
+            "null"
+          ]
+        },
+        "record_min_max": {
+          "type": [
+            "boolean",
+            "null"
+          ]
+        }
+      }
+    },
+    "LastValueAggregation": {
+      "type": [
+        "object",
+        "null"
+      ],
+      "additionalProperties": false
+    },
+    "SumAggregation": {
+      "type": [
+        "object",
+        "null"
+      ],
+      "additionalProperties": false
+    },
+    "ExperimentalMeterConfigurator": {
+      "type": [
+        "object"
+      ],
+      "additionalProperties": false,
+      "properties": {
+        "default_config": {
+          "$ref": "#/$defs/ExperimentalMeterConfig"
+        },
+        "meters": {
+          "type": "array",
+          "items": {
+            "$ref": "#/$defs/ExperimentalMeterMatcherAndConfig"
+          }
+        }
+      }
+    },
+    "ExperimentalMeterMatcherAndConfig": {
+      "type": [
+        "object"
+      ],
+      "additionalProperties": false,
+      "properties": {
+        "name": {
+          "type": [
+            "string"
+          ]
+        },
+        "config": {
+          "$ref": "#/$defs/ExperimentalMeterConfig"
+        }
+      }
+    },
+    "ExperimentalMeterConfig": {
+      "type": [
+        "object"
+      ],
+      "additionalProperties": false,
+      "properties": {
+        "disabled": {
+          "type": [
+            "boolean"
+          ]
+        }
+      }
+    }
+  }
+}
+
+Path patterns + +* `.meter_provider`
+### MetricProducer + +| Property | Type | Description | +|---|---|---| +| opencensus | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| opencensus |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/meter_provider.json) +
{
+  "type": "object",
+  "additionalProperties": true,
+  "minProperties": 1,
+  "maxProperties": 1,
+  "properties": {
+    "opencensus": {
+      "$ref": "#/$defs/OpenCensusMetricProducer"
+    }
+  },
+  "patternProperties": {
+    ".*": {
+      "type": [
+        "object",
+        "null"
+      ]
+    }
+  }
+}
+
+Path patterns + +* `.meter_provider.readers[].periodic.producers[]`* `.meter_provider.readers[].pull.producers[]`
+### MetricReader + +| Property | Type | Description | +|---|---|---| +| periodic | TODO | TODO | +| pull | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| periodic |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| pull |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/meter_provider.json) +
{
+  "type": "object",
+  "additionalProperties": false,
+  "minProperties": 1,
+  "maxProperties": 1,
+  "properties": {
+    "periodic": {
+      "$ref": "#/$defs/PeriodicMetricReader"
+    },
+    "pull": {
+      "$ref": "#/$defs/PullMetricReader"
+    }
+  }
+}
+
+Path patterns + +* `.meter_provider.readers[]`
+### NameStringValuePair + +| Property | Type | Description | +|---|---|---| +| name | TODO | TODO | +| value | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| name |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| value |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/common.json) +
{
+  "type": "object",
+  "additionalProperties": false,
+  "properties": {
+    "name": {
+      "type": "string"
+    },
+    "value": {
+      "type": [
+        "string",
+        "null"
+      ]
+    }
+  },
+  "required": [
+    "name",
+    "value"
+  ]
+}
+
+Path patterns + +* `.logger_provider.processors[].batch.exporter.otlp_http.headers[]`* `.logger_provider.processors[].batch.exporter.otlp_grpc.headers[]`* `.logger_provider.processors[].simple.exporter.otlp_http.headers[]`* `.logger_provider.processors[].simple.exporter.otlp_grpc.headers[]`* `.meter_provider.readers[].periodic.exporter.otlp_http.headers[]`* `.meter_provider.readers[].periodic.exporter.otlp_grpc.headers[]`* `.tracer_provider.processors[].batch.exporter.otlp_http.headers[]`* `.tracer_provider.processors[].batch.exporter.otlp_grpc.headers[]`* `.tracer_provider.processors[].simple.exporter.otlp_http.headers[]`* `.tracer_provider.processors[].simple.exporter.otlp_grpc.headers[]`
+### OpenCensusMetricProducer + +No properties. + +
+JSON Schema + +[JSON Schema Source File](./schema/meter_provider.json) +
{
+  "type": [
+    "object",
+    "null"
+  ],
+  "additionalProperties": false
+}
+
+Path patterns + +* `.meter_provider.readers[].periodic.producers[].opencensus`* `.meter_provider.readers[].pull.producers[].opencensus`
+### OpentelemetryConfiguration + +| Property | Type | Description | +|---|---|---| +| file_format | TODO | TODO | +| disabled | TODO | TODO | +| log_level | TODO | TODO | +| attribute_limits | TODO | TODO | +| logger_provider | TODO | TODO | +| meter_provider | TODO | TODO | +| propagator | TODO | TODO | +| tracer_provider | TODO | TODO | +| resource | TODO | TODO | +| instrumentation/development | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| file_format |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| disabled |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| log_level |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| attribute_limits |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| logger_provider |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| meter_provider |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| propagator |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| tracer_provider |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| resource |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| instrumentation/development |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/opentelemetry_configuration.json) +
{
+  "$id": "https://opentelemetry.io/otelconfig/opentelemetry_configuration.json",
+  "$schema": "https://json-schema.org/draft/2020-12/schema",
+  "title": "OpenTelemetryConfiguration",
+  "type": "object",
+  "additionalProperties": true,
+  "properties": {
+    "file_format": {
+      "type": "string"
+    },
+    "disabled": {
+      "type": [
+        "boolean",
+        "null"
+      ]
+    },
+    "log_level": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "attribute_limits": {
+      "$ref": "#/$defs/AttributeLimits"
+    },
+    "logger_provider": {
+      "$ref": "#/$defs/LoggerProvider"
+    },
+    "meter_provider": {
+      "$ref": "#/$defs/MeterProvider"
+    },
+    "propagator": {
+      "$ref": "#/$defs/Propagator"
+    },
+    "tracer_provider": {
+      "$ref": "#/$defs/TracerProvider"
+    },
+    "resource": {
+      "$ref": "#/$defs/Resource"
+    },
+    "instrumentation/development": {
+      "$ref": "#/$defs/ExperimentalInstrumentation"
+    }
+  },
+  "required": [
+    "file_format"
+  ],
+  "$defs": {
+    "AttributeLimits": {
+      "type": "object",
+      "additionalProperties": true,
+      "properties": {
+        "attribute_value_length_limit": {
+          "type": [
+            "integer",
+            "null"
+          ]
+        },
+        "attribute_count_limit": {
+          "type": [
+            "integer",
+            "null"
+          ]
+        }
+      }
+    },
+    "LoggerProvider": {
+      "$ref": "logger_provider.json"
+    },
+    "MeterProvider": {
+      "$ref": "meter_provider.json"
+    },
+    "TracerProvider": {
+      "$ref": "tracer_provider.json"
+    },
+    "Propagator": {
+      "$ref": "propagator.json"
+    },
+    "Resource": {
+      "$ref": "resource.json"
+    },
+    "ExperimentalInstrumentation": {
+      "$ref": "instrumentation.json"
+    }
+  }
+}
+
+Path patterns + +* `.`
+### OpenTracingPropagator + +No properties. + +
+JSON Schema + +[JSON Schema Source File](./schema/propagator.json) +
{
+  "type": [
+    "object",
+    "null"
+  ],
+  "additionalProperties": false
+}
+
+Path patterns + +* `.propagator.composite[].ottrace`
+### OtlpGrpcExporter + +| Property | Type | Description | +|---|---|---| +| endpoint | TODO | TODO | +| certificate_file | TODO | TODO | +| client_key_file | TODO | TODO | +| client_certificate_file | TODO | TODO | +| headers | TODO | TODO | +| headers_list | TODO | TODO | +| compression | TODO | TODO | +| timeout | TODO | TODO | +| insecure | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| endpoint |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| certificate_file |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| client_key_file |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| client_certificate_file |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| headers |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| headers_list |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| compression |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| timeout |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| insecure |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/common.json) +
{
+  "type": [
+    "object",
+    "null"
+  ],
+  "additionalProperties": false,
+  "properties": {
+    "endpoint": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "certificate_file": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "client_key_file": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "client_certificate_file": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "headers": {
+      "type": "array",
+      "items": {
+        "$ref": "common.json#/$defs/NameStringValuePair"
+      }
+    },
+    "headers_list": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "compression": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "timeout": {
+      "type": [
+        "integer",
+        "null"
+      ],
+      "minimum": 0
+    },
+    "insecure": {
+      "type": [
+        "boolean",
+        "null"
+      ]
+    }
+  }
+}
+
+Path patterns + +* `.logger_provider.processors[].batch.exporter.otlp_grpc`* `.logger_provider.processors[].simple.exporter.otlp_grpc`* `.tracer_provider.processors[].batch.exporter.otlp_grpc`* `.tracer_provider.processors[].simple.exporter.otlp_grpc`
+### OtlpGrpcMetricExporter + +| Property | Type | Description | +|---|---|---| +| endpoint | TODO | TODO | +| certificate_file | TODO | TODO | +| client_key_file | TODO | TODO | +| client_certificate_file | TODO | TODO | +| headers | TODO | TODO | +| headers_list | TODO | TODO | +| compression | TODO | TODO | +| timeout | TODO | TODO | +| insecure | TODO | TODO | +| temporality_preference | TODO | TODO | +| default_histogram_aggregation | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| endpoint |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| certificate_file |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| client_key_file |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| client_certificate_file |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| headers |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| headers_list |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| compression |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| timeout |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| insecure |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| temporality_preference |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| default_histogram_aggregation |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/meter_provider.json) +
{
+  "type": [
+    "object",
+    "null"
+  ],
+  "additionalProperties": false,
+  "properties": {
+    "endpoint": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "certificate_file": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "client_key_file": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "client_certificate_file": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "headers": {
+      "type": "array",
+      "items": {
+        "$ref": "common.json#/$defs/NameStringValuePair"
+      }
+    },
+    "headers_list": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "compression": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "timeout": {
+      "type": [
+        "integer",
+        "null"
+      ],
+      "minimum": 0
+    },
+    "insecure": {
+      "type": [
+        "boolean",
+        "null"
+      ]
+    },
+    "temporality_preference": {
+      "$ref": "#/$defs/ExporterTemporalityPreference"
+    },
+    "default_histogram_aggregation": {
+      "$ref": "#/$defs/ExporterDefaultHistogramAggregation"
+    }
+  }
+}
+
+Path patterns + +* `.meter_provider.readers[].periodic.exporter.otlp_grpc`
+### OtlpHttpEncoding + +No properties. + +
+JSON Schema + +[JSON Schema Source File](./schema/common.json) +
{
+  "type": [
+    "string",
+    "null"
+  ],
+  "enum": [
+    "protobuf",
+    "json"
+  ]
+}
+
+Path patterns + +* `.logger_provider.processors[].batch.exporter.otlp_http.encoding`* `.logger_provider.processors[].simple.exporter.otlp_http.encoding`* `.meter_provider.readers[].periodic.exporter.otlp_http.encoding`* `.tracer_provider.processors[].batch.exporter.otlp_http.encoding`* `.tracer_provider.processors[].simple.exporter.otlp_http.encoding`
+### OtlpHttpExporter + +| Property | Type | Description | +|---|---|---| +| endpoint | TODO | TODO | +| certificate_file | TODO | TODO | +| client_key_file | TODO | TODO | +| client_certificate_file | TODO | TODO | +| headers | TODO | TODO | +| headers_list | TODO | TODO | +| compression | TODO | TODO | +| timeout | TODO | TODO | +| encoding | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| endpoint |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| certificate_file |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| client_key_file |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| client_certificate_file |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| headers |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| headers_list |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| compression |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| timeout |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| encoding |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/common.json) +
{
+  "type": [
+    "object",
+    "null"
+  ],
+  "additionalProperties": false,
+  "properties": {
+    "endpoint": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "certificate_file": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "client_key_file": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "client_certificate_file": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "headers": {
+      "type": "array",
+      "items": {
+        "$ref": "#/$defs/NameStringValuePair"
+      }
+    },
+    "headers_list": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "compression": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "timeout": {
+      "type": [
+        "integer",
+        "null"
+      ],
+      "minimum": 0
+    },
+    "encoding": {
+      "$ref": "#/$defs/OtlpHttpEncoding"
+    }
+  }
+}
+
+Path patterns + +* `.logger_provider.processors[].batch.exporter.otlp_http`* `.logger_provider.processors[].simple.exporter.otlp_http`* `.tracer_provider.processors[].batch.exporter.otlp_http`* `.tracer_provider.processors[].simple.exporter.otlp_http`
+### OtlpHttpMetricExporter + +| Property | Type | Description | +|---|---|---| +| endpoint | TODO | TODO | +| certificate_file | TODO | TODO | +| client_key_file | TODO | TODO | +| client_certificate_file | TODO | TODO | +| headers | TODO | TODO | +| headers_list | TODO | TODO | +| compression | TODO | TODO | +| timeout | TODO | TODO | +| encoding | TODO | TODO | +| temporality_preference | TODO | TODO | +| default_histogram_aggregation | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| endpoint |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| certificate_file |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| client_key_file |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| client_certificate_file |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| headers |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| headers_list |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| compression |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| timeout |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| encoding |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| temporality_preference |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| default_histogram_aggregation |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/meter_provider.json) +
{
+  "type": [
+    "object",
+    "null"
+  ],
+  "additionalProperties": false,
+  "properties": {
+    "endpoint": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "certificate_file": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "client_key_file": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "client_certificate_file": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "headers": {
+      "type": "array",
+      "items": {
+        "$ref": "common.json#/$defs/NameStringValuePair"
+      }
+    },
+    "headers_list": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "compression": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "timeout": {
+      "type": [
+        "integer",
+        "null"
+      ],
+      "minimum": 0
+    },
+    "encoding": {
+      "$ref": "common.json#/$defs/OtlpHttpEncoding"
+    },
+    "temporality_preference": {
+      "$ref": "#/$defs/ExporterTemporalityPreference"
+    },
+    "default_histogram_aggregation": {
+      "$ref": "#/$defs/ExporterDefaultHistogramAggregation"
+    }
+  }
+}
+
+Path patterns + +* `.meter_provider.readers[].periodic.exporter.otlp_http`
+### ParentBasedSampler + +| Property | Type | Description | +|---|---|---| +| root | TODO | TODO | +| remote_parent_sampled | TODO | TODO | +| remote_parent_not_sampled | TODO | TODO | +| local_parent_sampled | TODO | TODO | +| local_parent_not_sampled | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| root |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| remote_parent_sampled |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| remote_parent_not_sampled |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| local_parent_sampled |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| local_parent_not_sampled |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/tracer_provider.json) +
{
+  "type": [
+    "object",
+    "null"
+  ],
+  "additionalProperties": false,
+  "properties": {
+    "root": {
+      "$ref": "#/$defs/Sampler"
+    },
+    "remote_parent_sampled": {
+      "$ref": "#/$defs/Sampler"
+    },
+    "remote_parent_not_sampled": {
+      "$ref": "#/$defs/Sampler"
+    },
+    "local_parent_sampled": {
+      "$ref": "#/$defs/Sampler"
+    },
+    "local_parent_not_sampled": {
+      "$ref": "#/$defs/Sampler"
+    }
+  }
+}
+
+Path patterns + +* `.tracer_provider.sampler.parent_based`
+### PeriodicMetricReader + +| Property | Type | Description | +|---|---|---| +| interval | TODO | TODO | +| timeout | TODO | TODO | +| exporter | TODO | TODO | +| producers | TODO | TODO | +| cardinality_limits | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| interval |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| timeout |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| exporter |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| producers |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| cardinality_limits |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/meter_provider.json) +
{
+  "type": "object",
+  "additionalProperties": false,
+  "properties": {
+    "interval": {
+      "type": [
+        "integer",
+        "null"
+      ],
+      "minimum": 0
+    },
+    "timeout": {
+      "type": [
+        "integer",
+        "null"
+      ],
+      "minimum": 0
+    },
+    "exporter": {
+      "$ref": "#/$defs/PushMetricExporter"
+    },
+    "producers": {
+      "type": "array",
+      "items": {
+        "$ref": "#/$defs/MetricProducer"
+      }
+    },
+    "cardinality_limits": {
+      "$ref": "#/$defs/CardinalityLimits"
+    }
+  },
+  "required": [
+    "exporter"
+  ]
+}
+
+Path patterns + +* `.meter_provider.readers[].periodic`
+### Propagator + +| Property | Type | Description | +|---|---|---| +| composite | TODO | TODO | +| composite_list | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| composite |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| composite_list |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/propagator.json) +
{
+  "$id": "https://opentelemetry.io/otelconfig/propagator.json",
+  "$schema": "https://json-schema.org/draft/2020-12/schema",
+  "type": "object",
+  "properties": {
+    "composite": {
+      "type": "array",
+      "items": {
+        "$ref": "#/$defs/TextMapPropagator"
+      }
+    },
+    "composite_list": {
+      "type": [
+        "string",
+        "null"
+      ]
+    }
+  },
+  "$defs": {
+    "TextMapPropagator": {
+      "type": "object",
+      "additionalProperties": true,
+      "minProperties": 1,
+      "maxProperties": 1,
+      "properties": {
+        "tracecontext": {
+          "$ref": "#/$defs/TraceContextPropagator"
+        },
+        "baggage": {
+          "$ref": "#/$defs/BaggagePropagator"
+        },
+        "b3": {
+          "$ref": "#/$defs/B3Propagator"
+        },
+        "b3multi": {
+          "$ref": "#/$defs/B3MultiPropagator"
+        },
+        "jaeger": {
+          "$ref": "#/$defs/JaegerPropagator"
+        },
+        "ottrace": {
+          "$ref": "#/$defs/OpenTracingPropagator"
+        }
+      },
+      "patternProperties": {
+        ".*": {
+          "type": [
+            "object",
+            "null"
+          ]
+        }
+      }
+    },
+    "TraceContextPropagator": {
+      "type": [
+        "object",
+        "null"
+      ],
+      "additionalProperties": false
+    },
+    "BaggagePropagator": {
+      "type": [
+        "object",
+        "null"
+      ],
+      "additionalProperties": false
+    },
+    "B3Propagator": {
+      "type": [
+        "object",
+        "null"
+      ],
+      "additionalProperties": false
+    },
+    "B3MultiPropagator": {
+      "type": [
+        "object",
+        "null"
+      ],
+      "additionalProperties": false
+    },
+    "JaegerPropagator": {
+      "type": [
+        "object",
+        "null"
+      ],
+      "additionalProperties": false
+    },
+    "OpenTracingPropagator": {
+      "type": [
+        "object",
+        "null"
+      ],
+      "additionalProperties": false
+    }
+  }
+}
+
+Path patterns + +* `.propagator`
+### PullMetricExporter + +| Property | Type | Description | +|---|---|---| +| prometheus/development | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| prometheus/development |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/meter_provider.json) +
{
+  "type": [
+    "object"
+  ],
+  "additionalProperties": true,
+  "minProperties": 1,
+  "maxProperties": 1,
+  "properties": {
+    "prometheus/development": {
+      "$ref": "#/$defs/ExperimentalPrometheusMetricExporter"
+    }
+  },
+  "patternProperties": {
+    ".*": {
+      "type": [
+        "object",
+        "null"
+      ]
+    }
+  }
+}
+
+Path patterns + +* `.meter_provider.readers[].pull.exporter`
+### PullMetricReader + +| Property | Type | Description | +|---|---|---| +| exporter | TODO | TODO | +| producers | TODO | TODO | +| cardinality_limits | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| exporter |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| producers |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| cardinality_limits |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/meter_provider.json) +
{
+  "type": "object",
+  "additionalProperties": false,
+  "properties": {
+    "exporter": {
+      "$ref": "#/$defs/PullMetricExporter"
+    },
+    "producers": {
+      "type": "array",
+      "items": {
+        "$ref": "#/$defs/MetricProducer"
+      }
+    },
+    "cardinality_limits": {
+      "$ref": "#/$defs/CardinalityLimits"
+    }
+  },
+  "required": [
+    "exporter"
+  ]
+}
+
+Path patterns + +* `.meter_provider.readers[].pull`
+### PushMetricExporter + +| Property | Type | Description | +|---|---|---| +| otlp_http | TODO | TODO | +| otlp_grpc | TODO | TODO | +| otlp_file/development | TODO | TODO | +| console | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| otlp_http |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| otlp_grpc |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| otlp_file/development |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| console |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/meter_provider.json) +
{
+  "type": "object",
+  "additionalProperties": true,
+  "minProperties": 1,
+  "maxProperties": 1,
+  "properties": {
+    "otlp_http": {
+      "$ref": "#/$defs/OtlpHttpMetricExporter"
+    },
+    "otlp_grpc": {
+      "$ref": "#/$defs/OtlpGrpcMetricExporter"
+    },
+    "otlp_file/development": {
+      "$ref": "#/$defs/ExperimentalOtlpFileMetricExporter"
+    },
+    "console": {
+      "$ref": "common.json#/$defs/ConsoleExporter"
+    }
+  },
+  "patternProperties": {
+    ".*": {
+      "type": [
+        "object",
+        "null"
+      ]
+    }
+  }
+}
+
+Path patterns + +* `.meter_provider.readers[].periodic.exporter`
+### Resource + +| Property | Type | Description | +|---|---|---| +| attributes | TODO | TODO | +| detection/development | TODO | TODO | +| schema_url | TODO | TODO | +| attributes_list | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| attributes |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| detection/development |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| schema_url |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| attributes_list |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/resource.json) +
{
+  "$id": "https://opentelemetry.io/otelconfig/resource.json",
+  "$schema": "https://json-schema.org/draft/2020-12/schema",
+  "type": "object",
+  "additionalProperties": false,
+  "properties": {
+    "attributes": {
+      "type": "array",
+      "items": {
+        "$ref": "#/$defs/AttributeNameValue"
+      }
+    },
+    "detection/development": {
+      "$ref": "#/$defs/ExperimentalResourceDetection"
+    },
+    "schema_url": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "attributes_list": {
+      "type": [
+        "string",
+        "null"
+      ]
+    }
+  },
+  "$defs": {
+    "AttributeNameValue": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "name": {
+          "type": "string"
+        },
+        "value": {
+          "oneOf": [
+            {
+              "type": "string"
+            },
+            {
+              "type": "number"
+            },
+            {
+              "type": "boolean"
+            },
+            {
+              "type": "null"
+            },
+            {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
+            {
+              "type": "array",
+              "items": {
+                "type": "boolean"
+              }
+            },
+            {
+              "type": "array",
+              "items": {
+                "type": "number"
+              }
+            }
+          ]
+        },
+        "type": {
+          "$ref": "#/$defs/AttributeType"
+        }
+      },
+      "required": [
+        "name",
+        "value"
+      ]
+    },
+    "AttributeType": {
+      "type": [
+        "string",
+        "null"
+      ],
+      "enum": [
+        null,
+        "string",
+        "bool",
+        "int",
+        "double",
+        "string_array",
+        "bool_array",
+        "int_array",
+        "double_array"
+      ]
+    },
+    "ExperimentalResourceDetection": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "attributes": {
+          "$ref": "common.json#/$defs/IncludeExclude"
+        },
+        "detectors": {
+          "type": "array",
+          "items": {
+            "$ref": "#/$defs/ExperimentalResourceDetector"
+          }
+        }
+      }
+    },
+    "ExperimentalResourceDetector": {
+      "type": "object",
+      "additionalProperties": true,
+      "minProperties": 1,
+      "maxProperties": 1,
+      "patternProperties": {
+        ".*": {
+          "type": [
+            "object",
+            "null"
+          ]
+        }
+      }
+    }
+  }
+}
+
+Path patterns + +* `.resource`
+### Sampler + +| Property | Type | Description | +|---|---|---| +| always_off | TODO | TODO | +| always_on | TODO | TODO | +| jaeger_remote | TODO | TODO | +| parent_based | TODO | TODO | +| trace_id_ratio_based | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| always_off |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| always_on |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| jaeger_remote |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| parent_based |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| trace_id_ratio_based |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/tracer_provider.json) +
{
+  "type": "object",
+  "additionalProperties": true,
+  "minProperties": 1,
+  "maxProperties": 1,
+  "properties": {
+    "always_off": {
+      "$ref": "#/$defs/AlwaysOffSampler"
+    },
+    "always_on": {
+      "$ref": "#/$defs/AlwaysOnSampler"
+    },
+    "jaeger_remote": {
+      "$ref": "#/$defs/JaegerRemoteSampler"
+    },
+    "parent_based": {
+      "$ref": "#/$defs/ParentBasedSampler"
+    },
+    "trace_id_ratio_based": {
+      "$ref": "#/$defs/TraceIdRatioBasedSampler"
+    }
+  },
+  "patternProperties": {
+    ".*": {
+      "type": [
+        "object",
+        "null"
+      ]
+    }
+  }
+}
+
+Path patterns + +* `.tracer_provider.sampler`
+### SimpleLogRecordProcessor + +| Property | Type | Description | +|---|---|---| +| exporter | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| exporter |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/logger_provider.json) +
{
+  "type": "object",
+  "additionalProperties": false,
+  "properties": {
+    "exporter": {
+      "$ref": "#/$defs/LogRecordExporter"
+    }
+  },
+  "required": [
+    "exporter"
+  ]
+}
+
+Path patterns + +* `.logger_provider.processors[].simple`
+### SimpleSpanProcessor + +| Property | Type | Description | +|---|---|---| +| exporter | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| exporter |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/tracer_provider.json) +
{
+  "type": "object",
+  "additionalProperties": false,
+  "properties": {
+    "exporter": {
+      "$ref": "#/$defs/SpanExporter"
+    }
+  },
+  "required": [
+    "exporter"
+  ]
+}
+
+Path patterns + +* `.tracer_provider.processors[].simple`
+### SpanExporter + +| Property | Type | Description | +|---|---|---| +| otlp_http | TODO | TODO | +| otlp_grpc | TODO | TODO | +| otlp_file/development | TODO | TODO | +| console | TODO | TODO | +| zipkin | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| otlp_http |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| otlp_grpc |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| otlp_file/development |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| console |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| zipkin |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/tracer_provider.json) +
{
+  "type": "object",
+  "additionalProperties": true,
+  "minProperties": 1,
+  "maxProperties": 1,
+  "properties": {
+    "otlp_http": {
+      "$ref": "common.json#/$defs/OtlpHttpExporter"
+    },
+    "otlp_grpc": {
+      "$ref": "common.json#/$defs/OtlpGrpcExporter"
+    },
+    "otlp_file/development": {
+      "$ref": "common.json#/$defs/ExperimentalOtlpFileExporter"
+    },
+    "console": {
+      "$ref": "common.json#/$defs/ConsoleExporter"
+    },
+    "zipkin": {
+      "$ref": "#/$defs/ZipkinSpanExporter"
+    }
+  },
+  "patternProperties": {
+    ".*": {
+      "type": [
+        "object",
+        "null"
+      ]
+    }
+  }
+}
+
+Path patterns + +* `.tracer_provider.processors[].batch.exporter`* `.tracer_provider.processors[].simple.exporter`
+### SpanLimits + +| Property | Type | Description | +|---|---|---| +| attribute_value_length_limit | TODO | TODO | +| attribute_count_limit | TODO | TODO | +| event_count_limit | TODO | TODO | +| link_count_limit | TODO | TODO | +| event_attribute_count_limit | TODO | TODO | +| link_attribute_count_limit | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| attribute_value_length_limit |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| attribute_count_limit |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| event_count_limit |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| link_count_limit |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| event_attribute_count_limit |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| link_attribute_count_limit |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/tracer_provider.json) +
{
+  "type": "object",
+  "additionalProperties": false,
+  "properties": {
+    "attribute_value_length_limit": {
+      "type": [
+        "integer",
+        "null"
+      ],
+      "minimum": 0
+    },
+    "attribute_count_limit": {
+      "type": [
+        "integer",
+        "null"
+      ],
+      "minimum": 0
+    },
+    "event_count_limit": {
+      "type": [
+        "integer",
+        "null"
+      ],
+      "minimum": 0
+    },
+    "link_count_limit": {
+      "type": [
+        "integer",
+        "null"
+      ],
+      "minimum": 0
+    },
+    "event_attribute_count_limit": {
+      "type": [
+        "integer",
+        "null"
+      ],
+      "minimum": 0
+    },
+    "link_attribute_count_limit": {
+      "type": [
+        "integer",
+        "null"
+      ],
+      "minimum": 0
+    }
+  }
+}
+
+Path patterns + +* `.tracer_provider.limits`
+### SpanProcessor + +| Property | Type | Description | +|---|---|---| +| batch | TODO | TODO | +| simple | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| batch |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| simple |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/tracer_provider.json) +
{
+  "type": "object",
+  "additionalProperties": true,
+  "minProperties": 1,
+  "maxProperties": 1,
+  "properties": {
+    "batch": {
+      "$ref": "#/$defs/BatchSpanProcessor"
+    },
+    "simple": {
+      "$ref": "#/$defs/SimpleSpanProcessor"
+    }
+  },
+  "patternProperties": {
+    ".*": {
+      "type": [
+        "object",
+        "null"
+      ]
+    }
+  }
+}
+
+Path patterns + +* `.tracer_provider.processors[]`
+### SumAggregation + +No properties. + +
+JSON Schema + +[JSON Schema Source File](./schema/meter_provider.json) +
{
+  "type": [
+    "object",
+    "null"
+  ],
+  "additionalProperties": false
+}
+
+Path patterns + +* `.meter_provider.views[].stream.aggregation.sum`
+### TextMapPropagator + +| Property | Type | Description | +|---|---|---| +| tracecontext | TODO | TODO | +| baggage | TODO | TODO | +| b3 | TODO | TODO | +| b3multi | TODO | TODO | +| jaeger | TODO | TODO | +| ottrace | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| tracecontext |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| baggage |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| b3 |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| b3multi |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| jaeger |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| ottrace |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/propagator.json) +
{
+  "type": "object",
+  "additionalProperties": true,
+  "minProperties": 1,
+  "maxProperties": 1,
+  "properties": {
+    "tracecontext": {
+      "$ref": "#/$defs/TraceContextPropagator"
+    },
+    "baggage": {
+      "$ref": "#/$defs/BaggagePropagator"
+    },
+    "b3": {
+      "$ref": "#/$defs/B3Propagator"
+    },
+    "b3multi": {
+      "$ref": "#/$defs/B3MultiPropagator"
+    },
+    "jaeger": {
+      "$ref": "#/$defs/JaegerPropagator"
+    },
+    "ottrace": {
+      "$ref": "#/$defs/OpenTracingPropagator"
+    }
+  },
+  "patternProperties": {
+    ".*": {
+      "type": [
+        "object",
+        "null"
+      ]
+    }
+  }
+}
+
+Path patterns + +* `.propagator.composite[]`
+### TraceContextPropagator + +No properties. + +
+JSON Schema + +[JSON Schema Source File](./schema/propagator.json) +
{
+  "type": [
+    "object",
+    "null"
+  ],
+  "additionalProperties": false
+}
+
+Path patterns + +* `.propagator.composite[].tracecontext`
+### TraceIdRatioBasedSampler + +| Property | Type | Description | +|---|---|---| +| ratio | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| ratio |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/tracer_provider.json) +
{
+  "type": [
+    "object",
+    "null"
+  ],
+  "additionalProperties": false,
+  "properties": {
+    "ratio": {
+      "type": [
+        "number",
+        "null"
+      ]
+    }
+  }
+}
+
+Path patterns + +* `.tracer_provider.sampler.trace_id_ratio_based`
+### TracerProvider + +| Property | Type | Description | +|---|---|---| +| processors | TODO | TODO | +| limits | TODO | TODO | +| sampler | TODO | TODO | +| tracer_configurator/development | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| processors |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| limits |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| sampler |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| tracer_configurator/development |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/tracer_provider.json) +
{
+  "$id": "https://opentelemetry.io/otelconfig/tracer_provider.json",
+  "$schema": "https://json-schema.org/draft/2020-12/schema",
+  "type": "object",
+  "additionalProperties": false,
+  "properties": {
+    "processors": {
+      "type": "array",
+      "minItems": 1,
+      "items": {
+        "$ref": "#/$defs/SpanProcessor"
+      }
+    },
+    "limits": {
+      "$ref": "#/$defs/SpanLimits"
+    },
+    "sampler": {
+      "$ref": "#/$defs/Sampler"
+    },
+    "tracer_configurator/development": {
+      "$ref": "#/$defs/ExperimentalTracerConfigurator"
+    }
+  },
+  "required": [
+    "processors"
+  ],
+  "$defs": {
+    "BatchSpanProcessor": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "schedule_delay": {
+          "type": [
+            "integer",
+            "null"
+          ],
+          "minimum": 0
+        },
+        "export_timeout": {
+          "type": [
+            "integer",
+            "null"
+          ],
+          "minimum": 0
+        },
+        "max_queue_size": {
+          "type": [
+            "integer",
+            "null"
+          ],
+          "exclusiveMinimum": 0
+        },
+        "max_export_batch_size": {
+          "type": [
+            "integer",
+            "null"
+          ],
+          "exclusiveMinimum": 0
+        },
+        "exporter": {
+          "$ref": "#/$defs/SpanExporter"
+        }
+      },
+      "required": [
+        "exporter"
+      ]
+    },
+    "Sampler": {
+      "type": "object",
+      "additionalProperties": true,
+      "minProperties": 1,
+      "maxProperties": 1,
+      "properties": {
+        "always_off": {
+          "$ref": "#/$defs/AlwaysOffSampler"
+        },
+        "always_on": {
+          "$ref": "#/$defs/AlwaysOnSampler"
+        },
+        "jaeger_remote": {
+          "$ref": "#/$defs/JaegerRemoteSampler"
+        },
+        "parent_based": {
+          "$ref": "#/$defs/ParentBasedSampler"
+        },
+        "trace_id_ratio_based": {
+          "$ref": "#/$defs/TraceIdRatioBasedSampler"
+        }
+      },
+      "patternProperties": {
+        ".*": {
+          "type": [
+            "object",
+            "null"
+          ]
+        }
+      }
+    },
+    "AlwaysOffSampler": {
+      "type": [
+        "object",
+        "null"
+      ],
+      "additionalProperties": false
+    },
+    "AlwaysOnSampler": {
+      "type": [
+        "object",
+        "null"
+      ],
+      "additionalProperties": false
+    },
+    "JaegerRemoteSampler": {
+      "type": [
+        "object",
+        "null"
+      ],
+      "additionalProperties": false,
+      "properties": {
+        "endpoint": {
+          "type": [
+            "string",
+            "null"
+          ]
+        },
+        "interval": {
+          "type": [
+            "integer",
+            "null"
+          ],
+          "minimum": 0
+        },
+        "initial_sampler": {
+          "$ref": "#/$defs/Sampler"
+        }
+      }
+    },
+    "ParentBasedSampler": {
+      "type": [
+        "object",
+        "null"
+      ],
+      "additionalProperties": false,
+      "properties": {
+        "root": {
+          "$ref": "#/$defs/Sampler"
+        },
+        "remote_parent_sampled": {
+          "$ref": "#/$defs/Sampler"
+        },
+        "remote_parent_not_sampled": {
+          "$ref": "#/$defs/Sampler"
+        },
+        "local_parent_sampled": {
+          "$ref": "#/$defs/Sampler"
+        },
+        "local_parent_not_sampled": {
+          "$ref": "#/$defs/Sampler"
+        }
+      }
+    },
+    "TraceIdRatioBasedSampler": {
+      "type": [
+        "object",
+        "null"
+      ],
+      "additionalProperties": false,
+      "properties": {
+        "ratio": {
+          "type": [
+            "number",
+            "null"
+          ]
+        }
+      }
+    },
+    "SimpleSpanProcessor": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "exporter": {
+          "$ref": "#/$defs/SpanExporter"
+        }
+      },
+      "required": [
+        "exporter"
+      ]
+    },
+    "SpanExporter": {
+      "type": "object",
+      "additionalProperties": true,
+      "minProperties": 1,
+      "maxProperties": 1,
+      "properties": {
+        "otlp_http": {
+          "$ref": "common.json#/$defs/OtlpHttpExporter"
+        },
+        "otlp_grpc": {
+          "$ref": "common.json#/$defs/OtlpGrpcExporter"
+        },
+        "otlp_file/development": {
+          "$ref": "common.json#/$defs/ExperimentalOtlpFileExporter"
+        },
+        "console": {
+          "$ref": "common.json#/$defs/ConsoleExporter"
+        },
+        "zipkin": {
+          "$ref": "#/$defs/ZipkinSpanExporter"
+        }
+      },
+      "patternProperties": {
+        ".*": {
+          "type": [
+            "object",
+            "null"
+          ]
+        }
+      }
+    },
+    "SpanLimits": {
+      "type": "object",
+      "additionalProperties": false,
+      "properties": {
+        "attribute_value_length_limit": {
+          "type": [
+            "integer",
+            "null"
+          ],
+          "minimum": 0
+        },
+        "attribute_count_limit": {
+          "type": [
+            "integer",
+            "null"
+          ],
+          "minimum": 0
+        },
+        "event_count_limit": {
+          "type": [
+            "integer",
+            "null"
+          ],
+          "minimum": 0
+        },
+        "link_count_limit": {
+          "type": [
+            "integer",
+            "null"
+          ],
+          "minimum": 0
+        },
+        "event_attribute_count_limit": {
+          "type": [
+            "integer",
+            "null"
+          ],
+          "minimum": 0
+        },
+        "link_attribute_count_limit": {
+          "type": [
+            "integer",
+            "null"
+          ],
+          "minimum": 0
+        }
+      }
+    },
+    "SpanProcessor": {
+      "type": "object",
+      "additionalProperties": true,
+      "minProperties": 1,
+      "maxProperties": 1,
+      "properties": {
+        "batch": {
+          "$ref": "#/$defs/BatchSpanProcessor"
+        },
+        "simple": {
+          "$ref": "#/$defs/SimpleSpanProcessor"
+        }
+      },
+      "patternProperties": {
+        ".*": {
+          "type": [
+            "object",
+            "null"
+          ]
+        }
+      }
+    },
+    "ZipkinSpanExporter": {
+      "type": [
+        "object",
+        "null"
+      ],
+      "additionalProperties": false,
+      "properties": {
+        "endpoint": {
+          "type": [
+            "string",
+            "null"
+          ]
+        },
+        "timeout": {
+          "type": [
+            "integer",
+            "null"
+          ],
+          "minimum": 0
+        }
+      }
+    },
+    "ExperimentalTracerConfigurator": {
+      "type": [
+        "object"
+      ],
+      "additionalProperties": false,
+      "properties": {
+        "default_config": {
+          "$ref": "#/$defs/ExperimentalTracerConfig"
+        },
+        "tracers": {
+          "type": "array",
+          "items": {
+            "$ref": "#/$defs/ExperimentalTracerMatcherAndConfig"
+          }
+        }
+      }
+    },
+    "ExperimentalTracerMatcherAndConfig": {
+      "type": [
+        "object"
+      ],
+      "additionalProperties": false,
+      "properties": {
+        "name": {
+          "type": [
+            "string"
+          ]
+        },
+        "config": {
+          "$ref": "#/$defs/ExperimentalTracerConfig"
+        }
+      },
+      "required": [
+        "name",
+        "config"
+      ]
+    },
+    "ExperimentalTracerConfig": {
+      "type": [
+        "object"
+      ],
+      "additionalProperties": false,
+      "properties": {
+        "disabled": {
+          "type": [
+            "boolean"
+          ]
+        }
+      },
+      "required": [
+        "disabled"
+      ]
+    }
+  }
+}
+
+Path patterns + +* `.tracer_provider`
+### View + +| Property | Type | Description | +|---|---|---| +| selector | TODO | TODO | +| stream | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| selector |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| stream |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/meter_provider.json) +
{
+  "type": "object",
+  "additionalProperties": false,
+  "properties": {
+    "selector": {
+      "$ref": "#/$defs/ViewSelector"
+    },
+    "stream": {
+      "$ref": "#/$defs/ViewStream"
+    }
+  }
+}
+
+Path patterns + +* `.meter_provider.views[]`
+### ViewSelector + +| Property | Type | Description | +|---|---|---| +| instrument_name | TODO | TODO | +| instrument_type | TODO | TODO | +| unit | TODO | TODO | +| meter_name | TODO | TODO | +| meter_version | TODO | TODO | +| meter_schema_url | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| instrument_name |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| instrument_type |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| unit |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| meter_name |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| meter_version |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| meter_schema_url |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/meter_provider.json) +
{
+  "type": "object",
+  "additionalProperties": false,
+  "properties": {
+    "instrument_name": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "instrument_type": {
+      "$ref": "#/$defs/InstrumentType"
+    },
+    "unit": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "meter_name": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "meter_version": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "meter_schema_url": {
+      "type": [
+        "string",
+        "null"
+      ]
+    }
+  }
+}
+
+Path patterns + +* `.meter_provider.views[].selector`
+### ViewStream + +| Property | Type | Description | +|---|---|---| +| name | TODO | TODO | +| description | TODO | TODO | +| aggregation | TODO | TODO | +| aggregation_cardinality_limit | TODO | TODO | +| attribute_keys | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| name |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| description |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| aggregation |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| aggregation_cardinality_limit |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| attribute_keys |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/meter_provider.json) +
{
+  "type": "object",
+  "additionalProperties": false,
+  "properties": {
+    "name": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "description": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "aggregation": {
+      "$ref": "#/$defs/Aggregation"
+    },
+    "aggregation_cardinality_limit": {
+      "type": [
+        "integer",
+        "null"
+      ],
+      "exclusiveMinimum": 0
+    },
+    "attribute_keys": {
+      "$ref": "common.json#/$defs/IncludeExclude"
+    }
+  }
+}
+
+Path patterns + +* `.meter_provider.views[].stream`
+### ZipkinSpanExporter + +| Property | Type | Description | +|---|---|---| +| endpoint | TODO | TODO | +| timeout | TODO | TODO | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| endpoint |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| timeout |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | + +
+JSON Schema + +[JSON Schema Source File](./schema/tracer_provider.json) +
{
+  "type": [
+    "object",
+    "null"
+  ],
+  "additionalProperties": false,
+  "properties": {
+    "endpoint": {
+      "type": [
+        "string",
+        "null"
+      ]
+    },
+    "timeout": {
+      "type": [
+        "integer",
+        "null"
+      ],
+      "minimum": 0
+    }
+  }
+}
+
+Path patterns + +* `.tracer_provider.processors[].batch.exporter.zipkin`* `.tracer_provider.processors[].simple.exporter.zipkin`
diff --git a/scripts1/fix-meta-schema.js b/scripts1/fix-meta-schema.js index 29d8cc11..e60be599 100644 --- a/scripts1/fix-meta-schema.js +++ b/scripts1/fix-meta-schema.js @@ -1,116 +1,12 @@ import { - readMetaSchemaDoc, - metaSchemaFileName, - readJsonSchemaTypes, - MetaSchemaProperty, - writeMetaSchemaTypes, -} from "./schema.js"; + readAndFixMetaSchemaTypes, writeMetaSchemaTypes +} from "./meta-schema.js"; -// Track messages to be written to console -const messages = []; - -// Read meta schema and sanitize -const metaSchemaDoc = readMetaSchemaDoc(); -const metaSchemaTypes = []; -if (Array.isArray(metaSchemaDoc)) { - metaSchemaDoc.forEach(rawMetaSchemaType => { - const type = rawMetaSchemaType['type']; - - if (typeof type !== 'string') { - messages.push(`${metaSchemaFileName} contains entry ${JSON.stringify(rawMetaSchemaType)} with invalid type. Ignoring type.`); - return; - } - - const rawProperties = rawMetaSchemaType['properties']; - const metaSchemaProperties = []; - - if (Array.isArray(rawProperties)) { - rawProperties.forEach(rawProperty => { - const property = rawProperty['property']; - if (typeof property !== 'string') { - messages.push(`${metaSchemaFileName} type ${type} contains property ${JSON.stringify(rawProperty)} with invalid property. Ignoring property.`); - return; - } - - let description = rawProperty['description']; - if (typeof description !== 'string') { - messages.push(`${metaSchemaFileName} type ${type} contains property ${property} with invalid description. Ignoring description.`); - description = ''; - } - - metaSchemaProperties.push(new MetaSchemaProperty(property, description)); - }); - } else { - messages.push(`${metaSchemaFileName} contains entry ${JSON.stringify(rawMetaSchemaType)} with invalid properties. Ignoring properties.`); - } - - metaSchemaTypes.push(new MetaSchemaType(type, metaSchemaProperties)); - }); -} else { - messages.push(`${metaSchemaFileName} must be array of types.`); -} - -const metaSchemaTypesByType = {}; -metaSchemaTypes.forEach(type => metaSchemaTypesByType[type.type] = type); - -const jsonSchemaTypesByType = {}; -readJsonSchemaTypes().forEach(type => jsonSchemaTypesByType[type.type] = type); - -// Find any types in both json schema and meta schema and make sure all json schema properties match -Object.entries(metaSchemaTypesByType).forEach(([type, metaSchemaType]) => { - const jsonSchemaType = jsonSchemaTypesByType[type]; - if (!jsonSchemaType) { - return; - } - const sanitizedProperties = []; - const jsonSchemaProperties = jsonSchemaType.toMetaSchemaType().properties; - - // Remove properties in meta schema and not in json schema - const jsonSchemaPropertiesByProperty = {}; - jsonSchemaProperties.forEach(property => jsonSchemaPropertiesByProperty[property.property] = property); - metaSchemaType.properties.forEach(property => { - const propertyName = property.property; - if (!(propertyName in jsonSchemaPropertiesByProperty)) { - messages.push(`Type ${type} has property ${propertyName} in meta schema and not in JSON schema. Removing.`); - return; - } - sanitizedProperties.push(property); - }); - - // Add properties in json schema and not in meta schema - const metaSchemaPropertiesByProperty = {}; - metaSchemaType.properties.forEach(property => metaSchemaPropertiesByProperty[property.property] = property); - jsonSchemaProperties.forEach(property => { - const propertyName = property.property; - if (!(propertyName in metaSchemaPropertiesByProperty)) { - messages.push(`Type ${type} has property ${propertyName} in JSON schema and not in meta schema. Adding.`); - sanitizedProperties.push(property); - } - }); - - metaSchemaType.properties = sanitizedProperties; -}); - -// Find and remove any types in meta schema not in json schema -Object.entries(metaSchemaTypesByType).forEach(([type, unused]) => { - if (!(type in jsonSchemaTypesByType)) { - messages.push(`Type ${type} found in ${metaSchemaFileName} but not in JSON schema. Removing.`); - delete metaSchemaTypesByType[type]; - } -}); - -// Find and add any types in json schema not in meta schema -Object.entries(jsonSchemaTypesByType).forEach(([type, jsonSchemaType]) => { - if (!(type in metaSchemaTypesByType)) { - messages.push(`Type ${type} in ${jsonSchemaType.file} and path ${jsonSchemaType.jsonSchemaPath} is missing from ${metaSchemaFileName}. Adding.`); - const metaSchemaType = jsonSchemaType.toMetaSchemaType(); - metaSchemaTypesByType[metaSchemaType.type] = metaSchemaType; - } -}); +const { messages, types } = readAndFixMetaSchemaTypes(); // Sort lexigraphically and write to meta schema -let sortedMetaSchemaTypes = Object.values(metaSchemaTypesByType).map(type => type.toJson()); +let sortedMetaSchemaTypes = types.map(type => type.toJson()); sortedMetaSchemaTypes.sort((a, b) => a.type.localeCompare(b.type)); writeMetaSchemaTypes(sortedMetaSchemaTypes); diff --git a/scripts1/generate-descriptions.js b/scripts1/generate-descriptions.js index 89ccd7bb..9e15848f 100644 --- a/scripts1/generate-descriptions.js +++ b/scripts1/generate-descriptions.js @@ -1,6 +1,6 @@ import { readJsonSchemaTypes -} from "./schema.js"; +} from "./json-schema.js"; const jsonSchemaTypes = readJsonSchemaTypes(); diff --git a/scripts1/generate-markdown.js b/scripts1/generate-markdown.js new file mode 100644 index 00000000..a8923023 --- /dev/null +++ b/scripts1/generate-markdown.js @@ -0,0 +1,74 @@ +import { + readJsonSchemaTypes +} from "./json-schema.js"; +import {readAndFixMetaSchemaTypes} from "./meta-schema.js"; +import fs from "node:fs"; +import {markdownDocPath} from "./util.js"; + +const { messages, types } = readAndFixMetaSchemaTypes(); + +if (messages.length > 0) { + throw new Error("Meta schema has problems. Please run fix-meta-schema and try again."); +} + +const jsonSchemaTypesByType = {}; +readJsonSchemaTypes().forEach(type => jsonSchemaTypesByType[type.type] = type); + +const output = []; +const languages = ['c++', 'c#', 'erlang', 'go', 'java', 'js', 'php', 'python', 'ruby', 'rust', 'swift'] + +types.sort((a, b) => a.type.localeCompare(b.type)); +types.forEach(metaSchemaType => { + const type = metaSchemaType.type; + const jsonSchemaType = jsonSchemaTypesByType[type]; + if (!jsonSchemaType) { + throw new Error(`JSON schema type not found for meta schema type ${type}.`); + } + + // Heading + output.push(`### ${type} \n\n`); + + // Properties + if (metaSchemaType.properties.length === 0) { + output.push("No properties.\n\n"); + } else { + // Property type and description table + output.push(`| Property | Type | Description |\n`); + output.push("|---|---|---|\n"); + metaSchemaType.properties.forEach(property => { + output.push(`| ${property.property} | TODO | ${property.description} |\n`); + }); + output.push('\n'); + + // Property language support table + output.push('| Property |') + languages.forEach(language => output.push(`${language} |`)); + output.push('\n'); + output.push('|---|'); + languages.forEach(language => output.push(`---|`)); + output.push('\n'); + metaSchemaType.properties.forEach(property => { + output.push(`| ${property.property} |`); + languages.forEach(language => output.push(`TODO |`)); + output.push('\n'); + }); + output.push('\n'); + } + + // JSON schema collapsible section + output.push(`
\n`); + output.push(`JSON Schema\n\n`); + output.push(`[JSON Schema Source File](./schema/${jsonSchemaType.file})\n`) + output.push(`
${JSON.stringify(jsonSchemaType.schema, null, 2)}
`); + output.push(`
\n`); + + // Path patterns collapsible section + output.push(`
\n`); + output.push(`Path patterns\n\n`); + jsonSchemaType.pathPatterns.forEach(pathPattern => { + output.push(`* \`${pathPattern}\``); + }); + output.push(`
\n`); +}); + +fs.writeFileSync(markdownDocPath, output.join("")); diff --git a/scripts1/schema.js b/scripts1/json-schema.js similarity index 76% rename from scripts1/schema.js rename to scripts1/json-schema.js index 46b7c43a..e861b13c 100644 --- a/scripts1/schema.js +++ b/scripts1/json-schema.js @@ -1,23 +1,8 @@ -import path from 'path'; -import { fileURLToPath } from 'url'; import fs from 'fs'; -import yaml from 'yaml'; +import {MetaSchemaProperty, MetaSchemaType} from "./meta-schema.js"; +import {schemaDirPath} from "./util.js"; -const __filename = fileURLToPath(import.meta.url); -const __dirname = path.dirname(__filename); - -export const metaSchemaFileName = "meta_schema.yaml"; -const schemaDirPath = __dirname + "/../schema/"; -const metaSchemaPath = schemaDirPath + metaSchemaFileName; - -export function readMetaSchemaDoc() { - const metaSchemaContent = fs.readFileSync(metaSchemaPath, "utf-8"); - return yaml.parse(metaSchemaContent); -}; - -export function writeMetaSchemaTypes(metaSchemaTypes) { - fs.writeFileSync(metaSchemaPath, yaml.stringify(metaSchemaTypes, { lineWidth: 0 })); -} +const localDefPrefix = '#/$defs/'; export function readJsonSchemaTypes() { const schemasByType = {}; @@ -69,8 +54,6 @@ export function readJsonSchemaTypes() { return Object.values(schemasByType); } -const localDefPrefix = '#/$defs/'; - function resolveRef(ref, schemasByType) { if (ref.startsWith(localDefPrefix)) { const type = ref.substring(localDefPrefix.length); @@ -88,9 +71,6 @@ function getDefs(jsonSchema) { } function recursiveAddPathPatterns(currentJsonSchemaType, schemasByType, currentPath, parentTypes) { - if (currentJsonSchemaType.type === 'Sampler') { - console.log("Sampler!"); - } currentJsonSchemaType.pathPatterns.push(currentPath); const properties = currentJsonSchemaType.schema['properties']; @@ -161,34 +141,3 @@ export class JsonSchemaType { return new MetaSchemaType(this.type, properties); } } - -export class MetaSchemaProperty { - property; - description; - - constructor(property, description) { - this.property = property; - this.description = description; - } - - toJson() { - return { property: this.property, description: this.description }; - } -} - -export class MetaSchemaType { - type; - properties; - - constructor(type, properties) { - this.type = type; - this.properties = properties; - } - - toJson() { - const properties = this.properties.map(property => property.toJson()); - properties.sort((a, b) => a.property.localeCompare(b.property)); - - return { type: this.type, properties: this.properties }; - } -} diff --git a/scripts1/meta-schema.js b/scripts1/meta-schema.js new file mode 100644 index 00000000..e6788e00 --- /dev/null +++ b/scripts1/meta-schema.js @@ -0,0 +1,148 @@ + +import { readJsonSchemaTypes } from "./json-schema.js"; +import fs from 'fs'; +import yaml from 'yaml'; +import {metaSchemaFileName, metaSchemaPath} from "./util.js"; + +export function writeMetaSchemaTypes(metaSchemaTypes) { + fs.writeFileSync(metaSchemaPath, yaml.stringify(metaSchemaTypes, { lineWidth: 0 })); +} + +export function readAndFixMetaSchemaTypes() { + // Track messages tracking schema fixes + const messages = []; + + // Read meta schema and sanitize + const metaSchemaContent = fs.readFileSync(metaSchemaPath, "utf-8"); + const metaSchemaDoc = yaml.parse(metaSchemaContent); + const metaSchemaTypes = []; + + if (Array.isArray(metaSchemaDoc)) { + metaSchemaDoc.forEach(rawMetaSchemaType => { + const type = rawMetaSchemaType['type']; + + if (typeof type !== 'string') { + messages.push(`${metaSchemaFileName} contains entry ${JSON.stringify(rawMetaSchemaType)} with invalid type. Ignoring type.`); + return; + } + + const rawProperties = rawMetaSchemaType['properties']; + const metaSchemaProperties = []; + + if (Array.isArray(rawProperties)) { + rawProperties.forEach(rawProperty => { + const property = rawProperty['property']; + if (typeof property !== 'string') { + messages.push(`${metaSchemaFileName} type ${type} contains property ${JSON.stringify(rawProperty)} with invalid property. Ignoring property.`); + return; + } + + let description = rawProperty['description']; + if (typeof description !== 'string') { + messages.push(`${metaSchemaFileName} type ${type} contains property ${property} with invalid description. Ignoring description.`); + description = ''; + } + + metaSchemaProperties.push(new MetaSchemaProperty(property, description)); + }); + } else { + messages.push(`${metaSchemaFileName} contains entry ${JSON.stringify(rawMetaSchemaType)} with invalid properties. Ignoring properties.`); + } + + metaSchemaTypes.push(new MetaSchemaType(type, metaSchemaProperties)); + }); + } else { + messages.push(`${metaSchemaFileName} must be array of types.`); + } + + const metaSchemaTypesByType = {}; + metaSchemaTypes.forEach(type => metaSchemaTypesByType[type.type] = type); + + const jsonSchemaTypesByType = {}; + readJsonSchemaTypes().forEach(type => jsonSchemaTypesByType[type.type] = type); + + // Find any types in both json schema and meta schema and make sure all json schema properties match + Object.entries(metaSchemaTypesByType).forEach(([type, metaSchemaType]) => { + const jsonSchemaType = jsonSchemaTypesByType[type]; + if (!jsonSchemaType) { + return; + } + const sanitizedProperties = []; + const jsonSchemaProperties = jsonSchemaType.toMetaSchemaType().properties; + + // Remove properties in meta schema and not in json schema + const jsonSchemaPropertiesByProperty = {}; + jsonSchemaProperties.forEach(property => jsonSchemaPropertiesByProperty[property.property] = property); + metaSchemaType.properties.forEach(property => { + const propertyName = property.property; + if (!(propertyName in jsonSchemaPropertiesByProperty)) { + messages.push(`Type ${type} has property ${propertyName} in meta schema and not in JSON schema. Removing.`); + return; + } + sanitizedProperties.push(property); + }); + + // Add properties in json schema and not in meta schema + const metaSchemaPropertiesByProperty = {}; + metaSchemaType.properties.forEach(property => metaSchemaPropertiesByProperty[property.property] = property); + jsonSchemaProperties.forEach(property => { + const propertyName = property.property; + if (!(propertyName in metaSchemaPropertiesByProperty)) { + messages.push(`Type ${type} has property ${propertyName} in JSON schema and not in meta schema. Adding.`); + sanitizedProperties.push(property); + } + }); + + metaSchemaType.properties = sanitizedProperties; + }); + + // Find and remove any types in meta schema not in json schema + Object.entries(metaSchemaTypesByType).forEach(([type, unused]) => { + if (!(type in jsonSchemaTypesByType)) { + messages.push(`Type ${type} found in ${metaSchemaFileName} but not in JSON schema. Removing.`); + delete metaSchemaTypesByType[type]; + } + }); + + // Find and add any types in json schema not in meta schema + Object.entries(jsonSchemaTypesByType).forEach(([type, jsonSchemaType]) => { + if (!(type in metaSchemaTypesByType)) { + messages.push(`Type ${type} in ${jsonSchemaType.file} and path ${jsonSchemaType.jsonSchemaPath} is missing from ${metaSchemaFileName}. Adding.`); + const metaSchemaType = jsonSchemaType.toMetaSchemaType(); + metaSchemaTypesByType[metaSchemaType.type] = metaSchemaType; + } + }); + + return { messages, types: Object.values(metaSchemaTypesByType) }; +} + +export class MetaSchemaProperty { + property; + description; + + constructor(property, description) { + this.property = property; + this.description = description; + } + + toJson() { + return { property: this.property, description: this.description }; + } +} + +export class MetaSchemaType { + type; + properties; + + constructor(type, properties) { + this.type = type; + this.properties = properties; + } + + toJson() { + const properties = this.properties.map(property => property.toJson()); + properties.sort((a, b) => a.property.localeCompare(b.property)); + + return { type: this.type, properties: this.properties }; + } +} diff --git a/scripts1/util.js b/scripts1/util.js new file mode 100644 index 00000000..c05b7f59 --- /dev/null +++ b/scripts1/util.js @@ -0,0 +1,17 @@ + +import { + readJsonSchemaTypes +} from "./json-schema.js"; + +import path from 'path'; +import { fileURLToPath } from 'url'; +import fs from 'fs'; +import yaml from 'yaml'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +export const metaSchemaFileName = "meta_schema.yaml"; +export const schemaDirPath = __dirname + "/../schema/"; +export const metaSchemaPath = schemaDirPath + metaSchemaFileName; +export const markdownDocPath = __dirname + "/../schema-docs.md"; From 8d2ed09883190c3e46ea6db49f807a8d9ec01502 Mon Sep 17 00:00:00 2001 From: Jack Berg <34418638+jack-berg@users.noreply.github.com> Date: Wed, 1 Oct 2025 15:00:30 -0500 Subject: [PATCH 08/23] Resolve types in markdown gen --- schema-docs.md | 1132 ++++++++++++++++----------------- scripts1/generate-markdown.js | 89 ++- scripts1/json-schema.js | 39 +- 3 files changed, 670 insertions(+), 590 deletions(-) diff --git a/schema-docs.md b/schema-docs.md index e7676dc1..b77abafc 100644 --- a/schema-docs.md +++ b/schema-docs.md @@ -1,22 +1,22 @@ ### Aggregation -| Property | Type | Description | -|---|---|---| -| default | TODO | TODO | -| drop | TODO | TODO | -| explicit_bucket_histogram | TODO | TODO | -| base2_exponential_bucket_histogram | TODO | TODO | -| last_value | TODO | TODO | -| sum | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `default` | TODO | [`DefaultAggregation`](#DefaultAggregation) | `false` | +| `drop` | TODO | [`DropAggregation`](#DropAggregation) | `false` | +| `explicit_bucket_histogram` | TODO | [`ExplicitBucketHistogramAggregation`](#ExplicitBucketHistogramAggregation) | `false` | +| `base2_exponential_bucket_histogram` | TODO | [`Base2ExponentialBucketHistogramAggregation`](#Base2ExponentialBucketHistogramAggregation) | `false` | +| `last_value` | TODO | [`LastValueAggregation`](#LastValueAggregation) | `false` | +| `sum` | TODO | [`SumAggregation`](#SumAggregation) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| default |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| drop |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| explicit_bucket_histogram |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| base2_exponential_bucket_histogram |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| last_value |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| sum |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `default` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `drop` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `explicit_bucket_histogram` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `base2_exponential_bucket_histogram` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `last_value` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `sum` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -92,15 +92,15 @@ No properties. * `.tracer_provider.sampler.always_on`
### AttributeLimits -| Property | Type | Description | -|---|---|---| -| attribute_value_length_limit | TODO | TODO | -| attribute_count_limit | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `attribute_value_length_limit` | TODO | * `integer`
* `null`
| `false` | +| `attribute_count_limit` | TODO | * `integer`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| attribute_value_length_limit |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| attribute_count_limit |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `attribute_value_length_limit` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `attribute_count_limit` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -130,17 +130,17 @@ No properties. * `.attribute_limits`
### AttributeNameValue -| Property | Type | Description | -|---|---|---| -| name | TODO | TODO | -| value | TODO | TODO | -| type | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `name` | TODO | `string` | `true` | +| `value` | TODO | `oneOf` (see JSON schema for details) | `true` | +| `type` | TODO | [`AttributeType`](#AttributeType) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| name |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| value |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| type |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `name` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `value` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `type` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -288,17 +288,17 @@ No properties. * `.propagator.composite[].baggage`
### Base2ExponentialBucketHistogramAggregation -| Property | Type | Description | -|---|---|---| -| max_scale | TODO | TODO | -| max_size | TODO | TODO | -| record_min_max | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `max_scale` | TODO | * `integer`
* `null`
| `false` | +| `max_size` | TODO | * `integer`
* `null`
| `false` | +| `record_min_max` | TODO | * `boolean`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| max_scale |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| max_size |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| record_min_max |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `max_scale` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `max_size` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `record_min_max` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -337,21 +337,21 @@ No properties. * `.meter_provider.views[].stream.aggregation.base2_exponential_bucket_histogram`
### BatchLogRecordProcessor -| Property | Type | Description | -|---|---|---| -| schedule_delay | TODO | TODO | -| export_timeout | TODO | TODO | -| max_queue_size | TODO | TODO | -| max_export_batch_size | TODO | TODO | -| exporter | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `schedule_delay` | TODO | * `integer`
* `null`
| `false` | +| `export_timeout` | TODO | * `integer`
* `null`
| `false` | +| `max_queue_size` | TODO | * `integer`
* `null`
| `false` | +| `max_export_batch_size` | TODO | * `integer`
* `null`
| `false` | +| `exporter` | TODO | [`LogRecordExporter`](#LogRecordExporter) | `true` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| schedule_delay |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| export_timeout |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| max_queue_size |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| max_export_batch_size |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| exporter |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `schedule_delay` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `export_timeout` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `max_queue_size` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `max_export_batch_size` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `exporter` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -403,21 +403,21 @@ No properties. * `.logger_provider.processors[].batch`
### BatchSpanProcessor -| Property | Type | Description | -|---|---|---| -| schedule_delay | TODO | TODO | -| export_timeout | TODO | TODO | -| max_queue_size | TODO | TODO | -| max_export_batch_size | TODO | TODO | -| exporter | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `schedule_delay` | TODO | * `integer`
* `null`
| `false` | +| `export_timeout` | TODO | * `integer`
* `null`
| `false` | +| `max_queue_size` | TODO | * `integer`
* `null`
| `false` | +| `max_export_batch_size` | TODO | * `integer`
* `null`
| `false` | +| `exporter` | TODO | [`SpanExporter`](#SpanExporter) | `true` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| schedule_delay |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| export_timeout |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| max_queue_size |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| max_export_batch_size |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| exporter |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `schedule_delay` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `export_timeout` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `max_queue_size` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `max_export_batch_size` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `exporter` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -469,27 +469,27 @@ No properties. * `.tracer_provider.processors[].batch`
### CardinalityLimits -| Property | Type | Description | -|---|---|---| -| default | TODO | TODO | -| counter | TODO | TODO | -| gauge | TODO | TODO | -| histogram | TODO | TODO | -| observable_counter | TODO | TODO | -| observable_gauge | TODO | TODO | -| observable_up_down_counter | TODO | TODO | -| up_down_counter | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `default` | TODO | * `integer`
* `null`
| `false` | +| `counter` | TODO | * `integer`
* `null`
| `false` | +| `gauge` | TODO | * `integer`
* `null`
| `false` | +| `histogram` | TODO | * `integer`
* `null`
| `false` | +| `observable_counter` | TODO | * `integer`
* `null`
| `false` | +| `observable_gauge` | TODO | * `integer`
* `null`
| `false` | +| `observable_up_down_counter` | TODO | * `integer`
* `null`
| `false` | +| `up_down_counter` | TODO | * `integer`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| default |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| counter |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| gauge |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| histogram |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| observable_counter |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| observable_gauge |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| observable_up_down_counter |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| up_down_counter |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `default` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `counter` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `gauge` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `histogram` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `observable_counter` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `observable_gauge` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `observable_up_down_counter` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `up_down_counter` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -643,15 +643,15 @@ No properties. * `.meter_provider.exemplar_filter`
### ExperimentalGeneralInstrumentation -| Property | Type | Description | -|---|---|---| -| peer | TODO | TODO | -| http | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `peer` | TODO | [`ExperimentalPeerInstrumentation`](#ExperimentalPeerInstrumentation) | `false` | +| `http` | TODO | [`ExperimentalHttpInstrumentation`](#ExperimentalHttpInstrumentation) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| peer |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| http |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `peer` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `http` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -675,15 +675,15 @@ No properties. * `.instrumentation/development.general`
### ExperimentalHttpInstrumentation -| Property | Type | Description | -|---|---|---| -| client | TODO | TODO | -| server | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `client` | TODO | `object` | `false` | +| `server` | TODO | `object` | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| client |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| server |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `client` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `server` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -737,35 +737,35 @@ No properties. * `.instrumentation/development.general.http`
### ExperimentalInstrumentation -| Property | Type | Description | -|---|---|---| -| general | TODO | TODO | -| cpp | TODO | TODO | -| dotnet | TODO | TODO | -| erlang | TODO | TODO | -| go | TODO | TODO | -| java | TODO | TODO | -| js | TODO | TODO | -| php | TODO | TODO | -| python | TODO | TODO | -| ruby | TODO | TODO | -| rust | TODO | TODO | -| swift | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `general` | TODO | [`ExperimentalGeneralInstrumentation`](#ExperimentalGeneralInstrumentation) | `false` | +| `cpp` | TODO | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | +| `dotnet` | TODO | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | +| `erlang` | TODO | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | +| `go` | TODO | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | +| `java` | TODO | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | +| `js` | TODO | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | +| `php` | TODO | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | +| `python` | TODO | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | +| `ruby` | TODO | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | +| `rust` | TODO | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | +| `swift` | TODO | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| general |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| cpp |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| dotnet |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| erlang |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| go |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| java |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| js |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| php |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| python |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| ruby |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| rust |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| swift |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `general` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `cpp` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `dotnet` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `erlang` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `go` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `java` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `js` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `php` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `python` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `ruby` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `rust` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `swift` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -937,13 +937,13 @@ No properties. * `.instrumentation/development.cpp`* `.instrumentation/development.dotnet`* `.instrumentation/development.erlang`* `.instrumentation/development.go`* `.instrumentation/development.java`* `.instrumentation/development.js`* `.instrumentation/development.php`* `.instrumentation/development.python`* `.instrumentation/development.ruby`* `.instrumentation/development.rust`* `.instrumentation/development.swift`
### ExperimentalLoggerConfig -| Property | Type | Description | -|---|---|---| -| disabled | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `disabled` | TODO | `boolean` | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| disabled |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `disabled` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -968,15 +968,15 @@ No properties. * `.logger_provider.logger_configurator/development.default_config`* `.logger_provider.logger_configurator/development.loggers[].config`
### ExperimentalLoggerConfigurator -| Property | Type | Description | -|---|---|---| -| default_config | TODO | TODO | -| loggers | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `default_config` | TODO | [`ExperimentalLoggerConfig`](#ExperimentalLoggerConfig) | `false` | +| `loggers` | TODO | `array` of [`ExperimentalLoggerMatcherAndConfig`](#ExperimentalLoggerMatcherAndConfig) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| default_config |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| loggers |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `default_config` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `loggers` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -1005,15 +1005,15 @@ No properties. * `.logger_provider.logger_configurator/development`
### ExperimentalLoggerMatcherAndConfig -| Property | Type | Description | -|---|---|---| -| name | TODO | TODO | -| config | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `name` | TODO | `string` | `false` | +| `config` | TODO | [`ExperimentalLoggerConfig`](#ExperimentalLoggerConfig) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| name |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| config |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `name` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `config` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -1041,13 +1041,13 @@ No properties. * `.logger_provider.logger_configurator/development.loggers[]`
### ExperimentalMeterConfig -| Property | Type | Description | -|---|---|---| -| disabled | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `disabled` | TODO | `boolean` | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| disabled |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `disabled` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -1072,15 +1072,15 @@ No properties. * `.meter_provider.meter_configurator/development.default_config`* `.meter_provider.meter_configurator/development.meters[].config`
### ExperimentalMeterConfigurator -| Property | Type | Description | -|---|---|---| -| default_config | TODO | TODO | -| meters | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `default_config` | TODO | [`ExperimentalMeterConfig`](#ExperimentalMeterConfig) | `false` | +| `meters` | TODO | `array` of [`ExperimentalMeterMatcherAndConfig`](#ExperimentalMeterMatcherAndConfig) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| default_config |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| meters |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `default_config` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `meters` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -1109,15 +1109,15 @@ No properties. * `.meter_provider.meter_configurator/development`
### ExperimentalMeterMatcherAndConfig -| Property | Type | Description | -|---|---|---| -| name | TODO | TODO | -| config | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `name` | TODO | `string` | `false` | +| `config` | TODO | [`ExperimentalMeterConfig`](#ExperimentalMeterConfig) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| name |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| config |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `name` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `config` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -1145,13 +1145,13 @@ No properties. * `.meter_provider.meter_configurator/development.meters[]`
### ExperimentalOtlpFileExporter -| Property | Type | Description | -|---|---|---| -| output_stream | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `output_stream` | TODO | * `string`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| output_stream |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `output_stream` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -1178,17 +1178,17 @@ No properties. * `.logger_provider.processors[].batch.exporter.otlp_file/development`* `.logger_provider.processors[].simple.exporter.otlp_file/development`* `.tracer_provider.processors[].batch.exporter.otlp_file/development`* `.tracer_provider.processors[].simple.exporter.otlp_file/development`
### ExperimentalOtlpFileMetricExporter -| Property | Type | Description | -|---|---|---| -| output_stream | TODO | TODO | -| temporality_preference | TODO | TODO | -| default_histogram_aggregation | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `output_stream` | TODO | * `string`
* `null`
| `false` | +| `temporality_preference` | TODO | [`ExporterTemporalityPreference`](#ExporterTemporalityPreference) | `false` | +| `default_histogram_aggregation` | TODO | [`ExporterDefaultHistogramAggregation`](#ExporterDefaultHistogramAggregation) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| output_stream |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| temporality_preference |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| default_histogram_aggregation |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `output_stream` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `temporality_preference` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `default_histogram_aggregation` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -1221,13 +1221,13 @@ No properties. * `.meter_provider.readers[].periodic.exporter.otlp_file/development`
### ExperimentalPeerInstrumentation -| Property | Type | Description | -|---|---|---| -| service_mapping | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `service_mapping` | TODO | `array` of `array` | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| service_mapping |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `service_mapping` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -1264,23 +1264,23 @@ No properties. * `.instrumentation/development.general.peer`
### ExperimentalPrometheusMetricExporter -| Property | Type | Description | -|---|---|---| -| host | TODO | TODO | -| port | TODO | TODO | -| without_units | TODO | TODO | -| without_type_suffix | TODO | TODO | -| without_scope_info | TODO | TODO | -| with_resource_constant_labels | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `host` | TODO | * `string`
* `null`
| `false` | +| `port` | TODO | * `integer`
* `null`
| `false` | +| `without_units` | TODO | * `boolean`
* `null`
| `false` | +| `without_type_suffix` | TODO | * `boolean`
* `null`
| `false` | +| `without_scope_info` | TODO | * `boolean`
* `null`
| `false` | +| `with_resource_constant_labels` | TODO | [`IncludeExclude`](#IncludeExclude) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| host |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| port |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| without_units |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| without_type_suffix |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| without_scope_info |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| with_resource_constant_labels |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `host` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `port` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `without_units` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `without_type_suffix` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `without_scope_info` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `with_resource_constant_labels` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -1334,15 +1334,15 @@ No properties. * `.meter_provider.readers[].pull.exporter.prometheus/development`
### ExperimentalResourceDetection -| Property | Type | Description | -|---|---|---| -| attributes | TODO | TODO | -| detectors | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `attributes` | TODO | [`IncludeExclude`](#IncludeExclude) | `false` | +| `detectors` | TODO | `array` of [`ExperimentalResourceDetector`](#ExperimentalResourceDetector) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| attributes |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| detectors |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `attributes` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `detectors` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -1395,13 +1395,13 @@ No properties. * `.resource.detection/development.detectors[]`
### ExperimentalTracerConfig -| Property | Type | Description | -|---|---|---| -| disabled | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `disabled` | TODO | `boolean` | `true` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| disabled |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `disabled` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -1429,15 +1429,15 @@ No properties. * `.tracer_provider.tracer_configurator/development.default_config`* `.tracer_provider.tracer_configurator/development.tracers[].config`
### ExperimentalTracerConfigurator -| Property | Type | Description | -|---|---|---| -| default_config | TODO | TODO | -| tracers | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `default_config` | TODO | [`ExperimentalTracerConfig`](#ExperimentalTracerConfig) | `false` | +| `tracers` | TODO | `array` of [`ExperimentalTracerMatcherAndConfig`](#ExperimentalTracerMatcherAndConfig) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| default_config |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| tracers |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `default_config` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `tracers` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -1466,15 +1466,15 @@ No properties. * `.tracer_provider.tracer_configurator/development`
### ExperimentalTracerMatcherAndConfig -| Property | Type | Description | -|---|---|---| -| name | TODO | TODO | -| config | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `name` | TODO | `string` | `true` | +| `config` | TODO | [`ExperimentalTracerConfig`](#ExperimentalTracerConfig) | `true` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| name |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| config |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `name` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `config` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -1506,15 +1506,15 @@ No properties. * `.tracer_provider.tracer_configurator/development.tracers[]`
### ExplicitBucketHistogramAggregation -| Property | Type | Description | -|---|---|---| -| boundaries | TODO | TODO | -| record_min_max | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `boundaries` | TODO | `array` of `array` | `false` | +| `record_min_max` | TODO | * `boolean`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| boundaries |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| record_min_max |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `boundaries` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `record_min_max` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -1592,15 +1592,15 @@ No properties. * `.meter_provider.readers[].periodic.exporter.otlp_http.temporality_preference`* `.meter_provider.readers[].periodic.exporter.otlp_grpc.temporality_preference`* `.meter_provider.readers[].periodic.exporter.otlp_file/development.temporality_preference`
### IncludeExclude -| Property | Type | Description | -|---|---|---| -| included | TODO | TODO | -| excluded | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `included` | TODO | `array` of `array` | `false` | +| `excluded` | TODO | `array` of `array` | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| included |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| excluded |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `included` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `excluded` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -1676,17 +1676,17 @@ No properties. * `.propagator.composite[].jaeger`
### JaegerRemoteSampler -| Property | Type | Description | -|---|---|---| -| endpoint | TODO | TODO | -| interval | TODO | TODO | -| initial_sampler | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `endpoint` | TODO | * `string`
* `null`
| `false` | +| `interval` | TODO | * `integer`
* `null`
| `false` | +| `initial_sampler` | TODO | [`Sampler`](#Sampler) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| endpoint |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| interval |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| initial_sampler |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `endpoint` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `interval` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `initial_sampler` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -1742,17 +1742,17 @@ No properties. * `.meter_provider.views[].stream.aggregation.last_value`
### LoggerProvider -| Property | Type | Description | -|---|---|---| -| processors | TODO | TODO | -| limits | TODO | TODO | -| logger_configurator/development | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `processors` | TODO | `array` of [`LogRecordProcessor`](#LogRecordProcessor) | `true` | +| `limits` | TODO | [`LogRecordLimits`](#LogRecordLimits) | `false` | +| `logger_configurator/development` | TODO | [`ExperimentalLoggerConfigurator`](#ExperimentalLoggerConfigurator) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| processors |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| limits |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| logger_configurator/development |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `processors` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `limits` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `logger_configurator/development` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -1957,19 +1957,19 @@ No properties. * `.logger_provider`
### LogRecordExporter -| Property | Type | Description | -|---|---|---| -| otlp_http | TODO | TODO | -| otlp_grpc | TODO | TODO | -| otlp_file/development | TODO | TODO | -| console | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `otlp_http` | TODO | [`OtlpHttpExporter`](#OtlpHttpExporter) | `false` | +| `otlp_grpc` | TODO | [`OtlpGrpcExporter`](#OtlpGrpcExporter) | `false` | +| `otlp_file/development` | TODO | [`ExperimentalOtlpFileExporter`](#ExperimentalOtlpFileExporter) | `false` | +| `console` | TODO | [`ConsoleExporter`](#ConsoleExporter) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| otlp_http |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| otlp_grpc |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| otlp_file/development |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| console |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `otlp_http` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `otlp_grpc` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `otlp_file/development` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `console` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -2009,15 +2009,15 @@ No properties. * `.logger_provider.processors[].batch.exporter`* `.logger_provider.processors[].simple.exporter`
### LogRecordLimits -| Property | Type | Description | -|---|---|---| -| attribute_value_length_limit | TODO | TODO | -| attribute_count_limit | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `attribute_value_length_limit` | TODO | * `integer`
* `null`
| `false` | +| `attribute_count_limit` | TODO | * `integer`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| attribute_value_length_limit |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| attribute_count_limit |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `attribute_value_length_limit` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `attribute_count_limit` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -2049,15 +2049,15 @@ No properties. * `.logger_provider.limits`
### LogRecordProcessor -| Property | Type | Description | -|---|---|---| -| batch | TODO | TODO | -| simple | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `batch` | TODO | [`BatchLogRecordProcessor`](#BatchLogRecordProcessor) | `false` | +| `simple` | TODO | [`SimpleLogRecordProcessor`](#SimpleLogRecordProcessor) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| batch |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| simple |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `batch` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `simple` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -2090,19 +2090,19 @@ No properties. * `.logger_provider.processors[]`
### MeterProvider -| Property | Type | Description | -|---|---|---| -| readers | TODO | TODO | -| views | TODO | TODO | -| exemplar_filter | TODO | TODO | -| meter_configurator/development | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `readers` | TODO | `array` of [`MetricReader`](#MetricReader) | `true` | +| `views` | TODO | `array` of [`View`](#View) | `false` | +| `exemplar_filter` | TODO | [`ExemplarFilter`](#ExemplarFilter) | `false` | +| `meter_configurator/development` | TODO | [`ExperimentalMeterConfigurator`](#ExperimentalMeterConfigurator) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| readers |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| views |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| exemplar_filter |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| meter_configurator/development |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `readers` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `views` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `exemplar_filter` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `meter_configurator/development` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -2830,13 +2830,13 @@ No properties. * `.meter_provider`
### MetricProducer -| Property | Type | Description | -|---|---|---| -| opencensus | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `opencensus` | TODO | [`OpenCensusMetricProducer`](#OpenCensusMetricProducer) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| opencensus |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `opencensus` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -2867,15 +2867,15 @@ No properties. * `.meter_provider.readers[].periodic.producers[]`* `.meter_provider.readers[].pull.producers[]`
### MetricReader -| Property | Type | Description | -|---|---|---| -| periodic | TODO | TODO | -| pull | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `periodic` | TODO | [`PeriodicMetricReader`](#PeriodicMetricReader) | `false` | +| `pull` | TODO | [`PullMetricReader`](#PullMetricReader) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| periodic |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| pull |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `periodic` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `pull` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -2901,15 +2901,15 @@ No properties. * `.meter_provider.readers[]`
### NameStringValuePair -| Property | Type | Description | -|---|---|---| -| name | TODO | TODO | -| value | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `name` | TODO | `string` | `true` | +| `value` | TODO | * `string`
* `null`
| `true` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| name |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| value |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `name` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `value` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -2959,31 +2959,31 @@ No properties. * `.meter_provider.readers[].periodic.producers[].opencensus`* `.meter_provider.readers[].pull.producers[].opencensus`
### OpentelemetryConfiguration -| Property | Type | Description | -|---|---|---| -| file_format | TODO | TODO | -| disabled | TODO | TODO | -| log_level | TODO | TODO | -| attribute_limits | TODO | TODO | -| logger_provider | TODO | TODO | -| meter_provider | TODO | TODO | -| propagator | TODO | TODO | -| tracer_provider | TODO | TODO | -| resource | TODO | TODO | -| instrumentation/development | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `file_format` | TODO | `string` | `true` | +| `disabled` | TODO | * `boolean`
* `null`
| `false` | +| `log_level` | TODO | * `string`
* `null`
| `false` | +| `attribute_limits` | TODO | [`AttributeLimits`](#AttributeLimits) | `false` | +| `logger_provider` | TODO | [`LoggerProvider`](#LoggerProvider) | `false` | +| `meter_provider` | TODO | [`MeterProvider`](#MeterProvider) | `false` | +| `propagator` | TODO | [`Propagator`](#Propagator) | `false` | +| `tracer_provider` | TODO | [`TracerProvider`](#TracerProvider) | `false` | +| `resource` | TODO | [`Resource`](#Resource) | `false` | +| `instrumentation/development` | TODO | [`ExperimentalInstrumentation`](#ExperimentalInstrumentation) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| file_format |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| disabled |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| log_level |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| attribute_limits |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| logger_provider |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| meter_provider |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| propagator |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| tracer_provider |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| resource |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| instrumentation/development |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `file_format` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `disabled` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `log_level` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `attribute_limits` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `logger_provider` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `meter_provider` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `propagator` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `tracer_provider` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `resource` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `instrumentation/development` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -3100,29 +3100,29 @@ No properties. * `.propagator.composite[].ottrace`
### OtlpGrpcExporter -| Property | Type | Description | -|---|---|---| -| endpoint | TODO | TODO | -| certificate_file | TODO | TODO | -| client_key_file | TODO | TODO | -| client_certificate_file | TODO | TODO | -| headers | TODO | TODO | -| headers_list | TODO | TODO | -| compression | TODO | TODO | -| timeout | TODO | TODO | -| insecure | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `endpoint` | TODO | * `string`
* `null`
| `false` | +| `certificate_file` | TODO | * `string`
* `null`
| `false` | +| `client_key_file` | TODO | * `string`
* `null`
| `false` | +| `client_certificate_file` | TODO | * `string`
* `null`
| `false` | +| `headers` | TODO | `array` of [`NameStringValuePair`](#NameStringValuePair) | `false` | +| `headers_list` | TODO | * `string`
* `null`
| `false` | +| `compression` | TODO | * `string`
* `null`
| `false` | +| `timeout` | TODO | * `integer`
* `null`
| `false` | +| `insecure` | TODO | * `boolean`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| endpoint |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| certificate_file |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| client_key_file |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| client_certificate_file |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| headers |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| headers_list |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| compression |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| timeout |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| insecure |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `endpoint` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `certificate_file` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `client_key_file` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `client_certificate_file` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `headers` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `headers_list` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `compression` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `timeout` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `insecure` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -3198,33 +3198,33 @@ No properties. * `.logger_provider.processors[].batch.exporter.otlp_grpc`* `.logger_provider.processors[].simple.exporter.otlp_grpc`* `.tracer_provider.processors[].batch.exporter.otlp_grpc`* `.tracer_provider.processors[].simple.exporter.otlp_grpc`
### OtlpGrpcMetricExporter -| Property | Type | Description | -|---|---|---| -| endpoint | TODO | TODO | -| certificate_file | TODO | TODO | -| client_key_file | TODO | TODO | -| client_certificate_file | TODO | TODO | -| headers | TODO | TODO | -| headers_list | TODO | TODO | -| compression | TODO | TODO | -| timeout | TODO | TODO | -| insecure | TODO | TODO | -| temporality_preference | TODO | TODO | -| default_histogram_aggregation | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `endpoint` | TODO | * `string`
* `null`
| `false` | +| `certificate_file` | TODO | * `string`
* `null`
| `false` | +| `client_key_file` | TODO | * `string`
* `null`
| `false` | +| `client_certificate_file` | TODO | * `string`
* `null`
| `false` | +| `headers` | TODO | `array` of [`NameStringValuePair`](#NameStringValuePair) | `false` | +| `headers_list` | TODO | * `string`
* `null`
| `false` | +| `compression` | TODO | * `string`
* `null`
| `false` | +| `timeout` | TODO | * `integer`
* `null`
| `false` | +| `insecure` | TODO | * `boolean`
* `null`
| `false` | +| `temporality_preference` | TODO | [`ExporterTemporalityPreference`](#ExporterTemporalityPreference) | `false` | +| `default_histogram_aggregation` | TODO | [`ExporterDefaultHistogramAggregation`](#ExporterDefaultHistogramAggregation) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| endpoint |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| certificate_file |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| client_key_file |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| client_certificate_file |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| headers |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| headers_list |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| compression |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| timeout |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| insecure |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| temporality_preference |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| default_histogram_aggregation |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `endpoint` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `certificate_file` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `client_key_file` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `client_certificate_file` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `headers` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `headers_list` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `compression` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `timeout` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `insecure` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `temporality_preference` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `default_histogram_aggregation` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -3328,29 +3328,29 @@ No properties. * `.logger_provider.processors[].batch.exporter.otlp_http.encoding`* `.logger_provider.processors[].simple.exporter.otlp_http.encoding`* `.meter_provider.readers[].periodic.exporter.otlp_http.encoding`* `.tracer_provider.processors[].batch.exporter.otlp_http.encoding`* `.tracer_provider.processors[].simple.exporter.otlp_http.encoding`
### OtlpHttpExporter -| Property | Type | Description | -|---|---|---| -| endpoint | TODO | TODO | -| certificate_file | TODO | TODO | -| client_key_file | TODO | TODO | -| client_certificate_file | TODO | TODO | -| headers | TODO | TODO | -| headers_list | TODO | TODO | -| compression | TODO | TODO | -| timeout | TODO | TODO | -| encoding | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `endpoint` | TODO | * `string`
* `null`
| `false` | +| `certificate_file` | TODO | * `string`
* `null`
| `false` | +| `client_key_file` | TODO | * `string`
* `null`
| `false` | +| `client_certificate_file` | TODO | * `string`
* `null`
| `false` | +| `headers` | TODO | `array` of [`NameStringValuePair`](#NameStringValuePair) | `false` | +| `headers_list` | TODO | * `string`
* `null`
| `false` | +| `compression` | TODO | * `string`
* `null`
| `false` | +| `timeout` | TODO | * `integer`
* `null`
| `false` | +| `encoding` | TODO | [`OtlpHttpEncoding`](#OtlpHttpEncoding) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| endpoint |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| certificate_file |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| client_key_file |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| client_certificate_file |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| headers |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| headers_list |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| compression |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| timeout |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| encoding |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `endpoint` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `certificate_file` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `client_key_file` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `client_certificate_file` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `headers` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `headers_list` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `compression` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `timeout` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `encoding` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -3423,33 +3423,33 @@ No properties. * `.logger_provider.processors[].batch.exporter.otlp_http`* `.logger_provider.processors[].simple.exporter.otlp_http`* `.tracer_provider.processors[].batch.exporter.otlp_http`* `.tracer_provider.processors[].simple.exporter.otlp_http`
### OtlpHttpMetricExporter -| Property | Type | Description | -|---|---|---| -| endpoint | TODO | TODO | -| certificate_file | TODO | TODO | -| client_key_file | TODO | TODO | -| client_certificate_file | TODO | TODO | -| headers | TODO | TODO | -| headers_list | TODO | TODO | -| compression | TODO | TODO | -| timeout | TODO | TODO | -| encoding | TODO | TODO | -| temporality_preference | TODO | TODO | -| default_histogram_aggregation | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `endpoint` | TODO | * `string`
* `null`
| `false` | +| `certificate_file` | TODO | * `string`
* `null`
| `false` | +| `client_key_file` | TODO | * `string`
* `null`
| `false` | +| `client_certificate_file` | TODO | * `string`
* `null`
| `false` | +| `headers` | TODO | `array` of [`NameStringValuePair`](#NameStringValuePair) | `false` | +| `headers_list` | TODO | * `string`
* `null`
| `false` | +| `compression` | TODO | * `string`
* `null`
| `false` | +| `timeout` | TODO | * `integer`
* `null`
| `false` | +| `encoding` | TODO | [`OtlpHttpEncoding`](#OtlpHttpEncoding) | `false` | +| `temporality_preference` | TODO | [`ExporterTemporalityPreference`](#ExporterTemporalityPreference) | `false` | +| `default_histogram_aggregation` | TODO | [`ExporterDefaultHistogramAggregation`](#ExporterDefaultHistogramAggregation) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| endpoint |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| certificate_file |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| client_key_file |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| client_certificate_file |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| headers |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| headers_list |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| compression |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| timeout |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| encoding |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| temporality_preference |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| default_histogram_aggregation |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `endpoint` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `certificate_file` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `client_key_file` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `client_certificate_file` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `headers` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `headers_list` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `compression` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `timeout` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `encoding` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `temporality_preference` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `default_histogram_aggregation` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -3528,21 +3528,21 @@ No properties. * `.meter_provider.readers[].periodic.exporter.otlp_http`
### ParentBasedSampler -| Property | Type | Description | -|---|---|---| -| root | TODO | TODO | -| remote_parent_sampled | TODO | TODO | -| remote_parent_not_sampled | TODO | TODO | -| local_parent_sampled | TODO | TODO | -| local_parent_not_sampled | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `root` | TODO | [`Sampler`](#Sampler) | `false` | +| `remote_parent_sampled` | TODO | [`Sampler`](#Sampler) | `false` | +| `remote_parent_not_sampled` | TODO | [`Sampler`](#Sampler) | `false` | +| `local_parent_sampled` | TODO | [`Sampler`](#Sampler) | `false` | +| `local_parent_not_sampled` | TODO | [`Sampler`](#Sampler) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| root |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| remote_parent_sampled |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| remote_parent_not_sampled |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| local_parent_sampled |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| local_parent_not_sampled |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `root` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `remote_parent_sampled` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `remote_parent_not_sampled` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `local_parent_sampled` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `local_parent_not_sampled` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -3578,21 +3578,21 @@ No properties. * `.tracer_provider.sampler.parent_based`
### PeriodicMetricReader -| Property | Type | Description | -|---|---|---| -| interval | TODO | TODO | -| timeout | TODO | TODO | -| exporter | TODO | TODO | -| producers | TODO | TODO | -| cardinality_limits | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `interval` | TODO | * `integer`
* `null`
| `false` | +| `timeout` | TODO | * `integer`
* `null`
| `false` | +| `exporter` | TODO | [`PushMetricExporter`](#PushMetricExporter) | `true` | +| `producers` | TODO | `array` of [`MetricProducer`](#MetricProducer) | `false` | +| `cardinality_limits` | TODO | [`CardinalityLimits`](#CardinalityLimits) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| interval |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| timeout |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| exporter |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| producers |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| cardinality_limits |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `interval` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `timeout` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `exporter` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `producers` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `cardinality_limits` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -3639,15 +3639,15 @@ No properties. * `.meter_provider.readers[].periodic`
### Propagator -| Property | Type | Description | -|---|---|---| -| composite | TODO | TODO | -| composite_list | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `composite` | TODO | `array` of [`TextMapPropagator`](#TextMapPropagator) | `false` | +| `composite_list` | TODO | * `string`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| composite |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| composite_list |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `composite` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `composite_list` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -3756,13 +3756,13 @@ No properties. * `.propagator`
### PullMetricExporter -| Property | Type | Description | -|---|---|---| -| prometheus/development | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `prometheus/development` | TODO | [`ExperimentalPrometheusMetricExporter`](#ExperimentalPrometheusMetricExporter) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| prometheus/development |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `prometheus/development` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -3795,17 +3795,17 @@ No properties. * `.meter_provider.readers[].pull.exporter`
### PullMetricReader -| Property | Type | Description | -|---|---|---| -| exporter | TODO | TODO | -| producers | TODO | TODO | -| cardinality_limits | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `exporter` | TODO | [`PullMetricExporter`](#PullMetricExporter) | `true` | +| `producers` | TODO | `array` of [`MetricProducer`](#MetricProducer) | `false` | +| `cardinality_limits` | TODO | [`CardinalityLimits`](#CardinalityLimits) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| exporter |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| producers |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| cardinality_limits |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `exporter` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `producers` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `cardinality_limits` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -3838,19 +3838,19 @@ No properties. * `.meter_provider.readers[].pull`
### PushMetricExporter -| Property | Type | Description | -|---|---|---| -| otlp_http | TODO | TODO | -| otlp_grpc | TODO | TODO | -| otlp_file/development | TODO | TODO | -| console | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `otlp_http` | TODO | [`OtlpHttpMetricExporter`](#OtlpHttpMetricExporter) | `false` | +| `otlp_grpc` | TODO | [`OtlpGrpcMetricExporter`](#OtlpGrpcMetricExporter) | `false` | +| `otlp_file/development` | TODO | [`ExperimentalOtlpFileMetricExporter`](#ExperimentalOtlpFileMetricExporter) | `false` | +| `console` | TODO | [`ConsoleExporter`](#ConsoleExporter) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| otlp_http |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| otlp_grpc |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| otlp_file/development |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| console |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `otlp_http` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `otlp_grpc` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `otlp_file/development` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `console` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -3890,19 +3890,19 @@ No properties. * `.meter_provider.readers[].periodic.exporter`
### Resource -| Property | Type | Description | -|---|---|---| -| attributes | TODO | TODO | -| detection/development | TODO | TODO | -| schema_url | TODO | TODO | -| attributes_list | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `attributes` | TODO | `array` of [`AttributeNameValue`](#AttributeNameValue) | `false` | +| `detection/development` | TODO | [`ExperimentalResourceDetection`](#ExperimentalResourceDetection) | `false` | +| `schema_url` | TODO | * `string`
* `null`
| `false` | +| `attributes_list` | TODO | * `string`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| attributes |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| detection/development |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| schema_url |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| attributes_list |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `attributes` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `detection/development` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `schema_url` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `attributes_list` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -4041,21 +4041,21 @@ No properties. * `.resource`
### Sampler -| Property | Type | Description | -|---|---|---| -| always_off | TODO | TODO | -| always_on | TODO | TODO | -| jaeger_remote | TODO | TODO | -| parent_based | TODO | TODO | -| trace_id_ratio_based | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `always_off` | TODO | [`AlwaysOffSampler`](#AlwaysOffSampler) | `false` | +| `always_on` | TODO | [`AlwaysOnSampler`](#AlwaysOnSampler) | `false` | +| `jaeger_remote` | TODO | [`JaegerRemoteSampler`](#JaegerRemoteSampler) | `false` | +| `parent_based` | TODO | [`ParentBasedSampler`](#ParentBasedSampler) | `false` | +| `trace_id_ratio_based` | TODO | [`TraceIdRatioBasedSampler`](#TraceIdRatioBasedSampler) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| always_off |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| always_on |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| jaeger_remote |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| parent_based |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| trace_id_ratio_based |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `always_off` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `always_on` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `jaeger_remote` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `parent_based` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `trace_id_ratio_based` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -4098,13 +4098,13 @@ No properties. * `.tracer_provider.sampler`
### SimpleLogRecordProcessor -| Property | Type | Description | -|---|---|---| -| exporter | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `exporter` | TODO | [`LogRecordExporter`](#LogRecordExporter) | `true` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| exporter |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `exporter` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -4128,13 +4128,13 @@ No properties. * `.logger_provider.processors[].simple`
### SimpleSpanProcessor -| Property | Type | Description | -|---|---|---| -| exporter | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `exporter` | TODO | [`SpanExporter`](#SpanExporter) | `true` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| exporter |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `exporter` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -4158,21 +4158,21 @@ No properties. * `.tracer_provider.processors[].simple`
### SpanExporter -| Property | Type | Description | -|---|---|---| -| otlp_http | TODO | TODO | -| otlp_grpc | TODO | TODO | -| otlp_file/development | TODO | TODO | -| console | TODO | TODO | -| zipkin | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `otlp_http` | TODO | [`OtlpHttpExporter`](#OtlpHttpExporter) | `false` | +| `otlp_grpc` | TODO | [`OtlpGrpcExporter`](#OtlpGrpcExporter) | `false` | +| `otlp_file/development` | TODO | [`ExperimentalOtlpFileExporter`](#ExperimentalOtlpFileExporter) | `false` | +| `console` | TODO | [`ConsoleExporter`](#ConsoleExporter) | `false` | +| `zipkin` | TODO | [`ZipkinSpanExporter`](#ZipkinSpanExporter) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| otlp_http |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| otlp_grpc |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| otlp_file/development |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| console |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| zipkin |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `otlp_http` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `otlp_grpc` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `otlp_file/development` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `console` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `zipkin` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -4215,23 +4215,23 @@ No properties. * `.tracer_provider.processors[].batch.exporter`* `.tracer_provider.processors[].simple.exporter`
### SpanLimits -| Property | Type | Description | -|---|---|---| -| attribute_value_length_limit | TODO | TODO | -| attribute_count_limit | TODO | TODO | -| event_count_limit | TODO | TODO | -| link_count_limit | TODO | TODO | -| event_attribute_count_limit | TODO | TODO | -| link_attribute_count_limit | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `attribute_value_length_limit` | TODO | * `integer`
* `null`
| `false` | +| `attribute_count_limit` | TODO | * `integer`
* `null`
| `false` | +| `event_count_limit` | TODO | * `integer`
* `null`
| `false` | +| `link_count_limit` | TODO | * `integer`
* `null`
| `false` | +| `event_attribute_count_limit` | TODO | * `integer`
* `null`
| `false` | +| `link_attribute_count_limit` | TODO | * `integer`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| attribute_value_length_limit |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| attribute_count_limit |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| event_count_limit |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| link_count_limit |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| event_attribute_count_limit |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| link_attribute_count_limit |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `attribute_value_length_limit` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `attribute_count_limit` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `event_count_limit` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `link_count_limit` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `event_attribute_count_limit` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `link_attribute_count_limit` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -4291,15 +4291,15 @@ No properties. * `.tracer_provider.limits`
### SpanProcessor -| Property | Type | Description | -|---|---|---| -| batch | TODO | TODO | -| simple | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `batch` | TODO | [`BatchSpanProcessor`](#BatchSpanProcessor) | `false` | +| `simple` | TODO | [`SimpleSpanProcessor`](#SimpleSpanProcessor) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| batch |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| simple |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `batch` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `simple` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -4352,23 +4352,23 @@ No properties. * `.meter_provider.views[].stream.aggregation.sum`
### TextMapPropagator -| Property | Type | Description | -|---|---|---| -| tracecontext | TODO | TODO | -| baggage | TODO | TODO | -| b3 | TODO | TODO | -| b3multi | TODO | TODO | -| jaeger | TODO | TODO | -| ottrace | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `tracecontext` | TODO | [`TraceContextPropagator`](#TraceContextPropagator) | `false` | +| `baggage` | TODO | [`BaggagePropagator`](#BaggagePropagator) | `false` | +| `b3` | TODO | [`B3Propagator`](#B3Propagator) | `false` | +| `b3multi` | TODO | [`B3MultiPropagator`](#B3MultiPropagator) | `false` | +| `jaeger` | TODO | [`JaegerPropagator`](#JaegerPropagator) | `false` | +| `ottrace` | TODO | [`OpenTracingPropagator`](#OpenTracingPropagator) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| tracecontext |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| baggage |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| b3 |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| b3multi |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| jaeger |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| ottrace |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `tracecontext` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `baggage` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `b3` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `b3multi` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `jaeger` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `ottrace` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -4433,13 +4433,13 @@ No properties. * `.propagator.composite[].tracecontext`
### TraceIdRatioBasedSampler -| Property | Type | Description | -|---|---|---| -| ratio | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `ratio` | TODO | * `number`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| ratio |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `ratio` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -4466,19 +4466,19 @@ No properties. * `.tracer_provider.sampler.trace_id_ratio_based`
### TracerProvider -| Property | Type | Description | -|---|---|---| -| processors | TODO | TODO | -| limits | TODO | TODO | -| sampler | TODO | TODO | -| tracer_configurator/development | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `processors` | TODO | `array` of [`SpanProcessor`](#SpanProcessor) | `true` | +| `limits` | TODO | [`SpanLimits`](#SpanLimits) | `false` | +| `sampler` | TODO | [`Sampler`](#Sampler) | `false` | +| `tracer_configurator/development` | TODO | [`ExperimentalTracerConfigurator`](#ExperimentalTracerConfigurator) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| processors |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| limits |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| sampler |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| tracer_configurator/development |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `processors` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `limits` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `sampler` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `tracer_configurator/development` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -4856,15 +4856,15 @@ No properties. * `.tracer_provider`
### View -| Property | Type | Description | -|---|---|---| -| selector | TODO | TODO | -| stream | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `selector` | TODO | [`ViewSelector`](#ViewSelector) | `false` | +| `stream` | TODO | [`ViewStream`](#ViewStream) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| selector |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| stream |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `selector` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `stream` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -4888,23 +4888,23 @@ No properties. * `.meter_provider.views[]`
### ViewSelector -| Property | Type | Description | -|---|---|---| -| instrument_name | TODO | TODO | -| instrument_type | TODO | TODO | -| unit | TODO | TODO | -| meter_name | TODO | TODO | -| meter_version | TODO | TODO | -| meter_schema_url | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `instrument_name` | TODO | * `string`
* `null`
| `false` | +| `instrument_type` | TODO | [`InstrumentType`](#InstrumentType) | `false` | +| `unit` | TODO | * `string`
* `null`
| `false` | +| `meter_name` | TODO | * `string`
* `null`
| `false` | +| `meter_version` | TODO | * `string`
* `null`
| `false` | +| `meter_schema_url` | TODO | * `string`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| instrument_name |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| instrument_type |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| unit |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| meter_name |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| meter_version |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| meter_schema_url |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `instrument_name` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `instrument_type` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `unit` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `meter_name` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `meter_version` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `meter_schema_url` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -4955,21 +4955,21 @@ No properties. * `.meter_provider.views[].selector`
### ViewStream -| Property | Type | Description | -|---|---|---| -| name | TODO | TODO | -| description | TODO | TODO | -| aggregation | TODO | TODO | -| aggregation_cardinality_limit | TODO | TODO | -| attribute_keys | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `name` | TODO | * `string`
* `null`
| `false` | +| `description` | TODO | * `string`
* `null`
| `false` | +| `aggregation` | TODO | [`Aggregation`](#Aggregation) | `false` | +| `aggregation_cardinality_limit` | TODO | * `integer`
* `null`
| `false` | +| `attribute_keys` | TODO | [`IncludeExclude`](#IncludeExclude) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| name |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| description |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| aggregation |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| aggregation_cardinality_limit |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| attribute_keys |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `name` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `description` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `aggregation` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `aggregation_cardinality_limit` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `attribute_keys` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema @@ -5012,15 +5012,15 @@ No properties. * `.meter_provider.views[].stream`
### ZipkinSpanExporter -| Property | Type | Description | -|---|---|---| -| endpoint | TODO | TODO | -| timeout | TODO | TODO | +| Property | Description | Type | Required? | +|---|---|---|---| +| `endpoint` | TODO | * `string`
* `null`
| `false` | +| `timeout` | TODO | * `integer`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| endpoint |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | -| timeout |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO |TODO | +| `endpoint` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `timeout` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |
JSON Schema diff --git a/scripts1/generate-markdown.js b/scripts1/generate-markdown.js index a8923023..2f4e56a1 100644 --- a/scripts1/generate-markdown.js +++ b/scripts1/generate-markdown.js @@ -1,5 +1,5 @@ import { - readJsonSchemaTypes + readJsonSchemaTypes, resolveRef } from "./json-schema.js"; import {readAndFixMetaSchemaTypes} from "./meta-schema.js"; import fs from "node:fs"; @@ -17,6 +17,59 @@ readJsonSchemaTypes().forEach(type => jsonSchemaTypesByType[type.type] = type); const output = []; const languages = ['c++', 'c#', 'erlang', 'go', 'java', 'js', 'php', 'python', 'ruby', 'rust', 'swift'] +class JsonSchemaType { + type; + isPrimitive; + isArray; + isOneOf; + + constructor(type, isPrimitive, isArray, isOneOf) { + this.type = type; + this.isPrimitive = isPrimitive; + this.isArray = isArray; + this.isOneOf = isOneOf; + } +} + +function resolvePropertyTypes(jsonSchemaType, property, jsonSchemaTypesByType) { + const properties = jsonSchemaType.schema['properties']; + if (!properties) { + throw new Error(`Unable to resolve property ${property} for ${jsonSchemaType.type}. Type doesn't have properties.`) + } + const jsonSchemaProperty = properties[property]; + if (!jsonSchemaProperty) { + throw new Error(`Unable to resolve property ${property} for ${jsonSchemaType.type}. Type doesn't have ${property}.`); + } + const type = jsonSchemaProperty['type']; + const ref = jsonSchemaProperty['$ref']; + const items = jsonSchemaProperty['items']; + const oneOf = jsonSchemaProperty['oneOf']; + if (type === 'array' && items) { + const itemsType = items['type']; + const itemsRef = items['$ref']; + if (itemsType) { + const typeArr = Array.isArray(type) ? type : [type]; + return typeArr.map(item => new JsonSchemaType(item, true, true, false)); + } + if (itemsRef) { + const resolvedRef = resolveRef(itemsRef, jsonSchemaTypesByType); + return [new JsonSchemaType(resolvedRef.type, false, true, false)]; + } + } + if (type) { + const typeArr = Array.isArray(type) ? type : [type]; + return typeArr.map(item => new JsonSchemaType(item, true, false, false)); + } + if (ref) { + const resolvedRef = resolveRef(ref, jsonSchemaTypesByType); + return [new JsonSchemaType(resolvedRef.type, false, false, false)]; + } + if (oneOf) { + return [new JsonSchemaType('oneOf', false, false, true)]; + } + throw new Error(`Unable to resolve types of property ${property}: ${JSON.stringify(jsonSchemaType)}.`) +} + types.sort((a, b) => a.type.localeCompare(b.type)); types.forEach(metaSchemaType => { const type = metaSchemaType.type; @@ -24,6 +77,7 @@ types.forEach(metaSchemaType => { if (!jsonSchemaType) { throw new Error(`JSON schema type not found for meta schema type ${type}.`); } + const required = jsonSchemaType.schema['required']; // Heading output.push(`### ${type} \n\n`); @@ -33,10 +87,33 @@ types.forEach(metaSchemaType => { output.push("No properties.\n\n"); } else { // Property type and description table - output.push(`| Property | Type | Description |\n`); - output.push("|---|---|---|\n"); + output.push(`| Property | Description | Type | Required? |\n`); + output.push("|---|---|---|---|\n"); metaSchemaType.properties.forEach(property => { - output.push(`| ${property.property} | TODO | ${property.description} |\n`); + const formatted = []; + const propertyTypes = resolvePropertyTypes(jsonSchemaType, property.property, jsonSchemaTypesByType); + propertyTypes.forEach(type => { + if (propertyTypes.length > 1) { + formatted.push('* '); + } + if (type.isArray) { + formatted.push('`array` of ') + } + if (type.isPrimitive || type.isOneOf) { + formatted.push(`\`${type.type}\``); + } else { + formatted.push(`[\`${type.type}\`](#${type.type})`); + } + if (type.isOneOf) { + formatted.push(' (see JSON schema for details)'); + } + if (propertyTypes.length > 1) { + formatted.push('
'); + } + }); + const isRequired = required !== undefined && required.includes(property.property); + + output.push(`| \`${property.property}\` | ${property.description} | ${formatted.join("")} | \`${isRequired}\` |\n`); }); output.push('\n'); @@ -48,8 +125,8 @@ types.forEach(metaSchemaType => { languages.forEach(language => output.push(`---|`)); output.push('\n'); metaSchemaType.properties.forEach(property => { - output.push(`| ${property.property} |`); - languages.forEach(language => output.push(`TODO |`)); + output.push(`| \`${property.property}\` |`); + languages.forEach(language => output.push(`unknown |`)); output.push('\n'); }); output.push('\n'); diff --git a/scripts1/json-schema.js b/scripts1/json-schema.js index e861b13c..9e00ec86 100644 --- a/scripts1/json-schema.js +++ b/scripts1/json-schema.js @@ -5,7 +5,7 @@ import {schemaDirPath} from "./util.js"; const localDefPrefix = '#/$defs/'; export function readJsonSchemaTypes() { - const schemasByType = {}; + const typesByType = {}; const topLevelSchemas = {}; fs.readdirSync(schemaDirPath) @@ -16,20 +16,20 @@ export function readJsonSchemaTypes() { topLevelSchemas[file] = fileContent; if (file === 'opentelemetry_configuration.json') { - schemasByType['OpenTelemetryConfiguration'] = new JsonSchemaType('OpentelemetryConfiguration', file, fileContent, '.', fileContent); + typesByType['OpenTelemetryConfiguration'] = new JsonSchemaType('OpentelemetryConfiguration', file, fileContent, '.', fileContent); } Object.entries(getDefs(fileContent)).forEach(([type, schema]) => { const jsonSchemaPath = `${localDefPrefix}${type}`; - if (type in schemasByType) { - throw new Error(`${type} already exists in schemasByName with definition: ` + schemasByType[type]); + if (type in typesByType) { + throw new Error(`${type} already exists in schemasByName with definition: ` + typesByType[type]); } - schemasByType[type] = new JsonSchemaType(type, file, fileContent, jsonSchemaPath, schema); + typesByType[type] = new JsonSchemaType(type, file, fileContent, jsonSchemaPath, schema); }); }); // Resolve refs to top-level types - Object.values(schemasByType).forEach(jsonSchemaType => { + Object.values(typesByType).forEach(jsonSchemaType => { const ref = jsonSchemaType.schema['$ref']; if (!ref) { return; @@ -45,21 +45,27 @@ export function readJsonSchemaTypes() { // Compute path patterns for types // DFS starting at OpenTelemetryConfigurationType - let current = schemasByType['OpenTelemetryConfiguration']; + let current = typesByType['OpenTelemetryConfiguration']; if (current === null) { throw new Error("Missing OpenTelemetryConfiguration type"); } - recursiveAddPathPatterns(current, schemasByType, ".", []); + recursiveAddPathPatterns(current, typesByType, ".", []); - return Object.values(schemasByType); + return Object.values(typesByType); } -function resolveRef(ref, schemasByType) { +export function resolveRef(ref, typesByType) { + let response; if (ref.startsWith(localDefPrefix)) { const type = ref.substring(localDefPrefix.length); - return schemasByType[type]; + response = typesByType[type]; + } else { + response = Object.values(typesByType).find(jsonSchemaType => jsonSchemaType.jsonSchemaRef() === ref); } - return Object.values(schemasByType).find(jsonSchemaType => jsonSchemaType.jsonSchemaRef() === ref); + if (!response) { + throw new Error(`Unable to find type for JSON schema ref ${ref}`); + } + return response; } function getDefs(jsonSchema) { @@ -70,7 +76,7 @@ function getDefs(jsonSchema) { return defs; } -function recursiveAddPathPatterns(currentJsonSchemaType, schemasByType, currentPath, parentTypes) { +function recursiveAddPathPatterns(currentJsonSchemaType, typesByType, currentPath, parentTypes) { currentJsonSchemaType.pathPatterns.push(currentPath); const properties = currentJsonSchemaType.schema['properties']; @@ -90,10 +96,7 @@ function recursiveAddPathPatterns(currentJsonSchemaType, schemasByType, currentP if (!ref) { return; } - const resolvedRef = resolveRef(ref, schemasByType); - if (!resolvedRef) { - throw new Error(`Failed to find type for json schema ref ${ref}`); - } + const resolvedRef = resolveRef(ref, typesByType); if (parentTypes.find(type => type.type === resolvedRef.type)) { return; // Recursive reference } @@ -102,7 +105,7 @@ function recursiveAddPathPatterns(currentJsonSchemaType, schemasByType, currentP if (isArray) { nextPath += '[]'; } - recursiveAddPathPatterns(resolvedRef, schemasByType, nextPath, nextParentTypes); + recursiveAddPathPatterns(resolvedRef, typesByType, nextPath, nextParentTypes); }); } From 197450fea090e2f8d500f5233c714d3b763a7a0f Mon Sep 17 00:00:00 2001 From: Jack Berg <34418638+jack-berg@users.noreply.github.com> Date: Wed, 1 Oct 2025 15:09:21 -0500 Subject: [PATCH 09/23] Bridge type_descriptions.yaml --- schema-docs.md | 364 ++++++++++++------------- schema/meta_schema.yaml | 481 ++++++++++++++++++++++++---------- scripts1/generate-markdown.js | 4 +- 3 files changed, 521 insertions(+), 328 deletions(-) diff --git a/schema-docs.md b/schema-docs.md index b77abafc..12db927b 100644 --- a/schema-docs.md +++ b/schema-docs.md @@ -4,7 +4,7 @@ |---|---|---|---| | `default` | TODO | [`DefaultAggregation`](#DefaultAggregation) | `false` | | `drop` | TODO | [`DropAggregation`](#DropAggregation) | `false` | -| `explicit_bucket_histogram` | TODO | [`ExplicitBucketHistogramAggregation`](#ExplicitBucketHistogramAggregation) | `false` | +| `explicit_bucket_histogram` | Configure aggregation to be explicit_bucket_histogram. | [`ExplicitBucketHistogramAggregation`](#ExplicitBucketHistogramAggregation) | `false` | | `base2_exponential_bucket_histogram` | TODO | [`Base2ExponentialBucketHistogramAggregation`](#Base2ExponentialBucketHistogramAggregation) | `false` | | `last_value` | TODO | [`LastValueAggregation`](#LastValueAggregation) | `false` | | `sum` | TODO | [`SumAggregation`](#SumAggregation) | `false` | @@ -94,8 +94,8 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `attribute_value_length_limit` | TODO | * `integer`
* `null`
| `false` | -| `attribute_count_limit` | TODO | * `integer`
* `null`
| `false` | +| `attribute_value_length_limit` | Configure max attribute value size.
Value must be non-negative.
If omitted or null, there is no limit.
| * `integer`
* `null`
| `false` | +| `attribute_count_limit` | Configure max attribute count.
Value must be non-negative.
If omitted or null, 128 is used.
| * `integer`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -290,9 +290,9 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `max_scale` | TODO | * `integer`
* `null`
| `false` | -| `max_size` | TODO | * `integer`
* `null`
| `false` | -| `record_min_max` | TODO | * `boolean`
* `null`
| `false` | +| `max_scale` | TODO | * `integer`
* `null`
| `false` | +| `max_size` | TODO | * `integer`
* `null`
| `false` | +| `record_min_max` | TODO | * `boolean`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -339,11 +339,11 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `schedule_delay` | TODO | * `integer`
* `null`
| `false` | -| `export_timeout` | TODO | * `integer`
* `null`
| `false` | -| `max_queue_size` | TODO | * `integer`
* `null`
| `false` | -| `max_export_batch_size` | TODO | * `integer`
* `null`
| `false` | -| `exporter` | TODO | [`LogRecordExporter`](#LogRecordExporter) | `true` | +| `schedule_delay` | Configure delay interval (in milliseconds) between two consecutive exports.
Value must be non-negative.
If omitted or null, 1000 is used.
| * `integer`
* `null`
| `false` | +| `export_timeout` | Configure maximum allowed time (in milliseconds) to export data.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 30000 is used.
| * `integer`
* `null`
| `false` | +| `max_queue_size` | Configure maximum queue size. Value must be positive.
If omitted or null, 2048 is used.
| * `integer`
* `null`
| `false` | +| `max_export_batch_size` | Configure maximum batch size. Value must be positive.
If omitted or null, 512 is used.
| * `integer`
* `null`
| `false` | +| `exporter` | Configure exporter. | [`LogRecordExporter`](#LogRecordExporter) | `true` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -405,11 +405,11 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `schedule_delay` | TODO | * `integer`
* `null`
| `false` | -| `export_timeout` | TODO | * `integer`
* `null`
| `false` | -| `max_queue_size` | TODO | * `integer`
* `null`
| `false` | -| `max_export_batch_size` | TODO | * `integer`
* `null`
| `false` | -| `exporter` | TODO | [`SpanExporter`](#SpanExporter) | `true` | +| `schedule_delay` | Configure delay interval (in milliseconds) between two consecutive exports.
Value must be non-negative.
If omitted or null, 5000 is used.
| * `integer`
* `null`
| `false` | +| `export_timeout` | Configure maximum allowed time (in milliseconds) to export data.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 30000 is used.
| * `integer`
* `null`
| `false` | +| `max_queue_size` | Configure maximum queue size. Value must be positive.
If omitted or null, 2048 is used.
| * `integer`
* `null`
| `false` | +| `max_export_batch_size` | Configure maximum batch size. Value must be positive.
If omitted or null, 512 is used.
| * `integer`
* `null`
| `false` | +| `exporter` | Configure exporter. | [`SpanExporter`](#SpanExporter) | `true` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -471,14 +471,14 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `default` | TODO | * `integer`
* `null`
| `false` | -| `counter` | TODO | * `integer`
* `null`
| `false` | -| `gauge` | TODO | * `integer`
* `null`
| `false` | -| `histogram` | TODO | * `integer`
* `null`
| `false` | -| `observable_counter` | TODO | * `integer`
* `null`
| `false` | -| `observable_gauge` | TODO | * `integer`
* `null`
| `false` | -| `observable_up_down_counter` | TODO | * `integer`
* `null`
| `false` | -| `up_down_counter` | TODO | * `integer`
* `null`
| `false` | +| `default` | Configure default cardinality limit for all instrument types.
Instrument-specific cardinality limits take priority.
If omitted or null, 2000 is used.
| * `integer`
* `null`
| `false` | +| `counter` | Configure default cardinality limit for counter instruments.
If omitted or null, the value from .default is used.
| * `integer`
* `null`
| `false` | +| `gauge` | Configure default cardinality limit for gauge instruments.
If omitted or null, the value from .default is used.
| * `integer`
* `null`
| `false` | +| `histogram` | Configure default cardinality limit for histogram instruments.
If omitted or null, the value from .default is used.
| * `integer`
* `null`
| `false` | +| `observable_counter` | Configure default cardinality limit for observable_counter instruments.
If omitted or null, the value from .default is used.
| * `integer`
* `null`
| `false` | +| `observable_gauge` | Configure default cardinality limit for observable_gauge instruments.
If omitted or null, the value from .default is used.
| * `integer`
* `null`
| `false` | +| `observable_up_down_counter` | Configure default cardinality limit for observable_up_down_counter instruments.
If omitted or null, the value from .default is used.
| * `integer`
* `null`
| `false` | +| `up_down_counter` | Configure default cardinality limit for up_down_counter instruments.
If omitted or null, the value from .default is used.
| * `integer`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -645,8 +645,8 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `peer` | TODO | [`ExperimentalPeerInstrumentation`](#ExperimentalPeerInstrumentation) | `false` | -| `http` | TODO | [`ExperimentalHttpInstrumentation`](#ExperimentalHttpInstrumentation) | `false` | +| `peer` | Configure instrumentations following the peer semantic conventions.
See peer semantic conventions: https://opentelemetry.io/docs/specs/semconv/attributes-registry/peer/
| [`ExperimentalPeerInstrumentation`](#ExperimentalPeerInstrumentation) | `false` | +| `http` | Configure instrumentations following the http semantic conventions.
See http semantic conventions: https://opentelemetry.io/docs/specs/semconv/http/
| [`ExperimentalHttpInstrumentation`](#ExperimentalHttpInstrumentation) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -677,8 +677,8 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `client` | TODO | `object` | `false` | -| `server` | TODO | `object` | `false` | +| `client` | Configure instrumentations following the http client semantic conventions. | `object` | `false` | +| `server` | Configure instrumentations following the http server semantic conventions. | `object` | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -739,18 +739,18 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `general` | TODO | [`ExperimentalGeneralInstrumentation`](#ExperimentalGeneralInstrumentation) | `false` | -| `cpp` | TODO | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | -| `dotnet` | TODO | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | -| `erlang` | TODO | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | -| `go` | TODO | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | -| `java` | TODO | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | -| `js` | TODO | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | -| `php` | TODO | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | -| `python` | TODO | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | -| `ruby` | TODO | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | -| `rust` | TODO | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | -| `swift` | TODO | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | +| `general` | Configure general SemConv options that may apply to multiple languages and instrumentations.
Instrumenation may merge general config options with the language specific configuration at .instrumentation..
| [`ExperimentalGeneralInstrumentation`](#ExperimentalGeneralInstrumentation) | `false` | +| `cpp` | Configure C++ language-specific instrumentation libraries. | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | +| `dotnet` | Configure .NET language-specific instrumentation libraries. | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | +| `erlang` | Configure Erlang language-specific instrumentation libraries. | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | +| `go` | Configure Go language-specific instrumentation libraries. | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | +| `java` | Configure Java language-specific instrumentation libraries. | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | +| `js` | Configure JavaScript language-specific instrumentation libraries. | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | +| `php` | Configure PHP language-specific instrumentation libraries. | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | +| `python` | Configure Python language-specific instrumentation libraries. | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | +| `ruby` | Configure Ruby language-specific instrumentation libraries. | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | +| `rust` | Configure Rust language-specific instrumentation libraries. | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | +| `swift` | Configure Swift language-specific instrumentation libraries. | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -939,7 +939,7 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `disabled` | TODO | `boolean` | `false` | +| `disabled` | Configure if the logger is enabled or not. | `boolean` | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -970,8 +970,8 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `default_config` | TODO | [`ExperimentalLoggerConfig`](#ExperimentalLoggerConfig) | `false` | -| `loggers` | TODO | `array` of [`ExperimentalLoggerMatcherAndConfig`](#ExperimentalLoggerMatcherAndConfig) | `false` | +| `default_config` | Configure the default logger config used there is no matching entry in .logger_configurator/development.loggers. | [`ExperimentalLoggerConfig`](#ExperimentalLoggerConfig) | `false` | +| `loggers` | Configure loggers. | `array` of [`ExperimentalLoggerMatcherAndConfig`](#ExperimentalLoggerMatcherAndConfig) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -1007,8 +1007,8 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `name` | TODO | `string` | `false` | -| `config` | TODO | [`ExperimentalLoggerConfig`](#ExperimentalLoggerConfig) | `false` | +| `name` | Configure logger names to match, evaluated as follows:

* If the logger name exactly matches.
* If the logger name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
| `string` | `false` | +| `config` | The logger config. | [`ExperimentalLoggerConfig`](#ExperimentalLoggerConfig) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -1043,7 +1043,7 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `disabled` | TODO | `boolean` | `false` | +| `disabled` | Configure if the meter is enabled or not. | `boolean` | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -1074,8 +1074,8 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `default_config` | TODO | [`ExperimentalMeterConfig`](#ExperimentalMeterConfig) | `false` | -| `meters` | TODO | `array` of [`ExperimentalMeterMatcherAndConfig`](#ExperimentalMeterMatcherAndConfig) | `false` | +| `default_config` | Configure the default meter config used there is no matching entry in .meter_configurator/development.meters. | [`ExperimentalMeterConfig`](#ExperimentalMeterConfig) | `false` | +| `meters` | Configure meters. | `array` of [`ExperimentalMeterMatcherAndConfig`](#ExperimentalMeterMatcherAndConfig) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -1111,8 +1111,8 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `name` | TODO | `string` | `false` | -| `config` | TODO | [`ExperimentalMeterConfig`](#ExperimentalMeterConfig) | `false` | +| `name` | Configure meter names to match, evaluated as follows:

* If the meter name exactly matches.
* If the meter name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
| `string` | `false` | +| `config` | The meter config. | [`ExperimentalMeterConfig`](#ExperimentalMeterConfig) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -1147,7 +1147,7 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `output_stream` | TODO | * `string`
* `null`
| `false` | +| `output_stream` | TODO | * `string`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -1180,7 +1180,7 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `output_stream` | TODO | * `string`
* `null`
| `false` | +| `output_stream` | TODO | * `string`
* `null`
| `false` | | `temporality_preference` | TODO | [`ExporterTemporalityPreference`](#ExporterTemporalityPreference) | `false` | | `default_histogram_aggregation` | TODO | [`ExporterDefaultHistogramAggregation`](#ExporterDefaultHistogramAggregation) | `false` | @@ -1266,12 +1266,12 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `host` | TODO | * `string`
* `null`
| `false` | -| `port` | TODO | * `integer`
* `null`
| `false` | -| `without_units` | TODO | * `boolean`
* `null`
| `false` | -| `without_type_suffix` | TODO | * `boolean`
* `null`
| `false` | -| `without_scope_info` | TODO | * `boolean`
* `null`
| `false` | -| `with_resource_constant_labels` | TODO | [`IncludeExclude`](#IncludeExclude) | `false` | +| `host` | Configure host.
If omitted or null, localhost is used.
| * `string`
* `null`
| `false` | +| `port` | Configure port.
If omitted or null, 9464 is used.
| * `integer`
* `null`
| `false` | +| `without_units` | Configure Prometheus Exporter to produce metrics without a unit suffix or UNIT metadata.
If omitted or null, false is used.
| * `boolean`
* `null`
| `false` | +| `without_type_suffix` | Configure Prometheus Exporter to produce metrics without a type suffix.
If omitted or null, false is used.
| * `boolean`
* `null`
| `false` | +| `without_scope_info` | Configure Prometheus Exporter to produce metrics without a scope info metric.
If omitted or null, false is used.
| * `boolean`
* `null`
| `false` | +| `with_resource_constant_labels` | Configure Prometheus Exporter to add resource attributes as metrics attributes. | [`IncludeExclude`](#IncludeExclude) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -1336,8 +1336,8 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `attributes` | TODO | [`IncludeExclude`](#IncludeExclude) | `false` | -| `detectors` | TODO | `array` of [`ExperimentalResourceDetector`](#ExperimentalResourceDetector) | `false` | +| `attributes` | Configure attributes provided by resource detectors. | [`IncludeExclude`](#IncludeExclude) | `false` | +| `detectors` | Configure resource detectors.
Resource detector names are dependent on the SDK language ecosystem. Please consult documentation for each respective language.
If omitted or null, no resource detectors are enabled.
| `array` of [`ExperimentalResourceDetector`](#ExperimentalResourceDetector) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -1397,7 +1397,7 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `disabled` | TODO | `boolean` | `true` | +| `disabled` | Configure if the tracer is enabled or not. | `boolean` | `true` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -1431,8 +1431,8 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `default_config` | TODO | [`ExperimentalTracerConfig`](#ExperimentalTracerConfig) | `false` | -| `tracers` | TODO | `array` of [`ExperimentalTracerMatcherAndConfig`](#ExperimentalTracerMatcherAndConfig) | `false` | +| `default_config` | Configure the default tracer config used there is no matching entry in .tracer_configurator/development.tracers. | [`ExperimentalTracerConfig`](#ExperimentalTracerConfig) | `false` | +| `tracers` | Configure tracers. | `array` of [`ExperimentalTracerMatcherAndConfig`](#ExperimentalTracerMatcherAndConfig) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -1468,8 +1468,8 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `name` | TODO | `string` | `true` | -| `config` | TODO | [`ExperimentalTracerConfig`](#ExperimentalTracerConfig) | `true` | +| `name` | Configure tracer names to match, evaluated as follows:

* If the tracer name exactly matches.
* If the tracer name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
| `string` | `true` | +| `config` | The tracer config. | [`ExperimentalTracerConfig`](#ExperimentalTracerConfig) | `true` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -1508,8 +1508,8 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `boundaries` | TODO | `array` of `array` | `false` | -| `record_min_max` | TODO | * `boolean`
* `null`
| `false` | +| `boundaries` | Configure bucket boundaries.
If omitted, [0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, 7500, 10000] is used.
| `array` of `array` | `false` | +| `record_min_max` | Configure record min and max.
If omitted or null, true is used.
| * `boolean`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -1594,8 +1594,8 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `included` | TODO | `array` of `array` | `false` | -| `excluded` | TODO | `array` of `array` | `false` | +| `included` | Configure list of attribute key patterns to include from resource detectors.
Attribute keys from resource detectors are evaluated to match as follows:
* If the value of the attribute key exactly matches.
* If the value of the attribute key matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
If omitted, all attributes are included.
| `array` of `array` | `false` | +| `excluded` | Configure list of attribute key patterns to exclude from resource detectors. Applies after .resource.detectors.attributes.included (i.e. excluded has higher priority than included).
Attribute keys from resource detectors are evaluated to match as follows:
* If the value of the attribute key exactly matches.
* If the value of the attribute key matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
If omitted, .included attributes are included.
| `array` of `array` | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -1678,8 +1678,8 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `endpoint` | TODO | * `string`
* `null`
| `false` | -| `interval` | TODO | * `integer`
* `null`
| `false` | +| `endpoint` | TODO | * `string`
* `null`
| `false` | +| `interval` | TODO | * `integer`
* `null`
| `false` | | `initial_sampler` | TODO | [`Sampler`](#Sampler) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | @@ -1744,9 +1744,9 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `processors` | TODO | `array` of [`LogRecordProcessor`](#LogRecordProcessor) | `true` | -| `limits` | TODO | [`LogRecordLimits`](#LogRecordLimits) | `false` | -| `logger_configurator/development` | TODO | [`ExperimentalLoggerConfigurator`](#ExperimentalLoggerConfigurator) | `false` | +| `processors` | Configure log record processors. | `array` of [`LogRecordProcessor`](#LogRecordProcessor) | `true` | +| `limits` | Configure log record limits. See also attribute_limits. | [`LogRecordLimits`](#LogRecordLimits) | `false` | +| `logger_configurator/development` | Configure loggers.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalLoggerConfigurator`](#ExperimentalLoggerConfigurator) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -1959,10 +1959,10 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `otlp_http` | TODO | [`OtlpHttpExporter`](#OtlpHttpExporter) | `false` | -| `otlp_grpc` | TODO | [`OtlpGrpcExporter`](#OtlpGrpcExporter) | `false` | -| `otlp_file/development` | TODO | [`ExperimentalOtlpFileExporter`](#ExperimentalOtlpFileExporter) | `false` | -| `console` | TODO | [`ConsoleExporter`](#ConsoleExporter) | `false` | +| `otlp_http` | Configure exporter to be OTLP with HTTP transport. | [`OtlpHttpExporter`](#OtlpHttpExporter) | `false` | +| `otlp_grpc` | Configure exporter to be OTLP with gRPC transport. | [`OtlpGrpcExporter`](#OtlpGrpcExporter) | `false` | +| `otlp_file/development` | Configure exporter to be OTLP with file transport.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalOtlpFileExporter`](#ExperimentalOtlpFileExporter) | `false` | +| `console` | Configure exporter to be console. | [`ConsoleExporter`](#ConsoleExporter) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -2011,8 +2011,8 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `attribute_value_length_limit` | TODO | * `integer`
* `null`
| `false` | -| `attribute_count_limit` | TODO | * `integer`
* `null`
| `false` | +| `attribute_value_length_limit` | Configure max attribute value size. Overrides .attribute_limits.attribute_value_length_limit.
Value must be non-negative.
If omitted or null, there is no limit.
| * `integer`
* `null`
| `false` | +| `attribute_count_limit` | Configure max attribute count. Overrides .attribute_limits.attribute_count_limit.
Value must be non-negative.
If omitted or null, 128 is used.
| * `integer`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -2051,8 +2051,8 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `batch` | TODO | [`BatchLogRecordProcessor`](#BatchLogRecordProcessor) | `false` | -| `simple` | TODO | [`SimpleLogRecordProcessor`](#SimpleLogRecordProcessor) | `false` | +| `batch` | Configure a batch log record processor. | [`BatchLogRecordProcessor`](#BatchLogRecordProcessor) | `false` | +| `simple` | Configure a simple log record processor. | [`SimpleLogRecordProcessor`](#SimpleLogRecordProcessor) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -2092,10 +2092,10 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `readers` | TODO | `array` of [`MetricReader`](#MetricReader) | `true` | -| `views` | TODO | `array` of [`View`](#View) | `false` | -| `exemplar_filter` | TODO | [`ExemplarFilter`](#ExemplarFilter) | `false` | -| `meter_configurator/development` | TODO | [`ExperimentalMeterConfigurator`](#ExperimentalMeterConfigurator) | `false` | +| `readers` | Configure metric readers. | `array` of [`MetricReader`](#MetricReader) | `true` | +| `views` | Configure views.
Each view has a selector which determines the instrument(s) it applies to, and a configuration for the resulting stream(s).
| `array` of [`View`](#View) | `false` | +| `exemplar_filter` | Configure the exemplar filter.
Values include: trace_based, always_on, always_off. For behavior of values see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#metrics-sdk-configuration.
If omitted or null, trace_based is used.
| [`ExemplarFilter`](#ExemplarFilter) | `false` | +| `meter_configurator/development` | Configure meters.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalMeterConfigurator`](#ExperimentalMeterConfigurator) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -2832,7 +2832,7 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `opencensus` | TODO | [`OpenCensusMetricProducer`](#OpenCensusMetricProducer) | `false` | +| `opencensus` | Configure metric producer to be opencensus. | [`OpenCensusMetricProducer`](#OpenCensusMetricProducer) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -2869,8 +2869,8 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `periodic` | TODO | [`PeriodicMetricReader`](#PeriodicMetricReader) | `false` | -| `pull` | TODO | [`PullMetricReader`](#PullMetricReader) | `false` | +| `periodic` | Configure a periodic metric reader. | [`PeriodicMetricReader`](#PeriodicMetricReader) | `false` | +| `pull` | Configure a pull based metric reader. | [`PullMetricReader`](#PullMetricReader) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -2904,7 +2904,7 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| | `name` | TODO | `string` | `true` | -| `value` | TODO | * `string`
* `null`
| `true` | +| `value` | TODO | * `string`
* `null`
| `true` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -2962,8 +2962,8 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| | `file_format` | TODO | `string` | `true` | -| `disabled` | TODO | * `boolean`
* `null`
| `false` | -| `log_level` | TODO | * `string`
* `null`
| `false` | +| `disabled` | TODO | * `boolean`
* `null`
| `false` | +| `log_level` | TODO | * `string`
* `null`
| `false` | | `attribute_limits` | TODO | [`AttributeLimits`](#AttributeLimits) | `false` | | `logger_provider` | TODO | [`LoggerProvider`](#LoggerProvider) | `false` | | `meter_provider` | TODO | [`MeterProvider`](#MeterProvider) | `false` | @@ -3102,15 +3102,15 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `endpoint` | TODO | * `string`
* `null`
| `false` | -| `certificate_file` | TODO | * `string`
* `null`
| `false` | -| `client_key_file` | TODO | * `string`
* `null`
| `false` | -| `client_certificate_file` | TODO | * `string`
* `null`
| `false` | +| `endpoint` | Configure endpoint.
If omitted or null, http://localhost:4317 is used.
| * `string`
* `null`
| `false` | +| `certificate_file` | TODO | * `string`
* `null`
| `false` | +| `client_key_file` | TODO | * `string`
* `null`
| `false` | +| `client_certificate_file` | TODO | * `string`
* `null`
| `false` | | `headers` | TODO | `array` of [`NameStringValuePair`](#NameStringValuePair) | `false` | -| `headers_list` | TODO | * `string`
* `null`
| `false` | -| `compression` | TODO | * `string`
* `null`
| `false` | -| `timeout` | TODO | * `integer`
* `null`
| `false` | -| `insecure` | TODO | * `boolean`
* `null`
| `false` | +| `headers_list` | TODO | * `string`
* `null`
| `false` | +| `compression` | TODO | * `string`
* `null`
| `false` | +| `timeout` | TODO | * `integer`
* `null`
| `false` | +| `insecure` | Configure client transport security for the exporter's connection.
Only applicable when .endpoint is provided without http or https scheme. Implementations may choose to ignore .insecure.
If omitted or null, false is used.
| * `boolean`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -3200,15 +3200,15 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `endpoint` | TODO | * `string`
* `null`
| `false` | -| `certificate_file` | TODO | * `string`
* `null`
| `false` | -| `client_key_file` | TODO | * `string`
* `null`
| `false` | -| `client_certificate_file` | TODO | * `string`
* `null`
| `false` | +| `endpoint` | TODO | * `string`
* `null`
| `false` | +| `certificate_file` | TODO | * `string`
* `null`
| `false` | +| `client_key_file` | TODO | * `string`
* `null`
| `false` | +| `client_certificate_file` | TODO | * `string`
* `null`
| `false` | | `headers` | TODO | `array` of [`NameStringValuePair`](#NameStringValuePair) | `false` | -| `headers_list` | TODO | * `string`
* `null`
| `false` | -| `compression` | TODO | * `string`
* `null`
| `false` | -| `timeout` | TODO | * `integer`
* `null`
| `false` | -| `insecure` | TODO | * `boolean`
* `null`
| `false` | +| `headers_list` | TODO | * `string`
* `null`
| `false` | +| `compression` | TODO | * `string`
* `null`
| `false` | +| `timeout` | TODO | * `integer`
* `null`
| `false` | +| `insecure` | TODO | * `boolean`
* `null`
| `false` | | `temporality_preference` | TODO | [`ExporterTemporalityPreference`](#ExporterTemporalityPreference) | `false` | | `default_histogram_aggregation` | TODO | [`ExporterDefaultHistogramAggregation`](#ExporterDefaultHistogramAggregation) | `false` | @@ -3330,15 +3330,15 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `endpoint` | TODO | * `string`
* `null`
| `false` | -| `certificate_file` | TODO | * `string`
* `null`
| `false` | -| `client_key_file` | TODO | * `string`
* `null`
| `false` | -| `client_certificate_file` | TODO | * `string`
* `null`
| `false` | +| `endpoint` | TODO | * `string`
* `null`
| `false` | +| `certificate_file` | TODO | * `string`
* `null`
| `false` | +| `client_key_file` | TODO | * `string`
* `null`
| `false` | +| `client_certificate_file` | TODO | * `string`
* `null`
| `false` | | `headers` | TODO | `array` of [`NameStringValuePair`](#NameStringValuePair) | `false` | -| `headers_list` | TODO | * `string`
* `null`
| `false` | -| `compression` | TODO | * `string`
* `null`
| `false` | -| `timeout` | TODO | * `integer`
* `null`
| `false` | -| `encoding` | TODO | [`OtlpHttpEncoding`](#OtlpHttpEncoding) | `false` | +| `headers_list` | TODO | * `string`
* `null`
| `false` | +| `compression` | TODO | * `string`
* `null`
| `false` | +| `timeout` | TODO | * `integer`
* `null`
| `false` | +| `encoding` | Configure the encoding used for messages.
Values include: protobuf, json. Implementations may not support json.
If omitted or null, protobuf is used.
| [`OtlpHttpEncoding`](#OtlpHttpEncoding) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -3425,14 +3425,14 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `endpoint` | TODO | * `string`
* `null`
| `false` | -| `certificate_file` | TODO | * `string`
* `null`
| `false` | -| `client_key_file` | TODO | * `string`
* `null`
| `false` | -| `client_certificate_file` | TODO | * `string`
* `null`
| `false` | +| `endpoint` | Configure endpoint, including the metric specific path.
If omitted or null, http://localhost:4318/v1/metrics is used.
| * `string`
* `null`
| `false` | +| `certificate_file` | TODO | * `string`
* `null`
| `false` | +| `client_key_file` | TODO | * `string`
* `null`
| `false` | +| `client_certificate_file` | TODO | * `string`
* `null`
| `false` | | `headers` | TODO | `array` of [`NameStringValuePair`](#NameStringValuePair) | `false` | -| `headers_list` | TODO | * `string`
* `null`
| `false` | -| `compression` | TODO | * `string`
* `null`
| `false` | -| `timeout` | TODO | * `integer`
* `null`
| `false` | +| `headers_list` | TODO | * `string`
* `null`
| `false` | +| `compression` | TODO | * `string`
* `null`
| `false` | +| `timeout` | TODO | * `integer`
* `null`
| `false` | | `encoding` | TODO | [`OtlpHttpEncoding`](#OtlpHttpEncoding) | `false` | | `temporality_preference` | TODO | [`ExporterTemporalityPreference`](#ExporterTemporalityPreference) | `false` | | `default_histogram_aggregation` | TODO | [`ExporterDefaultHistogramAggregation`](#ExporterDefaultHistogramAggregation) | `false` | @@ -3580,11 +3580,11 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `interval` | TODO | * `integer`
* `null`
| `false` | -| `timeout` | TODO | * `integer`
* `null`
| `false` | -| `exporter` | TODO | [`PushMetricExporter`](#PushMetricExporter) | `true` | -| `producers` | TODO | `array` of [`MetricProducer`](#MetricProducer) | `false` | -| `cardinality_limits` | TODO | [`CardinalityLimits`](#CardinalityLimits) | `false` | +| `interval` | Configure delay interval (in milliseconds) between start of two consecutive exports.
Value must be non-negative.
If omitted or null, 60000 is used.
| * `integer`
* `null`
| `false` | +| `timeout` | Configure maximum allowed time (in milliseconds) to export data.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 30000 is used.
| * `integer`
* `null`
| `false` | +| `exporter` | Configure exporter. | [`PushMetricExporter`](#PushMetricExporter) | `true` | +| `producers` | Configure metric producers. | `array` of [`MetricProducer`](#MetricProducer) | `false` | +| `cardinality_limits` | Configure cardinality limits. | [`CardinalityLimits`](#CardinalityLimits) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -3641,8 +3641,8 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `composite` | TODO | `array` of [`TextMapPropagator`](#TextMapPropagator) | `false` | -| `composite_list` | TODO | * `string`
* `null`
| `false` | +| `composite` | Configure the propagators in the composite text map propagator. Entries from .composite_list are appended to the list here with duplicates filtered out.
Built-in propagator keys include: tracecontext, baggage, b3, b3multi, jaeger, ottrace. Known third party keys include: xray.
If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used.
| `array` of [`TextMapPropagator`](#TextMapPropagator) | `false` | +| `composite_list` | Configure the propagators in the composite text map propagator. Entries are appended to .composite with duplicates filtered out.
The value is a comma separated list of propagator identifiers matching the format of OTEL_PROPAGATORS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details.
Built-in propagator identifiers include: tracecontext, baggage, b3, b3multi, jaeger, ottrace. Known third party identifiers include: xray.
If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used.
| * `string`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -3797,9 +3797,9 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `exporter` | TODO | [`PullMetricExporter`](#PullMetricExporter) | `true` | -| `producers` | TODO | `array` of [`MetricProducer`](#MetricProducer) | `false` | -| `cardinality_limits` | TODO | [`CardinalityLimits`](#CardinalityLimits) | `false` | +| `exporter` | Configure exporter. | [`PullMetricExporter`](#PullMetricExporter) | `true` | +| `producers` | Configure metric producers. | `array` of [`MetricProducer`](#MetricProducer) | `false` | +| `cardinality_limits` | Configure cardinality limits. | [`CardinalityLimits`](#CardinalityLimits) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -3892,10 +3892,10 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `attributes` | TODO | `array` of [`AttributeNameValue`](#AttributeNameValue) | `false` | -| `detection/development` | TODO | [`ExperimentalResourceDetection`](#ExperimentalResourceDetection) | `false` | -| `schema_url` | TODO | * `string`
* `null`
| `false` | -| `attributes_list` | TODO | * `string`
* `null`
| `false` | +| `attributes` | Configure resource attributes. Entries have higher priority than entries from .resource.attributes_list.
Entries must contain .name and .value, and may optionally include .type. If an entry's .type omitted or null, string is used.
The .value's type must match the .type. Values for .type include: string, bool, int, double, string_array, bool_array, int_array, double_array.
| `array` of [`AttributeNameValue`](#AttributeNameValue) | `false` | +| `detection/development` | Configure resource detection.
This type is in development and subject to breaking changes in minor versions.
If omitted or null, resource detection is disabled.
| [`ExperimentalResourceDetection`](#ExperimentalResourceDetection) | `false` | +| `schema_url` | Configure resource schema URL.
If omitted or null, no schema URL is used.
| * `string`
* `null`
| `false` | +| `attributes_list` | Configure resource attributes. Entries have lower priority than entries from .resource.attributes.
The value is a list of comma separated key-value pairs matching the format of OTEL_RESOURCE_ATTRIBUTES. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details.
If omitted or null, no resource attributes are added.
| * `string`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -4043,11 +4043,11 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `always_off` | TODO | [`AlwaysOffSampler`](#AlwaysOffSampler) | `false` | -| `always_on` | TODO | [`AlwaysOnSampler`](#AlwaysOnSampler) | `false` | +| `always_off` | Configure sampler to be always_off. | [`AlwaysOffSampler`](#AlwaysOffSampler) | `false` | +| `always_on` | Configure sampler to be always_on. | [`AlwaysOnSampler`](#AlwaysOnSampler) | `false` | | `jaeger_remote` | TODO | [`JaegerRemoteSampler`](#JaegerRemoteSampler) | `false` | -| `parent_based` | TODO | [`ParentBasedSampler`](#ParentBasedSampler) | `false` | -| `trace_id_ratio_based` | TODO | [`TraceIdRatioBasedSampler`](#TraceIdRatioBasedSampler) | `false` | +| `parent_based` | Configure sampler to be parent_based. | [`ParentBasedSampler`](#ParentBasedSampler) | `false` | +| `trace_id_ratio_based` | Configure sampler to be trace_id_ratio_based. | [`TraceIdRatioBasedSampler`](#TraceIdRatioBasedSampler) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -4100,7 +4100,7 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `exporter` | TODO | [`LogRecordExporter`](#LogRecordExporter) | `true` | +| `exporter` | Configure exporter. | [`LogRecordExporter`](#LogRecordExporter) | `true` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -4130,7 +4130,7 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `exporter` | TODO | [`SpanExporter`](#SpanExporter) | `true` | +| `exporter` | Configure exporter. | [`SpanExporter`](#SpanExporter) | `true` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -4160,11 +4160,11 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `otlp_http` | TODO | [`OtlpHttpExporter`](#OtlpHttpExporter) | `false` | -| `otlp_grpc` | TODO | [`OtlpGrpcExporter`](#OtlpGrpcExporter) | `false` | -| `otlp_file/development` | TODO | [`ExperimentalOtlpFileExporter`](#ExperimentalOtlpFileExporter) | `false` | -| `console` | TODO | [`ConsoleExporter`](#ConsoleExporter) | `false` | -| `zipkin` | TODO | [`ZipkinSpanExporter`](#ZipkinSpanExporter) | `false` | +| `otlp_http` | Configure exporter to be OTLP with HTTP transport. | [`OtlpHttpExporter`](#OtlpHttpExporter) | `false` | +| `otlp_grpc` | Configure exporter to be OTLP with gRPC transport. | [`OtlpGrpcExporter`](#OtlpGrpcExporter) | `false` | +| `otlp_file/development` | Configure exporter to be OTLP with file transport.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalOtlpFileExporter`](#ExperimentalOtlpFileExporter) | `false` | +| `console` | Configure exporter to be console. | [`ConsoleExporter`](#ConsoleExporter) | `false` | +| `zipkin` | Configure exporter to be zipkin. | [`ZipkinSpanExporter`](#ZipkinSpanExporter) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -4217,12 +4217,12 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `attribute_value_length_limit` | TODO | * `integer`
* `null`
| `false` | -| `attribute_count_limit` | TODO | * `integer`
* `null`
| `false` | -| `event_count_limit` | TODO | * `integer`
* `null`
| `false` | -| `link_count_limit` | TODO | * `integer`
* `null`
| `false` | -| `event_attribute_count_limit` | TODO | * `integer`
* `null`
| `false` | -| `link_attribute_count_limit` | TODO | * `integer`
* `null`
| `false` | +| `attribute_value_length_limit` | Configure max attribute value size. Overrides .attribute_limits.attribute_value_length_limit.
Value must be non-negative.
If omitted or null, there is no limit.
| * `integer`
* `null`
| `false` | +| `attribute_count_limit` | Configure max attribute count. Overrides .attribute_limits.attribute_count_limit.
Value must be non-negative.
If omitted or null, 128 is used.
| * `integer`
* `null`
| `false` | +| `event_count_limit` | Configure max span event count.
Value must be non-negative.
If omitted or null, 128 is used.
| * `integer`
* `null`
| `false` | +| `link_count_limit` | Configure max span link count.
Value must be non-negative.
If omitted or null, 128 is used.
| * `integer`
* `null`
| `false` | +| `event_attribute_count_limit` | Configure max attributes per span event.
Value must be non-negative.
If omitted or null, 128 is used.
| * `integer`
* `null`
| `false` | +| `link_attribute_count_limit` | Configure max attributes per span link.
Value must be non-negative.
If omitted or null, 128 is used.
| * `integer`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -4293,8 +4293,8 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `batch` | TODO | [`BatchSpanProcessor`](#BatchSpanProcessor) | `false` | -| `simple` | TODO | [`SimpleSpanProcessor`](#SimpleSpanProcessor) | `false` | +| `batch` | Configure a batch span processor. | [`BatchSpanProcessor`](#BatchSpanProcessor) | `false` | +| `simple` | Configure a simple span processor. | [`SimpleSpanProcessor`](#SimpleSpanProcessor) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -4354,12 +4354,12 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `tracecontext` | TODO | [`TraceContextPropagator`](#TraceContextPropagator) | `false` | -| `baggage` | TODO | [`BaggagePropagator`](#BaggagePropagator) | `false` | -| `b3` | TODO | [`B3Propagator`](#B3Propagator) | `false` | -| `b3multi` | TODO | [`B3MultiPropagator`](#B3MultiPropagator) | `false` | -| `jaeger` | TODO | [`JaegerPropagator`](#JaegerPropagator) | `false` | -| `ottrace` | TODO | [`OpenTracingPropagator`](#OpenTracingPropagator) | `false` | +| `tracecontext` | Include the w3c trace context propagator. | [`TraceContextPropagator`](#TraceContextPropagator) | `false` | +| `baggage` | Include the w3c baggage propagator. | [`BaggagePropagator`](#BaggagePropagator) | `false` | +| `b3` | Include the zipkin b3 propagator. | [`B3Propagator`](#B3Propagator) | `false` | +| `b3multi` | Include the zipkin b3 multi propagator. | [`B3MultiPropagator`](#B3MultiPropagator) | `false` | +| `jaeger` | Include the jaeger propagator. | [`JaegerPropagator`](#JaegerPropagator) | `false` | +| `ottrace` | Include the opentracing propagator. | [`OpenTracingPropagator`](#OpenTracingPropagator) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -4435,7 +4435,7 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `ratio` | TODO | * `number`
* `null`
| `false` | +| `ratio` | TODO | * `number`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -4468,10 +4468,10 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `processors` | TODO | `array` of [`SpanProcessor`](#SpanProcessor) | `true` | -| `limits` | TODO | [`SpanLimits`](#SpanLimits) | `false` | -| `sampler` | TODO | [`Sampler`](#Sampler) | `false` | -| `tracer_configurator/development` | TODO | [`ExperimentalTracerConfigurator`](#ExperimentalTracerConfigurator) | `false` | +| `processors` | Configure span processors. | `array` of [`SpanProcessor`](#SpanProcessor) | `true` | +| `limits` | Configure span limits. See also attribute_limits. | [`SpanLimits`](#SpanLimits) | `false` | +| `sampler` | Configure the sampler.
If omitted, parent based sampler with a root of always_on is used.
| [`Sampler`](#Sampler) | `false` | +| `tracer_configurator/development` | Configure tracers.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalTracerConfigurator`](#ExperimentalTracerConfigurator) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -4858,8 +4858,8 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `selector` | TODO | [`ViewSelector`](#ViewSelector) | `false` | -| `stream` | TODO | [`ViewStream`](#ViewStream) | `false` | +| `selector` | Configure view selector.
Selection criteria is additive as described in https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#instrument-selection-criteria.
| [`ViewSelector`](#ViewSelector) | `false` | +| `stream` | Configure view stream. | [`ViewStream`](#ViewStream) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -4890,12 +4890,12 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `instrument_name` | TODO | * `string`
* `null`
| `false` | -| `instrument_type` | TODO | [`InstrumentType`](#InstrumentType) | `false` | -| `unit` | TODO | * `string`
* `null`
| `false` | -| `meter_name` | TODO | * `string`
* `null`
| `false` | -| `meter_version` | TODO | * `string`
* `null`
| `false` | -| `meter_schema_url` | TODO | * `string`
* `null`
| `false` | +| `instrument_name` | Configure instrument name selection criteria.
If omitted or null, all instrument names match.
| * `string`
* `null`
| `false` | +| `instrument_type` | Configure instrument type selection criteria.
Values include: counter, gauge, histogram, observable_counter, observable_gauge, observable_up_down_counter, up_down_counter.
If omitted or null, all instrument types match.
| [`InstrumentType`](#InstrumentType) | `false` | +| `unit` | Configure the instrument unit selection criteria.
If omitted or null, all instrument units match.
| * `string`
* `null`
| `false` | +| `meter_name` | Configure meter name selection criteria.
If omitted or null, all meter names match.
| * `string`
* `null`
| `false` | +| `meter_version` | Configure meter version selection criteria.
If omitted or null, all meter versions match.
| * `string`
* `null`
| `false` | +| `meter_schema_url` | Configure meter schema url selection criteria.
If omitted or null, all meter schema URLs match.
| * `string`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -4957,11 +4957,11 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `name` | TODO | * `string`
* `null`
| `false` | -| `description` | TODO | * `string`
* `null`
| `false` | -| `aggregation` | TODO | [`Aggregation`](#Aggregation) | `false` | -| `aggregation_cardinality_limit` | TODO | * `integer`
* `null`
| `false` | -| `attribute_keys` | TODO | [`IncludeExclude`](#IncludeExclude) | `false` | +| `name` | Configure metric name of the resulting stream(s).
If omitted or null, the instrument's original name is used.
| * `string`
* `null`
| `false` | +| `description` | Configure metric description of the resulting stream(s).
If omitted or null, the instrument's origin description is used.
| * `string`
* `null`
| `false` | +| `aggregation` | Configure aggregation of the resulting stream(s).
Values include: default, drop, explicit_bucket_histogram, base2_exponential_bucket_histogram, last_value, sum. For behavior of values see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#aggregation.
If omitted, default is used.
| [`Aggregation`](#Aggregation) | `false` | +| `aggregation_cardinality_limit` | Configure the aggregation cardinality limit.
If omitted or null, the metric reader's default cardinality limit is used.
| * `integer`
* `null`
| `false` | +| `attribute_keys` | Configure attribute keys retained in the resulting stream(s).
| [`IncludeExclude`](#IncludeExclude) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -5014,8 +5014,8 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `endpoint` | TODO | * `string`
* `null`
| `false` | -| `timeout` | TODO | * `integer`
* `null`
| `false` | +| `endpoint` | Configure endpoint.
If omitted or null, http://localhost:9411/api/v2/spans is used.
| * `string`
* `null`
| `false` | +| `timeout` | Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates indefinite.
If omitted or null, 10000 is used.
| * `integer`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| diff --git a/schema/meta_schema.yaml b/schema/meta_schema.yaml index 7619dabd..4b278568 100644 --- a/schema/meta_schema.yaml +++ b/schema/meta_schema.yaml @@ -5,7 +5,7 @@ - property: drop description: TODO - property: explicit_bucket_histogram - description: TODO + description: Configure aggregation to be explicit_bucket_histogram. - property: base2_exponential_bucket_histogram description: TODO - property: last_value @@ -19,9 +19,15 @@ - type: AttributeLimits properties: - property: attribute_value_length_limit - description: TODO + description: | + Configure max attribute value size. + Value must be non-negative. + If omitted or null, there is no limit. - property: attribute_count_limit - description: TODO + description: | + Configure max attribute count. + Value must be non-negative. + If omitted or null, 128 is used. - type: AttributeNameValue properties: - property: name @@ -49,45 +55,82 @@ - type: BatchLogRecordProcessor properties: - property: schedule_delay - description: TODO + description: | + Configure delay interval (in milliseconds) between two consecutive exports. + Value must be non-negative. + If omitted or null, 1000 is used. - property: export_timeout - description: TODO + description: | + Configure maximum allowed time (in milliseconds) to export data. + Value must be non-negative. A value of 0 indicates no limit (infinity). + If omitted or null, 30000 is used. - property: max_queue_size - description: TODO + description: | + Configure maximum queue size. Value must be positive. + If omitted or null, 2048 is used. - property: max_export_batch_size - description: TODO + description: | + Configure maximum batch size. Value must be positive. + If omitted or null, 512 is used. - property: exporter - description: TODO + description: Configure exporter. - type: BatchSpanProcessor properties: - property: schedule_delay - description: TODO + description: | + Configure delay interval (in milliseconds) between two consecutive exports. + Value must be non-negative. + If omitted or null, 5000 is used. - property: export_timeout - description: TODO + description: | + Configure maximum allowed time (in milliseconds) to export data. + Value must be non-negative. A value of 0 indicates no limit (infinity). + If omitted or null, 30000 is used. - property: max_queue_size - description: TODO + description: | + Configure maximum queue size. Value must be positive. + If omitted or null, 2048 is used. - property: max_export_batch_size - description: TODO + description: | + Configure maximum batch size. Value must be positive. + If omitted or null, 512 is used. - property: exporter - description: TODO + description: Configure exporter. - type: CardinalityLimits properties: - property: default - description: TODO + description: | + Configure default cardinality limit for all instrument types. + Instrument-specific cardinality limits take priority. + If omitted or null, 2000 is used. - property: counter - description: TODO + description: | + Configure default cardinality limit for counter instruments. + If omitted or null, the value from .default is used. - property: gauge - description: TODO + description: | + Configure default cardinality limit for gauge instruments. + If omitted or null, the value from .default is used. - property: histogram - description: TODO + description: | + Configure default cardinality limit for histogram instruments. + If omitted or null, the value from .default is used. - property: observable_counter - description: TODO + description: | + Configure default cardinality limit for observable_counter instruments. + If omitted or null, the value from .default is used. - property: observable_gauge - description: TODO + description: | + Configure default cardinality limit for observable_gauge instruments. + If omitted or null, the value from .default is used. - property: observable_up_down_counter - description: TODO + description: | + Configure default cardinality limit for observable_up_down_counter instruments. + If omitted or null, the value from .default is used. - property: up_down_counter - description: TODO + description: | + Configure default cardinality limit for up_down_counter instruments. + If omitted or null, the value from .default is used. - type: ConsoleExporter properties: [] - type: DefaultAggregation @@ -99,75 +142,89 @@ - type: ExperimentalGeneralInstrumentation properties: - property: peer - description: TODO + description: | + Configure instrumentations following the peer semantic conventions. + See peer semantic conventions: https://opentelemetry.io/docs/specs/semconv/attributes-registry/peer/ - property: http - description: TODO + description: | + Configure instrumentations following the http semantic conventions. + See http semantic conventions: https://opentelemetry.io/docs/specs/semconv/http/ - type: ExperimentalHttpInstrumentation properties: - property: client - description: TODO + description: Configure instrumentations following the http client semantic conventions. - property: server - description: TODO + description: Configure instrumentations following the http server semantic conventions. - type: ExperimentalInstrumentation properties: - property: general - description: TODO + description: | + Configure general SemConv options that may apply to multiple languages and instrumentations. + Instrumenation may merge general config options with the language specific configuration at .instrumentation.. - property: cpp - description: TODO + description: Configure C++ language-specific instrumentation libraries. - property: dotnet - description: TODO + description: Configure .NET language-specific instrumentation libraries. - property: erlang - description: TODO + description: Configure Erlang language-specific instrumentation libraries. - property: go - description: TODO + description: Configure Go language-specific instrumentation libraries. - property: java - description: TODO + description: Configure Java language-specific instrumentation libraries. - property: js - description: TODO + description: Configure JavaScript language-specific instrumentation libraries. - property: php - description: TODO + description: Configure PHP language-specific instrumentation libraries. - property: python - description: TODO + description: Configure Python language-specific instrumentation libraries. - property: ruby - description: TODO + description: Configure Ruby language-specific instrumentation libraries. - property: rust - description: TODO + description: Configure Rust language-specific instrumentation libraries. - property: swift - description: TODO + description: Configure Swift language-specific instrumentation libraries. - type: ExperimentalLanguageSpecificInstrumentation properties: [] - type: ExperimentalLoggerConfig properties: - property: disabled - description: TODO + description: Configure if the logger is enabled or not. - type: ExperimentalLoggerConfigurator properties: - property: default_config - description: TODO + description: Configure the default logger config used there is no matching entry in .logger_configurator/development.loggers. - property: loggers - description: TODO + description: Configure loggers. - type: ExperimentalLoggerMatcherAndConfig properties: - property: name - description: TODO + description: | + Configure logger names to match, evaluated as follows: + + * If the logger name exactly matches. + * If the logger name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. - property: config - description: TODO + description: The logger config. - type: ExperimentalMeterConfig properties: - property: disabled - description: TODO + description: Configure if the meter is enabled or not. - type: ExperimentalMeterConfigurator properties: - property: default_config - description: TODO + description: Configure the default meter config used there is no matching entry in .meter_configurator/development.meters. - property: meters - description: TODO + description: Configure meters. - type: ExperimentalMeterMatcherAndConfig properties: - property: name - description: TODO + description: | + Configure meter names to match, evaluated as follows: + + * If the meter name exactly matches. + * If the meter name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. - property: config - description: TODO + description: The meter config. - type: ExperimentalOtlpFileExporter properties: - property: output_stream @@ -187,47 +244,68 @@ - type: ExperimentalPrometheusMetricExporter properties: - property: host - description: TODO + description: | + Configure host. + If omitted or null, localhost is used. - property: port - description: TODO + description: | + Configure port. + If omitted or null, 9464 is used. - property: without_units - description: TODO + description: | + Configure Prometheus Exporter to produce metrics without a unit suffix or UNIT metadata. + If omitted or null, false is used. - property: without_type_suffix - description: TODO + description: | + Configure Prometheus Exporter to produce metrics without a type suffix. + If omitted or null, false is used. - property: without_scope_info - description: TODO + description: | + Configure Prometheus Exporter to produce metrics without a scope info metric. + If omitted or null, false is used. - property: with_resource_constant_labels - description: TODO + description: Configure Prometheus Exporter to add resource attributes as metrics attributes. - type: ExperimentalResourceDetection properties: - property: attributes - description: TODO + description: Configure attributes provided by resource detectors. - property: detectors - description: TODO + description: | + Configure resource detectors. + Resource detector names are dependent on the SDK language ecosystem. Please consult documentation for each respective language. + If omitted or null, no resource detectors are enabled. - type: ExperimentalResourceDetector properties: [] - type: ExperimentalTracerConfig properties: - property: disabled - description: TODO + description: Configure if the tracer is enabled or not. - type: ExperimentalTracerConfigurator properties: - property: default_config - description: TODO + description: Configure the default tracer config used there is no matching entry in .tracer_configurator/development.tracers. - property: tracers - description: TODO + description: Configure tracers. - type: ExperimentalTracerMatcherAndConfig properties: - property: name - description: TODO + description: | + Configure tracer names to match, evaluated as follows: + + * If the tracer name exactly matches. + * If the tracer name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. - property: config - description: TODO + description: The tracer config. - type: ExplicitBucketHistogramAggregation properties: - property: boundaries - description: TODO + description: | + Configure bucket boundaries. + If omitted, [0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, 7500, 10000] is used. - property: record_min_max - description: TODO + description: | + Configure record min and max. + If omitted or null, true is used. - type: ExporterDefaultHistogramAggregation properties: [] - type: ExporterTemporalityPreference @@ -235,9 +313,19 @@ - type: IncludeExclude properties: - property: included - description: TODO + description: | + Configure list of attribute key patterns to include from resource detectors. + Attribute keys from resource detectors are evaluated to match as follows: + * If the value of the attribute key exactly matches. + * If the value of the attribute key matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. + If omitted, all attributes are included. - property: excluded - description: TODO + description: | + Configure list of attribute key patterns to exclude from resource detectors. Applies after .resource.detectors.attributes.included (i.e. excluded has higher priority than included). + Attribute keys from resource detectors are evaluated to match as follows: + * If the value of the attribute key exactly matches. + * If the value of the attribute key matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. + If omitted, .included attributes are included. - type: InstrumentType properties: [] - type: JaegerPropagator @@ -255,53 +343,70 @@ - type: LoggerProvider properties: - property: processors - description: TODO + description: Configure log record processors. - property: limits - description: TODO + description: Configure log record limits. See also attribute_limits. - property: logger_configurator/development - description: TODO + description: | + Configure loggers. + This type is in development and subject to breaking changes in minor versions. - type: LogRecordExporter properties: - property: otlp_http - description: TODO + description: Configure exporter to be OTLP with HTTP transport. - property: otlp_grpc - description: TODO + description: Configure exporter to be OTLP with gRPC transport. - property: otlp_file/development - description: TODO + description: | + Configure exporter to be OTLP with file transport. + This type is in development and subject to breaking changes in minor versions. - property: console - description: TODO + description: Configure exporter to be console. - type: LogRecordLimits properties: - property: attribute_value_length_limit - description: TODO + description: | + Configure max attribute value size. Overrides .attribute_limits.attribute_value_length_limit. + Value must be non-negative. + If omitted or null, there is no limit. - property: attribute_count_limit - description: TODO + description: | + Configure max attribute count. Overrides .attribute_limits.attribute_count_limit. + Value must be non-negative. + If omitted or null, 128 is used. - type: LogRecordProcessor properties: - property: batch - description: TODO + description: Configure a batch log record processor. - property: simple - description: TODO + description: Configure a simple log record processor. - type: MeterProvider properties: - property: readers - description: TODO + description: Configure metric readers. - property: views - description: TODO + description: | + Configure views. + Each view has a selector which determines the instrument(s) it applies to, and a configuration for the resulting stream(s). - property: exemplar_filter - description: TODO + description: | + Configure the exemplar filter. + Values include: trace_based, always_on, always_off. For behavior of values see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#metrics-sdk-configuration. + If omitted or null, trace_based is used. - property: meter_configurator/development - description: TODO + description: | + Configure meters. + This type is in development and subject to breaking changes in minor versions. - type: MetricProducer properties: - property: opencensus - description: TODO + description: Configure metric producer to be opencensus. - type: MetricReader properties: - property: periodic - description: TODO + description: Configure a periodic metric reader. - property: pull - description: TODO + description: Configure a pull based metric reader. - type: NameStringValuePair properties: - property: name @@ -337,7 +442,9 @@ - type: OtlpGrpcExporter properties: - property: endpoint - description: TODO + description: | + Configure endpoint. + If omitted or null, http://localhost:4317 is used. - property: certificate_file description: TODO - property: client_key_file @@ -353,7 +460,10 @@ - property: timeout description: TODO - property: insecure - description: TODO + description: | + Configure client transport security for the exporter's connection. + Only applicable when .endpoint is provided without http or https scheme. Implementations may choose to ignore .insecure. + If omitted or null, false is used. - type: OtlpGrpcMetricExporter properties: - property: endpoint @@ -399,11 +509,16 @@ - property: timeout description: TODO - property: encoding - description: TODO + description: | + Configure the encoding used for messages. + Values include: protobuf, json. Implementations may not support json. + If omitted or null, protobuf is used. - type: OtlpHttpMetricExporter properties: - property: endpoint - description: TODO + description: | + Configure endpoint, including the metric specific path. + If omitted or null, http://localhost:4318/v1/metrics is used. - property: certificate_file description: TODO - property: client_key_file @@ -439,21 +554,34 @@ - type: PeriodicMetricReader properties: - property: interval - description: TODO + description: | + Configure delay interval (in milliseconds) between start of two consecutive exports. + Value must be non-negative. + If omitted or null, 60000 is used. - property: timeout - description: TODO + description: | + Configure maximum allowed time (in milliseconds) to export data. + Value must be non-negative. A value of 0 indicates no limit (infinity). + If omitted or null, 30000 is used. - property: exporter - description: TODO + description: Configure exporter. - property: producers - description: TODO + description: Configure metric producers. - property: cardinality_limits - description: TODO + description: Configure cardinality limits. - type: Propagator properties: - property: composite - description: TODO + description: | + Configure the propagators in the composite text map propagator. Entries from .composite_list are appended to the list here with duplicates filtered out. + Built-in propagator keys include: tracecontext, baggage, b3, b3multi, jaeger, ottrace. Known third party keys include: xray. + If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used. - property: composite_list - description: TODO + description: | + Configure the propagators in the composite text map propagator. Entries are appended to .composite with duplicates filtered out. + The value is a comma separated list of propagator identifiers matching the format of OTEL_PROPAGATORS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details. + Built-in propagator identifiers include: tracecontext, baggage, b3, b3multi, jaeger, ottrace. Known third party identifiers include: xray. + If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used. - type: PullMetricExporter properties: - property: prometheus/development @@ -461,11 +589,11 @@ - type: PullMetricReader properties: - property: exporter - description: TODO + description: Configure exporter. - property: producers - description: TODO + description: Configure metric producers. - property: cardinality_limits - description: TODO + description: Configure cardinality limits. - type: PushMetricExporter properties: - property: otlp_http @@ -479,81 +607,112 @@ - type: Resource properties: - property: attributes - description: TODO + description: | + Configure resource attributes. Entries have higher priority than entries from .resource.attributes_list. + Entries must contain .name and .value, and may optionally include .type. If an entry's .type omitted or null, string is used. + The .value's type must match the .type. Values for .type include: string, bool, int, double, string_array, bool_array, int_array, double_array. - property: detection/development - description: TODO + description: | + Configure resource detection. + This type is in development and subject to breaking changes in minor versions. + If omitted or null, resource detection is disabled. - property: schema_url - description: TODO + description: | + Configure resource schema URL. + If omitted or null, no schema URL is used. - property: attributes_list - description: TODO + description: | + Configure resource attributes. Entries have lower priority than entries from .resource.attributes. + The value is a list of comma separated key-value pairs matching the format of OTEL_RESOURCE_ATTRIBUTES. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details. + If omitted or null, no resource attributes are added. - type: Sampler properties: - property: always_off - description: TODO + description: Configure sampler to be always_off. - property: always_on - description: TODO + description: Configure sampler to be always_on. - property: jaeger_remote description: TODO - property: parent_based - description: TODO + description: Configure sampler to be parent_based. - property: trace_id_ratio_based - description: TODO + description: Configure sampler to be trace_id_ratio_based. - type: SimpleLogRecordProcessor properties: - property: exporter - description: TODO + description: Configure exporter. - type: SimpleSpanProcessor properties: - property: exporter - description: TODO + description: Configure exporter. - type: SpanExporter properties: - property: otlp_http - description: TODO + description: Configure exporter to be OTLP with HTTP transport. - property: otlp_grpc - description: TODO + description: Configure exporter to be OTLP with gRPC transport. - property: otlp_file/development - description: TODO + description: | + Configure exporter to be OTLP with file transport. + This type is in development and subject to breaking changes in minor versions. - property: console - description: TODO + description: Configure exporter to be console. - property: zipkin - description: TODO + description: Configure exporter to be zipkin. - type: SpanLimits properties: - property: attribute_value_length_limit - description: TODO + description: | + Configure max attribute value size. Overrides .attribute_limits.attribute_value_length_limit. + Value must be non-negative. + If omitted or null, there is no limit. - property: attribute_count_limit - description: TODO + description: | + Configure max attribute count. Overrides .attribute_limits.attribute_count_limit. + Value must be non-negative. + If omitted or null, 128 is used. - property: event_count_limit - description: TODO + description: | + Configure max span event count. + Value must be non-negative. + If omitted or null, 128 is used. - property: link_count_limit - description: TODO + description: | + Configure max span link count. + Value must be non-negative. + If omitted or null, 128 is used. - property: event_attribute_count_limit - description: TODO + description: | + Configure max attributes per span event. + Value must be non-negative. + If omitted or null, 128 is used. - property: link_attribute_count_limit - description: TODO + description: | + Configure max attributes per span link. + Value must be non-negative. + If omitted or null, 128 is used. - type: SpanProcessor properties: - property: batch - description: TODO + description: Configure a batch span processor. - property: simple - description: TODO + description: Configure a simple span processor. - type: SumAggregation properties: [] - type: TextMapPropagator properties: - property: tracecontext - description: TODO + description: Include the w3c trace context propagator. - property: baggage - description: TODO + description: Include the w3c baggage propagator. - property: b3 - description: TODO + description: Include the zipkin b3 propagator. - property: b3multi - description: TODO + description: Include the zipkin b3 multi propagator. - property: jaeger - description: TODO + description: Include the jaeger propagator. - property: ottrace - description: TODO + description: Include the opentracing propagator. - type: TraceContextPropagator properties: [] - type: TraceIdRatioBasedSampler @@ -563,48 +722,82 @@ - type: TracerProvider properties: - property: processors - description: TODO + description: Configure span processors. - property: limits - description: TODO + description: Configure span limits. See also attribute_limits. - property: sampler - description: TODO + description: | + Configure the sampler. + If omitted, parent based sampler with a root of always_on is used. - property: tracer_configurator/development - description: TODO + description: | + Configure tracers. + This type is in development and subject to breaking changes in minor versions. - type: View properties: - property: selector - description: TODO + description: | + Configure view selector. + Selection criteria is additive as described in https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#instrument-selection-criteria. - property: stream - description: TODO + description: Configure view stream. - type: ViewSelector properties: - property: instrument_name - description: TODO + description: | + Configure instrument name selection criteria. + If omitted or null, all instrument names match. - property: instrument_type - description: TODO + description: | + Configure instrument type selection criteria. + Values include: counter, gauge, histogram, observable_counter, observable_gauge, observable_up_down_counter, up_down_counter. + If omitted or null, all instrument types match. - property: unit - description: TODO + description: | + Configure the instrument unit selection criteria. + If omitted or null, all instrument units match. - property: meter_name - description: TODO + description: | + Configure meter name selection criteria. + If omitted or null, all meter names match. - property: meter_version - description: TODO + description: | + Configure meter version selection criteria. + If omitted or null, all meter versions match. - property: meter_schema_url - description: TODO + description: | + Configure meter schema url selection criteria. + If omitted or null, all meter schema URLs match. - type: ViewStream properties: - property: name - description: TODO + description: | + Configure metric name of the resulting stream(s). + If omitted or null, the instrument's original name is used. - property: description - description: TODO + description: | + Configure metric description of the resulting stream(s). + If omitted or null, the instrument's origin description is used. - property: aggregation - description: TODO + description: | + Configure aggregation of the resulting stream(s). + Values include: default, drop, explicit_bucket_histogram, base2_exponential_bucket_histogram, last_value, sum. For behavior of values see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#aggregation. + If omitted, default is used. - property: aggregation_cardinality_limit - description: TODO + description: | + Configure the aggregation cardinality limit. + If omitted or null, the metric reader's default cardinality limit is used. - property: attribute_keys - description: TODO + description: | + Configure attribute keys retained in the resulting stream(s). - type: ZipkinSpanExporter properties: - property: endpoint - description: TODO + description: | + Configure endpoint. + If omitted or null, http://localhost:9411/api/v2/spans is used. - property: timeout - description: TODO + description: | + Configure max time (in milliseconds) to wait for each export. + Value must be non-negative. A value of 0 indicates indefinite. + If omitted or null, 10000 is used. diff --git a/scripts1/generate-markdown.js b/scripts1/generate-markdown.js index 2f4e56a1..07b6da4d 100644 --- a/scripts1/generate-markdown.js +++ b/scripts1/generate-markdown.js @@ -108,12 +108,12 @@ types.forEach(metaSchemaType => { formatted.push(' (see JSON schema for details)'); } if (propertyTypes.length > 1) { - formatted.push('
'); + formatted.push('
'); } }); const isRequired = required !== undefined && required.includes(property.property); - output.push(`| \`${property.property}\` | ${property.description} | ${formatted.join("")} | \`${isRequired}\` |\n`); + output.push(`| \`${property.property}\` | ${property.description.split("\n").join("
")} | ${formatted.join("")} | \`${isRequired}\` |\n`); }); output.push('\n'); From 5fe1b05760b91a94d10ad497d6fd2ffe38343bdf Mon Sep 17 00:00:00 2001 From: Jack Berg <34418638+jack-berg@users.noreply.github.com> Date: Thu, 2 Oct 2025 13:13:21 -0500 Subject: [PATCH 10/23] mostly function description generation --- Makefile | 2 +- examples/kitchen-sink.yaml | 2 +- schema-docs.md | 497 +++++++++++++++++++----------- schema/instrumentation.json | 101 +++--- schema/meta_schema.yaml | 18 ++ scripts1/generate-descriptions.js | 120 +++++++- scripts1/generate-markdown.js | 94 ++---- scripts1/json-schema.js | 88 +++--- scripts1/util.js | 7 - 9 files changed, 574 insertions(+), 355 deletions(-) diff --git a/Makefile b/Makefile index a4c70500..2df58040 100644 --- a/Makefile +++ b/Makefile @@ -31,7 +31,7 @@ validate-examples: generate-descriptions: @if ! npm ls minimatch yaml; then npm install; fi @for f in $(EXAMPLE_FILES); do \ - npm run-script generate-descriptions -- $(shell pwd)/examples/$$f $(shell pwd)/examples/$$f || exit 1; \ + npm run-script generate-descriptions-new -- $(shell pwd)/examples/$$f $(shell pwd)/examples/$$f || exit 1; \ done .PHONY: update-file-format diff --git a/examples/kitchen-sink.yaml b/examples/kitchen-sink.yaml index 8e3e05ac..8f0a7d44 100644 --- a/examples/kitchen-sink.yaml +++ b/examples/kitchen-sink.yaml @@ -317,7 +317,7 @@ meter_provider: # Configure metric producers. producers: - # Configure metric producer to be prometheus. - prometheus: + opencensus: # Configure cardinality limits. cardinality_limits: # Configure default cardinality limit for all instrument types. diff --git a/schema-docs.md b/schema-docs.md index 12db927b..cc70f96e 100644 --- a/schema-docs.md +++ b/schema-docs.md @@ -51,7 +51,8 @@
Path patterns -* `.meter_provider.views[].stream.aggregation`
+* `.meter_provider.views[].stream.aggregation` +
### AlwaysOffSampler No properties. @@ -70,7 +71,8 @@ No properties.
Path patterns -* `.tracer_provider.sampler.always_off`
+* `.tracer_provider.sampler.always_off` + ### AlwaysOnSampler No properties. @@ -89,13 +91,14 @@ No properties.
Path patterns -* `.tracer_provider.sampler.always_on`
+* `.tracer_provider.sampler.always_on` + ### AttributeLimits | Property | Description | Type | Required? | |---|---|---|---| -| `attribute_value_length_limit` | Configure max attribute value size.
Value must be non-negative.
If omitted or null, there is no limit.
| * `integer`
* `null`
| `false` | -| `attribute_count_limit` | Configure max attribute count.
Value must be non-negative.
If omitted or null, 128 is used.
| * `integer`
* `null`
| `false` | +| `attribute_value_length_limit` | Configure max attribute value size.
Value must be non-negative.
If omitted or null, there is no limit.
| One of:
* `integer`
* `null`
| `false` | +| `attribute_count_limit` | Configure max attribute count.
Value must be non-negative.
If omitted or null, 128 is used.
| One of:
* `integer`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -127,13 +130,14 @@ No properties.
Path patterns -* `.attribute_limits`
+* `.attribute_limits` + ### AttributeNameValue | Property | Description | Type | Required? | |---|---|---|---| | `name` | TODO | `string` | `true` | -| `value` | TODO | `oneOf` (see JSON schema for details) | `true` | +| `value` | TODO | One of:
* [`see JSON schema`](#see JSON schema)
| `true` | | `type` | TODO | [`AttributeType`](#AttributeType) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | @@ -199,7 +203,8 @@ No properties.
Path patterns -* `.resource.attributes[]`
+* `.resource.attributes[]` + ### AttributeType No properties. @@ -228,7 +233,8 @@ No properties.
Path patterns -* `.resource.attributes[].type`
+* `.resource.attributes[].type` + ### B3MultiPropagator No properties. @@ -247,7 +253,8 @@ No properties.
Path patterns -* `.propagator.composite[].b3multi`
+* `.propagator.composite[].b3multi` + ### B3Propagator No properties. @@ -266,7 +273,8 @@ No properties.
Path patterns -* `.propagator.composite[].b3`
+* `.propagator.composite[].b3` + ### BaggagePropagator No properties. @@ -285,14 +293,15 @@ No properties.
Path patterns -* `.propagator.composite[].baggage`
+* `.propagator.composite[].baggage` + ### Base2ExponentialBucketHistogramAggregation | Property | Description | Type | Required? | |---|---|---|---| -| `max_scale` | TODO | * `integer`
* `null`
| `false` | -| `max_size` | TODO | * `integer`
* `null`
| `false` | -| `record_min_max` | TODO | * `boolean`
* `null`
| `false` | +| `max_scale` | TODO | One of:
* `integer`
* `null`
| `false` | +| `max_size` | TODO | One of:
* `integer`
* `null`
| `false` | +| `record_min_max` | TODO | One of:
* `boolean`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -334,15 +343,16 @@ No properties.
Path patterns -* `.meter_provider.views[].stream.aggregation.base2_exponential_bucket_histogram`
+* `.meter_provider.views[].stream.aggregation.base2_exponential_bucket_histogram` + ### BatchLogRecordProcessor | Property | Description | Type | Required? | |---|---|---|---| -| `schedule_delay` | Configure delay interval (in milliseconds) between two consecutive exports.
Value must be non-negative.
If omitted or null, 1000 is used.
| * `integer`
* `null`
| `false` | -| `export_timeout` | Configure maximum allowed time (in milliseconds) to export data.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 30000 is used.
| * `integer`
* `null`
| `false` | -| `max_queue_size` | Configure maximum queue size. Value must be positive.
If omitted or null, 2048 is used.
| * `integer`
* `null`
| `false` | -| `max_export_batch_size` | Configure maximum batch size. Value must be positive.
If omitted or null, 512 is used.
| * `integer`
* `null`
| `false` | +| `schedule_delay` | Configure delay interval (in milliseconds) between two consecutive exports.
Value must be non-negative.
If omitted or null, 1000 is used.
| One of:
* `integer`
* `null`
| `false` | +| `export_timeout` | Configure maximum allowed time (in milliseconds) to export data.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 30000 is used.
| One of:
* `integer`
* `null`
| `false` | +| `max_queue_size` | Configure maximum queue size. Value must be positive.
If omitted or null, 2048 is used.
| One of:
* `integer`
* `null`
| `false` | +| `max_export_batch_size` | Configure maximum batch size. Value must be positive.
If omitted or null, 512 is used.
| One of:
* `integer`
* `null`
| `false` | | `exporter` | Configure exporter. | [`LogRecordExporter`](#LogRecordExporter) | `true` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | @@ -400,15 +410,16 @@ No properties.
Path patterns -* `.logger_provider.processors[].batch`
+* `.logger_provider.processors[].batch` + ### BatchSpanProcessor | Property | Description | Type | Required? | |---|---|---|---| -| `schedule_delay` | Configure delay interval (in milliseconds) between two consecutive exports.
Value must be non-negative.
If omitted or null, 5000 is used.
| * `integer`
* `null`
| `false` | -| `export_timeout` | Configure maximum allowed time (in milliseconds) to export data.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 30000 is used.
| * `integer`
* `null`
| `false` | -| `max_queue_size` | Configure maximum queue size. Value must be positive.
If omitted or null, 2048 is used.
| * `integer`
* `null`
| `false` | -| `max_export_batch_size` | Configure maximum batch size. Value must be positive.
If omitted or null, 512 is used.
| * `integer`
* `null`
| `false` | +| `schedule_delay` | Configure delay interval (in milliseconds) between two consecutive exports.
Value must be non-negative.
If omitted or null, 5000 is used.
| One of:
* `integer`
* `null`
| `false` | +| `export_timeout` | Configure maximum allowed time (in milliseconds) to export data.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 30000 is used.
| One of:
* `integer`
* `null`
| `false` | +| `max_queue_size` | Configure maximum queue size. Value must be positive.
If omitted or null, 2048 is used.
| One of:
* `integer`
* `null`
| `false` | +| `max_export_batch_size` | Configure maximum batch size. Value must be positive.
If omitted or null, 512 is used.
| One of:
* `integer`
* `null`
| `false` | | `exporter` | Configure exporter. | [`SpanExporter`](#SpanExporter) | `true` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | @@ -466,19 +477,20 @@ No properties.
Path patterns -* `.tracer_provider.processors[].batch`
+* `.tracer_provider.processors[].batch` + ### CardinalityLimits | Property | Description | Type | Required? | |---|---|---|---| -| `default` | Configure default cardinality limit for all instrument types.
Instrument-specific cardinality limits take priority.
If omitted or null, 2000 is used.
| * `integer`
* `null`
| `false` | -| `counter` | Configure default cardinality limit for counter instruments.
If omitted or null, the value from .default is used.
| * `integer`
* `null`
| `false` | -| `gauge` | Configure default cardinality limit for gauge instruments.
If omitted or null, the value from .default is used.
| * `integer`
* `null`
| `false` | -| `histogram` | Configure default cardinality limit for histogram instruments.
If omitted or null, the value from .default is used.
| * `integer`
* `null`
| `false` | -| `observable_counter` | Configure default cardinality limit for observable_counter instruments.
If omitted or null, the value from .default is used.
| * `integer`
* `null`
| `false` | -| `observable_gauge` | Configure default cardinality limit for observable_gauge instruments.
If omitted or null, the value from .default is used.
| * `integer`
* `null`
| `false` | -| `observable_up_down_counter` | Configure default cardinality limit for observable_up_down_counter instruments.
If omitted or null, the value from .default is used.
| * `integer`
* `null`
| `false` | -| `up_down_counter` | Configure default cardinality limit for up_down_counter instruments.
If omitted or null, the value from .default is used.
| * `integer`
* `null`
| `false` | +| `default` | Configure default cardinality limit for all instrument types.
Instrument-specific cardinality limits take priority.
If omitted or null, 2000 is used.
| One of:
* `integer`
* `null`
| `false` | +| `counter` | Configure default cardinality limit for counter instruments.
If omitted or null, the value from .default is used.
| One of:
* `integer`
* `null`
| `false` | +| `gauge` | Configure default cardinality limit for gauge instruments.
If omitted or null, the value from .default is used.
| One of:
* `integer`
* `null`
| `false` | +| `histogram` | Configure default cardinality limit for histogram instruments.
If omitted or null, the value from .default is used.
| One of:
* `integer`
* `null`
| `false` | +| `observable_counter` | Configure default cardinality limit for observable_counter instruments.
If omitted or null, the value from .default is used.
| One of:
* `integer`
* `null`
| `false` | +| `observable_gauge` | Configure default cardinality limit for observable_gauge instruments.
If omitted or null, the value from .default is used.
| One of:
* `integer`
* `null`
| `false` | +| `observable_up_down_counter` | Configure default cardinality limit for observable_up_down_counter instruments.
If omitted or null, the value from .default is used.
| One of:
* `integer`
* `null`
| `false` | +| `up_down_counter` | Configure default cardinality limit for up_down_counter instruments.
If omitted or null, the value from .default is used.
| One of:
* `integer`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -560,7 +572,9 @@ No properties.
Path patterns -* `.meter_provider.readers[].periodic.cardinality_limits`* `.meter_provider.readers[].pull.cardinality_limits`
+* `.meter_provider.readers[].periodic.cardinality_limits` +* `.meter_provider.readers[].pull.cardinality_limits` + ### ConsoleExporter No properties. @@ -579,7 +593,12 @@ No properties.
Path patterns -* `.logger_provider.processors[].batch.exporter.console`* `.logger_provider.processors[].simple.exporter.console`* `.meter_provider.readers[].periodic.exporter.console`* `.tracer_provider.processors[].batch.exporter.console`* `.tracer_provider.processors[].simple.exporter.console`
+* `.logger_provider.processors[].batch.exporter.console` +* `.logger_provider.processors[].simple.exporter.console` +* `.meter_provider.readers[].periodic.exporter.console` +* `.tracer_provider.processors[].batch.exporter.console` +* `.tracer_provider.processors[].simple.exporter.console` + ### DefaultAggregation No properties. @@ -598,7 +617,8 @@ No properties.
Path patterns -* `.meter_provider.views[].stream.aggregation.default`
+* `.meter_provider.views[].stream.aggregation.default` + ### DropAggregation No properties. @@ -617,7 +637,8 @@ No properties.
Path patterns -* `.meter_provider.views[].stream.aggregation.drop`
+* `.meter_provider.views[].stream.aggregation.drop` + ### ExemplarFilter No properties. @@ -640,7 +661,8 @@ No properties.
Path patterns -* `.meter_provider.exemplar_filter`
+* `.meter_provider.exemplar_filter` + ### ExperimentalGeneralInstrumentation | Property | Description | Type | Required? | @@ -672,7 +694,8 @@ No properties.
Path patterns -* `.instrumentation/development.general`
+* `.instrumentation/development.general` + ### ExperimentalHttpInstrumentation | Property | Description | Type | Required? | @@ -734,7 +757,8 @@ No properties.
Path patterns -* `.instrumentation/development.general.http`
+* `.instrumentation/development.general.http` + ### ExperimentalInstrumentation | Property | Description | Type | Required? | @@ -913,7 +937,8 @@ No properties.
Path patterns -* `.instrumentation/development`
+* `.instrumentation/development` + ### ExperimentalLanguageSpecificInstrumentation No properties. @@ -934,12 +959,23 @@ No properties.
Path patterns -* `.instrumentation/development.cpp`* `.instrumentation/development.dotnet`* `.instrumentation/development.erlang`* `.instrumentation/development.go`* `.instrumentation/development.java`* `.instrumentation/development.js`* `.instrumentation/development.php`* `.instrumentation/development.python`* `.instrumentation/development.ruby`* `.instrumentation/development.rust`* `.instrumentation/development.swift`
+* `.instrumentation/development.cpp` +* `.instrumentation/development.dotnet` +* `.instrumentation/development.erlang` +* `.instrumentation/development.go` +* `.instrumentation/development.java` +* `.instrumentation/development.js` +* `.instrumentation/development.php` +* `.instrumentation/development.python` +* `.instrumentation/development.ruby` +* `.instrumentation/development.rust` +* `.instrumentation/development.swift` + ### ExperimentalLoggerConfig | Property | Description | Type | Required? | |---|---|---|---| -| `disabled` | Configure if the logger is enabled or not. | `boolean` | `false` | +| `disabled` | Configure if the logger is enabled or not. | One of:
* `boolean`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -965,7 +1001,9 @@ No properties.
Path patterns -* `.logger_provider.logger_configurator/development.default_config`* `.logger_provider.logger_configurator/development.loggers[].config`
+* `.logger_provider.logger_configurator/development.default_config` +* `.logger_provider.logger_configurator/development.loggers[].config` + ### ExperimentalLoggerConfigurator | Property | Description | Type | Required? | @@ -1002,12 +1040,13 @@ No properties.
Path patterns -* `.logger_provider.logger_configurator/development`
+* `.logger_provider.logger_configurator/development` + ### ExperimentalLoggerMatcherAndConfig | Property | Description | Type | Required? | |---|---|---|---| -| `name` | Configure logger names to match, evaluated as follows:

* If the logger name exactly matches.
* If the logger name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
| `string` | `false` | +| `name` | Configure logger names to match, evaluated as follows:

* If the logger name exactly matches.
* If the logger name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
| One of:
* `string`
| `false` | | `config` | The logger config. | [`ExperimentalLoggerConfig`](#ExperimentalLoggerConfig) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | @@ -1038,12 +1077,13 @@ No properties.
Path patterns -* `.logger_provider.logger_configurator/development.loggers[]`
+* `.logger_provider.logger_configurator/development.loggers[]` + ### ExperimentalMeterConfig | Property | Description | Type | Required? | |---|---|---|---| -| `disabled` | Configure if the meter is enabled or not. | `boolean` | `false` | +| `disabled` | Configure if the meter is enabled or not. | One of:
* `boolean`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -1069,7 +1109,9 @@ No properties.
Path patterns -* `.meter_provider.meter_configurator/development.default_config`* `.meter_provider.meter_configurator/development.meters[].config`
+* `.meter_provider.meter_configurator/development.default_config` +* `.meter_provider.meter_configurator/development.meters[].config` + ### ExperimentalMeterConfigurator | Property | Description | Type | Required? | @@ -1106,12 +1148,13 @@ No properties.
Path patterns -* `.meter_provider.meter_configurator/development`
+* `.meter_provider.meter_configurator/development` + ### ExperimentalMeterMatcherAndConfig | Property | Description | Type | Required? | |---|---|---|---| -| `name` | Configure meter names to match, evaluated as follows:

* If the meter name exactly matches.
* If the meter name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
| `string` | `false` | +| `name` | Configure meter names to match, evaluated as follows:

* If the meter name exactly matches.
* If the meter name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
| One of:
* `string`
| `false` | | `config` | The meter config. | [`ExperimentalMeterConfig`](#ExperimentalMeterConfig) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | @@ -1142,12 +1185,13 @@ No properties.
Path patterns -* `.meter_provider.meter_configurator/development.meters[]`
+* `.meter_provider.meter_configurator/development.meters[]` + ### ExperimentalOtlpFileExporter | Property | Description | Type | Required? | |---|---|---|---| -| `output_stream` | TODO | * `string`
* `null`
| `false` | +| `output_stream` | TODO | One of:
* `string`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -1175,12 +1219,16 @@ No properties.
Path patterns -* `.logger_provider.processors[].batch.exporter.otlp_file/development`* `.logger_provider.processors[].simple.exporter.otlp_file/development`* `.tracer_provider.processors[].batch.exporter.otlp_file/development`* `.tracer_provider.processors[].simple.exporter.otlp_file/development`
+* `.logger_provider.processors[].batch.exporter.otlp_file/development` +* `.logger_provider.processors[].simple.exporter.otlp_file/development` +* `.tracer_provider.processors[].batch.exporter.otlp_file/development` +* `.tracer_provider.processors[].simple.exporter.otlp_file/development` + ### ExperimentalOtlpFileMetricExporter | Property | Description | Type | Required? | |---|---|---|---| -| `output_stream` | TODO | * `string`
* `null`
| `false` | +| `output_stream` | TODO | One of:
* `string`
* `null`
| `false` | | `temporality_preference` | TODO | [`ExporterTemporalityPreference`](#ExporterTemporalityPreference) | `false` | | `default_histogram_aggregation` | TODO | [`ExporterDefaultHistogramAggregation`](#ExporterDefaultHistogramAggregation) | `false` | @@ -1218,12 +1266,13 @@ No properties.
Path patterns -* `.meter_provider.readers[].periodic.exporter.otlp_file/development`
+* `.meter_provider.readers[].periodic.exporter.otlp_file/development` + ### ExperimentalPeerInstrumentation | Property | Description | Type | Required? | |---|---|---|---| -| `service_mapping` | TODO | `array` of `array` | `false` | +| `service_mapping` | TODO | `array` of [`object`](#object) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -1261,16 +1310,17 @@ No properties.
Path patterns -* `.instrumentation/development.general.peer`
+* `.instrumentation/development.general.peer` + ### ExperimentalPrometheusMetricExporter | Property | Description | Type | Required? | |---|---|---|---| -| `host` | Configure host.
If omitted or null, localhost is used.
| * `string`
* `null`
| `false` | -| `port` | Configure port.
If omitted or null, 9464 is used.
| * `integer`
* `null`
| `false` | -| `without_units` | Configure Prometheus Exporter to produce metrics without a unit suffix or UNIT metadata.
If omitted or null, false is used.
| * `boolean`
* `null`
| `false` | -| `without_type_suffix` | Configure Prometheus Exporter to produce metrics without a type suffix.
If omitted or null, false is used.
| * `boolean`
* `null`
| `false` | -| `without_scope_info` | Configure Prometheus Exporter to produce metrics without a scope info metric.
If omitted or null, false is used.
| * `boolean`
* `null`
| `false` | +| `host` | Configure host.
If omitted or null, localhost is used.
| One of:
* `string`
* `null`
| `false` | +| `port` | Configure port.
If omitted or null, 9464 is used.
| One of:
* `integer`
* `null`
| `false` | +| `without_units` | Configure Prometheus Exporter to produce metrics without a unit suffix or UNIT metadata.
If omitted or null, false is used.
| One of:
* `boolean`
* `null`
| `false` | +| `without_type_suffix` | Configure Prometheus Exporter to produce metrics without a type suffix.
If omitted or null, false is used.
| One of:
* `boolean`
* `null`
| `false` | +| `without_scope_info` | Configure Prometheus Exporter to produce metrics without a scope info metric.
If omitted or null, false is used.
| One of:
* `boolean`
* `null`
| `false` | | `with_resource_constant_labels` | Configure Prometheus Exporter to add resource attributes as metrics attributes. | [`IncludeExclude`](#IncludeExclude) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | @@ -1331,7 +1381,8 @@ No properties.
Path patterns -* `.meter_provider.readers[].pull.exporter.prometheus/development`
+* `.meter_provider.readers[].pull.exporter.prometheus/development` + ### ExperimentalResourceDetection | Property | Description | Type | Required? | @@ -1366,7 +1417,8 @@ No properties.
Path patterns -* `.resource.detection/development`
+* `.resource.detection/development` + ### ExperimentalResourceDetector No properties. @@ -1392,12 +1444,13 @@ No properties.
Path patterns -* `.resource.detection/development.detectors[]`
+* `.resource.detection/development.detectors[]` + ### ExperimentalTracerConfig | Property | Description | Type | Required? | |---|---|---|---| -| `disabled` | Configure if the tracer is enabled or not. | `boolean` | `true` | +| `disabled` | Configure if the tracer is enabled or not. | One of:
* `boolean`
| `true` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -1426,7 +1479,9 @@ No properties.
Path patterns -* `.tracer_provider.tracer_configurator/development.default_config`* `.tracer_provider.tracer_configurator/development.tracers[].config`
+* `.tracer_provider.tracer_configurator/development.default_config` +* `.tracer_provider.tracer_configurator/development.tracers[].config` + ### ExperimentalTracerConfigurator | Property | Description | Type | Required? | @@ -1463,12 +1518,13 @@ No properties.
Path patterns -* `.tracer_provider.tracer_configurator/development`
+* `.tracer_provider.tracer_configurator/development` + ### ExperimentalTracerMatcherAndConfig | Property | Description | Type | Required? | |---|---|---|---| -| `name` | Configure tracer names to match, evaluated as follows:

* If the tracer name exactly matches.
* If the tracer name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
| `string` | `true` | +| `name` | Configure tracer names to match, evaluated as follows:

* If the tracer name exactly matches.
* If the tracer name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
| One of:
* `string`
| `true` | | `config` | The tracer config. | [`ExperimentalTracerConfig`](#ExperimentalTracerConfig) | `true` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | @@ -1503,13 +1559,14 @@ No properties.
Path patterns -* `.tracer_provider.tracer_configurator/development.tracers[]`
+* `.tracer_provider.tracer_configurator/development.tracers[]` + ### ExplicitBucketHistogramAggregation | Property | Description | Type | Required? | |---|---|---|---| -| `boundaries` | Configure bucket boundaries.
If omitted, [0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, 7500, 10000] is used.
| `array` of `array` | `false` | -| `record_min_max` | Configure record min and max.
If omitted or null, true is used.
| * `boolean`
* `null`
| `false` | +| `boundaries` | Configure bucket boundaries.
If omitted, [0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, 7500, 10000] is used.
| `array` of [`number`](#number) | `false` | +| `record_min_max` | Configure record min and max.
If omitted or null, true is used.
| One of:
* `boolean`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -1544,7 +1601,8 @@ No properties.
Path patterns -* `.meter_provider.views[].stream.aggregation.explicit_bucket_histogram`
+* `.meter_provider.views[].stream.aggregation.explicit_bucket_histogram` + ### ExporterDefaultHistogramAggregation No properties. @@ -1566,7 +1624,10 @@ No properties.
Path patterns -* `.meter_provider.readers[].periodic.exporter.otlp_http.default_histogram_aggregation`* `.meter_provider.readers[].periodic.exporter.otlp_grpc.default_histogram_aggregation`* `.meter_provider.readers[].periodic.exporter.otlp_file/development.default_histogram_aggregation`
+* `.meter_provider.readers[].periodic.exporter.otlp_http.default_histogram_aggregation` +* `.meter_provider.readers[].periodic.exporter.otlp_grpc.default_histogram_aggregation` +* `.meter_provider.readers[].periodic.exporter.otlp_file/development.default_histogram_aggregation` + ### ExporterTemporalityPreference No properties. @@ -1589,13 +1650,16 @@ No properties.
Path patterns -* `.meter_provider.readers[].periodic.exporter.otlp_http.temporality_preference`* `.meter_provider.readers[].periodic.exporter.otlp_grpc.temporality_preference`* `.meter_provider.readers[].periodic.exporter.otlp_file/development.temporality_preference`
+* `.meter_provider.readers[].periodic.exporter.otlp_http.temporality_preference` +* `.meter_provider.readers[].periodic.exporter.otlp_grpc.temporality_preference` +* `.meter_provider.readers[].periodic.exporter.otlp_file/development.temporality_preference` + ### IncludeExclude | Property | Description | Type | Required? | |---|---|---|---| -| `included` | Configure list of attribute key patterns to include from resource detectors.
Attribute keys from resource detectors are evaluated to match as follows:
* If the value of the attribute key exactly matches.
* If the value of the attribute key matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
If omitted, all attributes are included.
| `array` of `array` | `false` | -| `excluded` | Configure list of attribute key patterns to exclude from resource detectors. Applies after .resource.detectors.attributes.included (i.e. excluded has higher priority than included).
Attribute keys from resource detectors are evaluated to match as follows:
* If the value of the attribute key exactly matches.
* If the value of the attribute key matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
If omitted, .included attributes are included.
| `array` of `array` | `false` | +| `included` | Configure list of attribute key patterns to include from resource detectors.
Attribute keys from resource detectors are evaluated to match as follows:
* If the value of the attribute key exactly matches.
* If the value of the attribute key matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
If omitted, all attributes are included.
| `array` of [`string`](#string) | `false` | +| `excluded` | Configure list of attribute key patterns to exclude from resource detectors. Applies after .resource.detectors.attributes.included (i.e. excluded has higher priority than included).
Attribute keys from resource detectors are evaluated to match as follows:
* If the value of the attribute key exactly matches.
* If the value of the attribute key matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
If omitted, .included attributes are included.
| `array` of [`string`](#string) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -1627,7 +1691,10 @@ No properties.
Path patterns -* `.meter_provider.readers[].pull.exporter.prometheus/development.with_resource_constant_labels`* `.meter_provider.views[].stream.attribute_keys`* `.resource.detection/development.attributes`
+* `.meter_provider.readers[].pull.exporter.prometheus/development.with_resource_constant_labels` +* `.meter_provider.views[].stream.attribute_keys` +* `.resource.detection/development.attributes` + ### InstrumentType No properties. @@ -1654,7 +1721,8 @@ No properties.
Path patterns -* `.meter_provider.views[].selector.instrument_type`
+* `.meter_provider.views[].selector.instrument_type` + ### JaegerPropagator No properties. @@ -1673,13 +1741,14 @@ No properties.
Path patterns -* `.propagator.composite[].jaeger`
+* `.propagator.composite[].jaeger` + ### JaegerRemoteSampler | Property | Description | Type | Required? | |---|---|---|---| -| `endpoint` | TODO | * `string`
* `null`
| `false` | -| `interval` | TODO | * `integer`
* `null`
| `false` | +| `endpoint` | TODO | One of:
* `string`
* `null`
| `false` | +| `interval` | TODO | One of:
* `integer`
* `null`
| `false` | | `initial_sampler` | TODO | [`Sampler`](#Sampler) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | @@ -1720,7 +1789,9 @@ No properties.
Path patterns -* `.tracer_provider.sampler.jaeger_remote`
+* `.tracer_provider.sampler.jaeger_remote` +* `.tracer_provider.*.jaeger_remote` + ### LastValueAggregation No properties. @@ -1739,7 +1810,8 @@ No properties.
Path patterns -* `.meter_provider.views[].stream.aggregation.last_value`
+* `.meter_provider.views[].stream.aggregation.last_value` + ### LoggerProvider | Property | Description | Type | Required? | @@ -1954,7 +2026,8 @@ No properties.
Path patterns -* `.logger_provider`
+* `.logger_provider` + ### LogRecordExporter | Property | Description | Type | Required? | @@ -2006,13 +2079,15 @@ No properties.
Path patterns -* `.logger_provider.processors[].batch.exporter`* `.logger_provider.processors[].simple.exporter`
+* `.logger_provider.processors[].batch.exporter` +* `.logger_provider.processors[].simple.exporter` + ### LogRecordLimits | Property | Description | Type | Required? | |---|---|---|---| -| `attribute_value_length_limit` | Configure max attribute value size. Overrides .attribute_limits.attribute_value_length_limit.
Value must be non-negative.
If omitted or null, there is no limit.
| * `integer`
* `null`
| `false` | -| `attribute_count_limit` | Configure max attribute count. Overrides .attribute_limits.attribute_count_limit.
Value must be non-negative.
If omitted or null, 128 is used.
| * `integer`
* `null`
| `false` | +| `attribute_value_length_limit` | Configure max attribute value size. Overrides .attribute_limits.attribute_value_length_limit.
Value must be non-negative.
If omitted or null, there is no limit.
| One of:
* `integer`
* `null`
| `false` | +| `attribute_count_limit` | Configure max attribute count. Overrides .attribute_limits.attribute_count_limit.
Value must be non-negative.
If omitted or null, 128 is used.
| One of:
* `integer`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -2046,7 +2121,8 @@ No properties.
Path patterns -* `.logger_provider.limits`
+* `.logger_provider.limits` + ### LogRecordProcessor | Property | Description | Type | Required? | @@ -2087,7 +2163,8 @@ No properties.
Path patterns -* `.logger_provider.processors[]`
+* `.logger_provider.processors[]` + ### MeterProvider | Property | Description | Type | Required? | @@ -2827,7 +2904,8 @@ No properties.
Path patterns -* `.meter_provider`
+* `.meter_provider` + ### MetricProducer | Property | Description | Type | Required? | @@ -2864,7 +2942,9 @@ No properties.
Path patterns -* `.meter_provider.readers[].periodic.producers[]`* `.meter_provider.readers[].pull.producers[]`
+* `.meter_provider.readers[].periodic.producers[]` +* `.meter_provider.readers[].pull.producers[]` + ### MetricReader | Property | Description | Type | Required? | @@ -2898,13 +2978,14 @@ No properties.
Path patterns -* `.meter_provider.readers[]`
+* `.meter_provider.readers[]` + ### NameStringValuePair | Property | Description | Type | Required? | |---|---|---|---| | `name` | TODO | `string` | `true` | -| `value` | TODO | * `string`
* `null`
| `true` | +| `value` | TODO | One of:
* `string`
* `null`
| `true` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -2937,7 +3018,17 @@ No properties.
Path patterns -* `.logger_provider.processors[].batch.exporter.otlp_http.headers[]`* `.logger_provider.processors[].batch.exporter.otlp_grpc.headers[]`* `.logger_provider.processors[].simple.exporter.otlp_http.headers[]`* `.logger_provider.processors[].simple.exporter.otlp_grpc.headers[]`* `.meter_provider.readers[].periodic.exporter.otlp_http.headers[]`* `.meter_provider.readers[].periodic.exporter.otlp_grpc.headers[]`* `.tracer_provider.processors[].batch.exporter.otlp_http.headers[]`* `.tracer_provider.processors[].batch.exporter.otlp_grpc.headers[]`* `.tracer_provider.processors[].simple.exporter.otlp_http.headers[]`* `.tracer_provider.processors[].simple.exporter.otlp_grpc.headers[]`
+* `.logger_provider.processors[].batch.exporter.otlp_http.headers[]` +* `.logger_provider.processors[].batch.exporter.otlp_grpc.headers[]` +* `.logger_provider.processors[].simple.exporter.otlp_http.headers[]` +* `.logger_provider.processors[].simple.exporter.otlp_grpc.headers[]` +* `.meter_provider.readers[].periodic.exporter.otlp_http.headers[]` +* `.meter_provider.readers[].periodic.exporter.otlp_grpc.headers[]` +* `.tracer_provider.processors[].batch.exporter.otlp_http.headers[]` +* `.tracer_provider.processors[].batch.exporter.otlp_grpc.headers[]` +* `.tracer_provider.processors[].simple.exporter.otlp_http.headers[]` +* `.tracer_provider.processors[].simple.exporter.otlp_grpc.headers[]` + ### OpenCensusMetricProducer No properties. @@ -2956,14 +3047,16 @@ No properties.
Path patterns -* `.meter_provider.readers[].periodic.producers[].opencensus`* `.meter_provider.readers[].pull.producers[].opencensus`
+* `.meter_provider.readers[].periodic.producers[].opencensus` +* `.meter_provider.readers[].pull.producers[].opencensus` + ### OpentelemetryConfiguration | Property | Description | Type | Required? | |---|---|---|---| | `file_format` | TODO | `string` | `true` | -| `disabled` | TODO | * `boolean`
* `null`
| `false` | -| `log_level` | TODO | * `string`
* `null`
| `false` | +| `disabled` | TODO | One of:
* `boolean`
* `null`
| `false` | +| `log_level` | TODO | One of:
* `string`
* `null`
| `false` | | `attribute_limits` | TODO | [`AttributeLimits`](#AttributeLimits) | `false` | | `logger_provider` | TODO | [`LoggerProvider`](#LoggerProvider) | `false` | | `meter_provider` | TODO | [`MeterProvider`](#MeterProvider) | `false` | @@ -3078,7 +3171,8 @@ No properties.
Path patterns -* `.`
+* `.` + ### OpenTracingPropagator No properties. @@ -3097,20 +3191,21 @@ No properties.
Path patterns -* `.propagator.composite[].ottrace`
+* `.propagator.composite[].ottrace` + ### OtlpGrpcExporter | Property | Description | Type | Required? | |---|---|---|---| -| `endpoint` | Configure endpoint.
If omitted or null, http://localhost:4317 is used.
| * `string`
* `null`
| `false` | -| `certificate_file` | TODO | * `string`
* `null`
| `false` | -| `client_key_file` | TODO | * `string`
* `null`
| `false` | -| `client_certificate_file` | TODO | * `string`
* `null`
| `false` | +| `endpoint` | Configure endpoint.
If omitted or null, http://localhost:4317 is used.
| One of:
* `string`
* `null`
| `false` | +| `certificate_file` | TODO | One of:
* `string`
* `null`
| `false` | +| `client_key_file` | TODO | One of:
* `string`
* `null`
| `false` | +| `client_certificate_file` | TODO | One of:
* `string`
* `null`
| `false` | | `headers` | TODO | `array` of [`NameStringValuePair`](#NameStringValuePair) | `false` | -| `headers_list` | TODO | * `string`
* `null`
| `false` | -| `compression` | TODO | * `string`
* `null`
| `false` | -| `timeout` | TODO | * `integer`
* `null`
| `false` | -| `insecure` | Configure client transport security for the exporter's connection.
Only applicable when .endpoint is provided without http or https scheme. Implementations may choose to ignore .insecure.
If omitted or null, false is used.
| * `boolean`
* `null`
| `false` | +| `headers_list` | TODO | One of:
* `string`
* `null`
| `false` | +| `compression` | TODO | One of:
* `string`
* `null`
| `false` | +| `timeout` | TODO | One of:
* `integer`
* `null`
| `false` | +| `insecure` | Configure client transport security for the exporter's connection.
Only applicable when .endpoint is provided without http or https scheme. Implementations may choose to ignore .insecure.
If omitted or null, false is used.
| One of:
* `boolean`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -3195,20 +3290,24 @@ No properties.
Path patterns -* `.logger_provider.processors[].batch.exporter.otlp_grpc`* `.logger_provider.processors[].simple.exporter.otlp_grpc`* `.tracer_provider.processors[].batch.exporter.otlp_grpc`* `.tracer_provider.processors[].simple.exporter.otlp_grpc`
+* `.logger_provider.processors[].batch.exporter.otlp_grpc` +* `.logger_provider.processors[].simple.exporter.otlp_grpc` +* `.tracer_provider.processors[].batch.exporter.otlp_grpc` +* `.tracer_provider.processors[].simple.exporter.otlp_grpc` + ### OtlpGrpcMetricExporter | Property | Description | Type | Required? | |---|---|---|---| -| `endpoint` | TODO | * `string`
* `null`
| `false` | -| `certificate_file` | TODO | * `string`
* `null`
| `false` | -| `client_key_file` | TODO | * `string`
* `null`
| `false` | -| `client_certificate_file` | TODO | * `string`
* `null`
| `false` | +| `endpoint` | TODO | One of:
* `string`
* `null`
| `false` | +| `certificate_file` | TODO | One of:
* `string`
* `null`
| `false` | +| `client_key_file` | TODO | One of:
* `string`
* `null`
| `false` | +| `client_certificate_file` | TODO | One of:
* `string`
* `null`
| `false` | | `headers` | TODO | `array` of [`NameStringValuePair`](#NameStringValuePair) | `false` | -| `headers_list` | TODO | * `string`
* `null`
| `false` | -| `compression` | TODO | * `string`
* `null`
| `false` | -| `timeout` | TODO | * `integer`
* `null`
| `false` | -| `insecure` | TODO | * `boolean`
* `null`
| `false` | +| `headers_list` | TODO | One of:
* `string`
* `null`
| `false` | +| `compression` | TODO | One of:
* `string`
* `null`
| `false` | +| `timeout` | TODO | One of:
* `integer`
* `null`
| `false` | +| `insecure` | TODO | One of:
* `boolean`
* `null`
| `false` | | `temporality_preference` | TODO | [`ExporterTemporalityPreference`](#ExporterTemporalityPreference) | `false` | | `default_histogram_aggregation` | TODO | [`ExporterDefaultHistogramAggregation`](#ExporterDefaultHistogramAggregation) | `false` | @@ -3303,7 +3402,8 @@ No properties.
Path patterns -* `.meter_provider.readers[].periodic.exporter.otlp_grpc`
+* `.meter_provider.readers[].periodic.exporter.otlp_grpc` + ### OtlpHttpEncoding No properties. @@ -3325,19 +3425,24 @@ No properties.
Path patterns -* `.logger_provider.processors[].batch.exporter.otlp_http.encoding`* `.logger_provider.processors[].simple.exporter.otlp_http.encoding`* `.meter_provider.readers[].periodic.exporter.otlp_http.encoding`* `.tracer_provider.processors[].batch.exporter.otlp_http.encoding`* `.tracer_provider.processors[].simple.exporter.otlp_http.encoding`
+* `.logger_provider.processors[].batch.exporter.otlp_http.encoding` +* `.logger_provider.processors[].simple.exporter.otlp_http.encoding` +* `.meter_provider.readers[].periodic.exporter.otlp_http.encoding` +* `.tracer_provider.processors[].batch.exporter.otlp_http.encoding` +* `.tracer_provider.processors[].simple.exporter.otlp_http.encoding` + ### OtlpHttpExporter | Property | Description | Type | Required? | |---|---|---|---| -| `endpoint` | TODO | * `string`
* `null`
| `false` | -| `certificate_file` | TODO | * `string`
* `null`
| `false` | -| `client_key_file` | TODO | * `string`
* `null`
| `false` | -| `client_certificate_file` | TODO | * `string`
* `null`
| `false` | +| `endpoint` | TODO | One of:
* `string`
* `null`
| `false` | +| `certificate_file` | TODO | One of:
* `string`
* `null`
| `false` | +| `client_key_file` | TODO | One of:
* `string`
* `null`
| `false` | +| `client_certificate_file` | TODO | One of:
* `string`
* `null`
| `false` | | `headers` | TODO | `array` of [`NameStringValuePair`](#NameStringValuePair) | `false` | -| `headers_list` | TODO | * `string`
* `null`
| `false` | -| `compression` | TODO | * `string`
* `null`
| `false` | -| `timeout` | TODO | * `integer`
* `null`
| `false` | +| `headers_list` | TODO | One of:
* `string`
* `null`
| `false` | +| `compression` | TODO | One of:
* `string`
* `null`
| `false` | +| `timeout` | TODO | One of:
* `integer`
* `null`
| `false` | | `encoding` | Configure the encoding used for messages.
Values include: protobuf, json. Implementations may not support json.
If omitted or null, protobuf is used.
| [`OtlpHttpEncoding`](#OtlpHttpEncoding) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | @@ -3420,19 +3525,23 @@ No properties.
Path patterns -* `.logger_provider.processors[].batch.exporter.otlp_http`* `.logger_provider.processors[].simple.exporter.otlp_http`* `.tracer_provider.processors[].batch.exporter.otlp_http`* `.tracer_provider.processors[].simple.exporter.otlp_http`
+* `.logger_provider.processors[].batch.exporter.otlp_http` +* `.logger_provider.processors[].simple.exporter.otlp_http` +* `.tracer_provider.processors[].batch.exporter.otlp_http` +* `.tracer_provider.processors[].simple.exporter.otlp_http` + ### OtlpHttpMetricExporter | Property | Description | Type | Required? | |---|---|---|---| -| `endpoint` | Configure endpoint, including the metric specific path.
If omitted or null, http://localhost:4318/v1/metrics is used.
| * `string`
* `null`
| `false` | -| `certificate_file` | TODO | * `string`
* `null`
| `false` | -| `client_key_file` | TODO | * `string`
* `null`
| `false` | -| `client_certificate_file` | TODO | * `string`
* `null`
| `false` | +| `endpoint` | Configure endpoint, including the metric specific path.
If omitted or null, http://localhost:4318/v1/metrics is used.
| One of:
* `string`
* `null`
| `false` | +| `certificate_file` | TODO | One of:
* `string`
* `null`
| `false` | +| `client_key_file` | TODO | One of:
* `string`
* `null`
| `false` | +| `client_certificate_file` | TODO | One of:
* `string`
* `null`
| `false` | | `headers` | TODO | `array` of [`NameStringValuePair`](#NameStringValuePair) | `false` | -| `headers_list` | TODO | * `string`
* `null`
| `false` | -| `compression` | TODO | * `string`
* `null`
| `false` | -| `timeout` | TODO | * `integer`
* `null`
| `false` | +| `headers_list` | TODO | One of:
* `string`
* `null`
| `false` | +| `compression` | TODO | One of:
* `string`
* `null`
| `false` | +| `timeout` | TODO | One of:
* `integer`
* `null`
| `false` | | `encoding` | TODO | [`OtlpHttpEncoding`](#OtlpHttpEncoding) | `false` | | `temporality_preference` | TODO | [`ExporterTemporalityPreference`](#ExporterTemporalityPreference) | `false` | | `default_histogram_aggregation` | TODO | [`ExporterDefaultHistogramAggregation`](#ExporterDefaultHistogramAggregation) | `false` | @@ -3525,7 +3634,8 @@ No properties.
Path patterns -* `.meter_provider.readers[].periodic.exporter.otlp_http`
+* `.meter_provider.readers[].periodic.exporter.otlp_http` + ### ParentBasedSampler | Property | Description | Type | Required? | @@ -3575,13 +3685,15 @@ No properties.
Path patterns -* `.tracer_provider.sampler.parent_based`
+* `.tracer_provider.sampler.parent_based` +* `.tracer_provider.*.parent_based` + ### PeriodicMetricReader | Property | Description | Type | Required? | |---|---|---|---| -| `interval` | Configure delay interval (in milliseconds) between start of two consecutive exports.
Value must be non-negative.
If omitted or null, 60000 is used.
| * `integer`
* `null`
| `false` | -| `timeout` | Configure maximum allowed time (in milliseconds) to export data.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 30000 is used.
| * `integer`
* `null`
| `false` | +| `interval` | Configure delay interval (in milliseconds) between start of two consecutive exports.
Value must be non-negative.
If omitted or null, 60000 is used.
| One of:
* `integer`
* `null`
| `false` | +| `timeout` | Configure maximum allowed time (in milliseconds) to export data.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 30000 is used.
| One of:
* `integer`
* `null`
| `false` | | `exporter` | Configure exporter. | [`PushMetricExporter`](#PushMetricExporter) | `true` | | `producers` | Configure metric producers. | `array` of [`MetricProducer`](#MetricProducer) | `false` | | `cardinality_limits` | Configure cardinality limits. | [`CardinalityLimits`](#CardinalityLimits) | `false` | @@ -3636,13 +3748,14 @@ No properties.
Path patterns -* `.meter_provider.readers[].periodic`
+* `.meter_provider.readers[].periodic` + ### Propagator | Property | Description | Type | Required? | |---|---|---|---| | `composite` | Configure the propagators in the composite text map propagator. Entries from .composite_list are appended to the list here with duplicates filtered out.
Built-in propagator keys include: tracecontext, baggage, b3, b3multi, jaeger, ottrace. Known third party keys include: xray.
If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used.
| `array` of [`TextMapPropagator`](#TextMapPropagator) | `false` | -| `composite_list` | Configure the propagators in the composite text map propagator. Entries are appended to .composite with duplicates filtered out.
The value is a comma separated list of propagator identifiers matching the format of OTEL_PROPAGATORS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details.
Built-in propagator identifiers include: tracecontext, baggage, b3, b3multi, jaeger, ottrace. Known third party identifiers include: xray.
If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used.
| * `string`
* `null`
| `false` | +| `composite_list` | Configure the propagators in the composite text map propagator. Entries are appended to .composite with duplicates filtered out.
The value is a comma separated list of propagator identifiers matching the format of OTEL_PROPAGATORS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details.
Built-in propagator identifiers include: tracecontext, baggage, b3, b3multi, jaeger, ottrace. Known third party identifiers include: xray.
If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used.
| One of:
* `string`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -3753,7 +3866,8 @@ No properties.
Path patterns -* `.propagator`
+* `.propagator` + ### PullMetricExporter | Property | Description | Type | Required? | @@ -3792,7 +3906,8 @@ No properties.
Path patterns -* `.meter_provider.readers[].pull.exporter`
+* `.meter_provider.readers[].pull.exporter` + ### PullMetricReader | Property | Description | Type | Required? | @@ -3835,7 +3950,8 @@ No properties.
Path patterns -* `.meter_provider.readers[].pull`
+* `.meter_provider.readers[].pull` + ### PushMetricExporter | Property | Description | Type | Required? | @@ -3887,15 +4003,16 @@ No properties.
Path patterns -* `.meter_provider.readers[].periodic.exporter`
+* `.meter_provider.readers[].periodic.exporter` + ### Resource | Property | Description | Type | Required? | |---|---|---|---| | `attributes` | Configure resource attributes. Entries have higher priority than entries from .resource.attributes_list.
Entries must contain .name and .value, and may optionally include .type. If an entry's .type omitted or null, string is used.
The .value's type must match the .type. Values for .type include: string, bool, int, double, string_array, bool_array, int_array, double_array.
| `array` of [`AttributeNameValue`](#AttributeNameValue) | `false` | | `detection/development` | Configure resource detection.
This type is in development and subject to breaking changes in minor versions.
If omitted or null, resource detection is disabled.
| [`ExperimentalResourceDetection`](#ExperimentalResourceDetection) | `false` | -| `schema_url` | Configure resource schema URL.
If omitted or null, no schema URL is used.
| * `string`
* `null`
| `false` | -| `attributes_list` | Configure resource attributes. Entries have lower priority than entries from .resource.attributes.
The value is a list of comma separated key-value pairs matching the format of OTEL_RESOURCE_ATTRIBUTES. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details.
If omitted or null, no resource attributes are added.
| * `string`
* `null`
| `false` | +| `schema_url` | Configure resource schema URL.
If omitted or null, no schema URL is used.
| One of:
* `string`
* `null`
| `false` | +| `attributes_list` | Configure resource attributes. Entries have lower priority than entries from .resource.attributes.
The value is a list of comma separated key-value pairs matching the format of OTEL_RESOURCE_ATTRIBUTES. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details.
If omitted or null, no resource attributes are added.
| One of:
* `string`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -4038,7 +4155,8 @@ No properties.
Path patterns -* `.resource`
+* `.resource` + ### Sampler | Property | Description | Type | Required? | @@ -4095,7 +4213,8 @@ No properties.
Path patterns -* `.tracer_provider.sampler`
+* `.tracer_provider.sampler` + ### SimpleLogRecordProcessor | Property | Description | Type | Required? | @@ -4125,7 +4244,8 @@ No properties.
Path patterns -* `.logger_provider.processors[].simple`
+* `.logger_provider.processors[].simple` + ### SimpleSpanProcessor | Property | Description | Type | Required? | @@ -4155,7 +4275,8 @@ No properties.
Path patterns -* `.tracer_provider.processors[].simple`
+* `.tracer_provider.processors[].simple` + ### SpanExporter | Property | Description | Type | Required? | @@ -4212,17 +4333,19 @@ No properties.
Path patterns -* `.tracer_provider.processors[].batch.exporter`* `.tracer_provider.processors[].simple.exporter`
+* `.tracer_provider.processors[].batch.exporter` +* `.tracer_provider.processors[].simple.exporter` + ### SpanLimits | Property | Description | Type | Required? | |---|---|---|---| -| `attribute_value_length_limit` | Configure max attribute value size. Overrides .attribute_limits.attribute_value_length_limit.
Value must be non-negative.
If omitted or null, there is no limit.
| * `integer`
* `null`
| `false` | -| `attribute_count_limit` | Configure max attribute count. Overrides .attribute_limits.attribute_count_limit.
Value must be non-negative.
If omitted or null, 128 is used.
| * `integer`
* `null`
| `false` | -| `event_count_limit` | Configure max span event count.
Value must be non-negative.
If omitted or null, 128 is used.
| * `integer`
* `null`
| `false` | -| `link_count_limit` | Configure max span link count.
Value must be non-negative.
If omitted or null, 128 is used.
| * `integer`
* `null`
| `false` | -| `event_attribute_count_limit` | Configure max attributes per span event.
Value must be non-negative.
If omitted or null, 128 is used.
| * `integer`
* `null`
| `false` | -| `link_attribute_count_limit` | Configure max attributes per span link.
Value must be non-negative.
If omitted or null, 128 is used.
| * `integer`
* `null`
| `false` | +| `attribute_value_length_limit` | Configure max attribute value size. Overrides .attribute_limits.attribute_value_length_limit.
Value must be non-negative.
If omitted or null, there is no limit.
| One of:
* `integer`
* `null`
| `false` | +| `attribute_count_limit` | Configure max attribute count. Overrides .attribute_limits.attribute_count_limit.
Value must be non-negative.
If omitted or null, 128 is used.
| One of:
* `integer`
* `null`
| `false` | +| `event_count_limit` | Configure max span event count.
Value must be non-negative.
If omitted or null, 128 is used.
| One of:
* `integer`
* `null`
| `false` | +| `link_count_limit` | Configure max span link count.
Value must be non-negative.
If omitted or null, 128 is used.
| One of:
* `integer`
* `null`
| `false` | +| `event_attribute_count_limit` | Configure max attributes per span event.
Value must be non-negative.
If omitted or null, 128 is used.
| One of:
* `integer`
* `null`
| `false` | +| `link_attribute_count_limit` | Configure max attributes per span link.
Value must be non-negative.
If omitted or null, 128 is used.
| One of:
* `integer`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -4288,7 +4411,8 @@ No properties.
Path patterns -* `.tracer_provider.limits`
+* `.tracer_provider.limits` + ### SpanProcessor | Property | Description | Type | Required? | @@ -4330,7 +4454,8 @@ No properties.
Path patterns -* `.tracer_provider.processors[]`
+* `.tracer_provider.processors[]` + ### SumAggregation No properties. @@ -4349,7 +4474,8 @@ No properties.
Path patterns -* `.meter_provider.views[].stream.aggregation.sum`
+* `.meter_provider.views[].stream.aggregation.sum` + ### TextMapPropagator | Property | Description | Type | Required? | @@ -4411,7 +4537,8 @@ No properties.
Path patterns -* `.propagator.composite[]`
+* `.propagator.composite[]` + ### TraceContextPropagator No properties. @@ -4430,12 +4557,13 @@ No properties.
Path patterns -* `.propagator.composite[].tracecontext`
+* `.propagator.composite[].tracecontext` + ### TraceIdRatioBasedSampler | Property | Description | Type | Required? | |---|---|---|---| -| `ratio` | TODO | * `number`
* `null`
| `false` | +| `ratio` | TODO | One of:
* `number`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -4463,7 +4591,8 @@ No properties.
Path patterns -* `.tracer_provider.sampler.trace_id_ratio_based`
+* `.tracer_provider.sampler.trace_id_ratio_based` + ### TracerProvider | Property | Description | Type | Required? | @@ -4853,7 +4982,8 @@ No properties.
Path patterns -* `.tracer_provider`
+* `.tracer_provider` + ### View | Property | Description | Type | Required? | @@ -4885,17 +5015,18 @@ No properties.
Path patterns -* `.meter_provider.views[]`
+* `.meter_provider.views[]` + ### ViewSelector | Property | Description | Type | Required? | |---|---|---|---| -| `instrument_name` | Configure instrument name selection criteria.
If omitted or null, all instrument names match.
| * `string`
* `null`
| `false` | +| `instrument_name` | Configure instrument name selection criteria.
If omitted or null, all instrument names match.
| One of:
* `string`
* `null`
| `false` | | `instrument_type` | Configure instrument type selection criteria.
Values include: counter, gauge, histogram, observable_counter, observable_gauge, observable_up_down_counter, up_down_counter.
If omitted or null, all instrument types match.
| [`InstrumentType`](#InstrumentType) | `false` | -| `unit` | Configure the instrument unit selection criteria.
If omitted or null, all instrument units match.
| * `string`
* `null`
| `false` | -| `meter_name` | Configure meter name selection criteria.
If omitted or null, all meter names match.
| * `string`
* `null`
| `false` | -| `meter_version` | Configure meter version selection criteria.
If omitted or null, all meter versions match.
| * `string`
* `null`
| `false` | -| `meter_schema_url` | Configure meter schema url selection criteria.
If omitted or null, all meter schema URLs match.
| * `string`
* `null`
| `false` | +| `unit` | Configure the instrument unit selection criteria.
If omitted or null, all instrument units match.
| One of:
* `string`
* `null`
| `false` | +| `meter_name` | Configure meter name selection criteria.
If omitted or null, all meter names match.
| One of:
* `string`
* `null`
| `false` | +| `meter_version` | Configure meter version selection criteria.
If omitted or null, all meter versions match.
| One of:
* `string`
* `null`
| `false` | +| `meter_schema_url` | Configure meter schema url selection criteria.
If omitted or null, all meter schema URLs match.
| One of:
* `string`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -4952,15 +5083,16 @@ No properties.
Path patterns -* `.meter_provider.views[].selector`
+* `.meter_provider.views[].selector` + ### ViewStream | Property | Description | Type | Required? | |---|---|---|---| -| `name` | Configure metric name of the resulting stream(s).
If omitted or null, the instrument's original name is used.
| * `string`
* `null`
| `false` | -| `description` | Configure metric description of the resulting stream(s).
If omitted or null, the instrument's origin description is used.
| * `string`
* `null`
| `false` | +| `name` | Configure metric name of the resulting stream(s).
If omitted or null, the instrument's original name is used.
| One of:
* `string`
* `null`
| `false` | +| `description` | Configure metric description of the resulting stream(s).
If omitted or null, the instrument's origin description is used.
| One of:
* `string`
* `null`
| `false` | | `aggregation` | Configure aggregation of the resulting stream(s).
Values include: default, drop, explicit_bucket_histogram, base2_exponential_bucket_histogram, last_value, sum. For behavior of values see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#aggregation.
If omitted, default is used.
| [`Aggregation`](#Aggregation) | `false` | -| `aggregation_cardinality_limit` | Configure the aggregation cardinality limit.
If omitted or null, the metric reader's default cardinality limit is used.
| * `integer`
* `null`
| `false` | +| `aggregation_cardinality_limit` | Configure the aggregation cardinality limit.
If omitted or null, the metric reader's default cardinality limit is used.
| One of:
* `integer`
* `null`
| `false` | | `attribute_keys` | Configure attribute keys retained in the resulting stream(s).
| [`IncludeExclude`](#IncludeExclude) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | @@ -5009,13 +5141,14 @@ No properties.
Path patterns -* `.meter_provider.views[].stream`
+* `.meter_provider.views[].stream` + ### ZipkinSpanExporter | Property | Description | Type | Required? | |---|---|---|---| -| `endpoint` | Configure endpoint.
If omitted or null, http://localhost:9411/api/v2/spans is used.
| * `string`
* `null`
| `false` | -| `timeout` | Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates indefinite.
If omitted or null, 10000 is used.
| * `integer`
* `null`
| `false` | +| `endpoint` | Configure endpoint.
If omitted or null, http://localhost:9411/api/v2/spans is used.
| One of:
* `string`
* `null`
| `false` | +| `timeout` | Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates indefinite.
If omitted or null, 10000 is used.
| One of:
* `integer`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -5051,4 +5184,6 @@ No properties.
Path patterns -* `.tracer_provider.processors[].batch.exporter.zipkin`* `.tracer_provider.processors[].simple.exporter.zipkin`
+* `.tracer_provider.processors[].batch.exporter.zipkin` +* `.tracer_provider.processors[].simple.exporter.zipkin` + diff --git a/schema/instrumentation.json b/schema/instrumentation.json index b698ddd4..e9f6d408 100644 --- a/schema/instrumentation.json +++ b/schema/instrumentation.json @@ -66,20 +66,59 @@ "service_mapping": { "type": "array", "items": { - "type": "object", - "additionalProperties": false, - "properties": { - "peer": { - "type": "string" - }, - "service": { - "type": "string" - } - }, - "required": [ - "peer", - "service" - ] + "$ref": "#/$defs/ExperimentalPeerServiceMapping" + } + } + } + }, + "ExperimentalPeerServiceMapping": { + "type": "object", + "additionalProperties": false, + "properties": { + "peer": { + "type": "string" + }, + "service": { + "type": "string" + } + }, + "required": [ + "peer", + "service" + ] + }, + "ExperimentalHttpClientInstrumentation": { + "type": "object", + "additionalProperties": false, + "properties": { + "request_captured_headers": { + "type": "array", + "items": { + "type": "string" + } + }, + "response_captured_headers": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "ExperimentalHttpServerInstrumentation": { + "type": "object", + "additionalProperties": false, + "properties": { + "request_captured_headers": { + "type": "array", + "items": { + "type": "string" + } + }, + "response_captured_headers": { + "type": "array", + "items": { + "type": "string" } } } @@ -89,40 +128,10 @@ "additionalProperties": false, "properties": { "client": { - "type": "object", - "additionalProperties": false, - "properties": { - "request_captured_headers": { - "type": "array", - "items": { - "type": "string" - } - }, - "response_captured_headers": { - "type": "array", - "items": { - "type": "string" - } - } - } + "$ref": "#/$defs/ExperimentalHttpClientInstrumentation" }, "server": { - "type": "object", - "additionalProperties": false, - "properties": { - "request_captured_headers": { - "type": "array", - "items": { - "type": "string" - } - }, - "response_captured_headers": { - "type": "array", - "items": { - "type": "string" - } - } - } + "$ref": "#/$defs/ExperimentalHttpServerInstrumentation" } } }, diff --git a/schema/meta_schema.yaml b/schema/meta_schema.yaml index 4b278568..6f6387cf 100644 --- a/schema/meta_schema.yaml +++ b/schema/meta_schema.yaml @@ -149,12 +149,24 @@ description: | Configure instrumentations following the http semantic conventions. See http semantic conventions: https://opentelemetry.io/docs/specs/semconv/http/ +- type: ExperimentalHttpClientInstrumentation + properties: + - property: request_captured_headers + description: TODO + - property: response_captured_headers + description: TODO - type: ExperimentalHttpInstrumentation properties: - property: client description: Configure instrumentations following the http client semantic conventions. - property: server description: Configure instrumentations following the http server semantic conventions. +- type: ExperimentalHttpServerInstrumentation + properties: + - property: request_captured_headers + description: TODO + - property: response_captured_headers + description: TODO - type: ExperimentalInstrumentation properties: - property: general @@ -241,6 +253,12 @@ properties: - property: service_mapping description: TODO +- type: ExperimentalPeerServiceMapping + properties: + - property: peer + description: TODO + - property: service + description: TODO - type: ExperimentalPrometheusMetricExporter properties: - property: host diff --git a/scripts1/generate-descriptions.js b/scripts1/generate-descriptions.js index 9e15848f..60e8b03e 100644 --- a/scripts1/generate-descriptions.js +++ b/scripts1/generate-descriptions.js @@ -1,16 +1,112 @@ -import { - readJsonSchemaTypes -} from "./json-schema.js"; +import fs from 'fs'; +import yaml from 'yaml'; +import {schemaDirPath} from "./util.js"; +import {readAndFixMetaSchemaTypes} from "./meta-schema.js"; +import {readJsonSchemaTypes, resolveJsonSchemaPropertyType, resolveRef} from "./json-schema.js"; -const jsonSchemaTypes = readJsonSchemaTypes(); +let inputFile = '/Users/bergfamily/code/opentelemetry-configuration/examples/kitchen-sink.yaml'; +let outputFile = null; // '/Users/bergfamily/code/opentelemetry-configuration/examples/kitchen-sink-new.yaml'; -// console.log(JSON.stringify(jsonSchemaTypes, null, 2)); -jsonSchemaTypes.forEach(type => { - const json = { - type: type.type, - file: type.file, - pathPatterns: type.pathPatterns, - }; - console.log(JSON.stringify(json, null, 2)); +const { messages, types } = readAndFixMetaSchemaTypes(); +const metaSchemaTypesByType = {}; +types.forEach(type => metaSchemaTypesByType[type.type] = type); + +if (messages.length > 0) { + throw new Error("Meta schema has problems. Please run fix-meta-schema and try again."); +} + +const jsonSchemaTypesByType = {}; +readJsonSchemaTypes().forEach(type => jsonSchemaTypesByType[type.type] = type); + + +// Read in the input file +const fileContent = fs.readFileSync(inputFile, "utf-8"); +const fileDoc = yaml.parseDocument(fileContent); +let counter = 0; +let lastNode = null; +// Visit each key/value pair in the input file YAML, attempting to match against description rules +// and setting a comment with the description from the matching rule +yaml.visit(fileDoc, { + Pair: (key, node, path) => { + if (yaml.isSeq(node.value)) { + node.value.items.forEach(item => item.commentBefore = null); + } + let prevLastNode = lastNode; + lastNode = node; + counter++; + + const parentPath = pathToString(path); + const propertyKey = node.key.value; + + const parentJsonSchemaType = resolveParentNodeType(jsonSchemaTypesByType, path); + const type = parentJsonSchemaType ? parentJsonSchemaType.type : null; + + console.log(`${parentPath} - ${propertyKey} - ${type}`); + + if (!parentJsonSchemaType) { + return; + } + + const parentMetaSchemaType = metaSchemaTypesByType[parentJsonSchemaType.type]; + if (!parentMetaSchemaType) { + return; + } + const property = parentMetaSchemaType.properties.find(item => item.property === propertyKey); + const hasAdditionalProperties = parentJsonSchemaType.schema['additionalProperties'] || false; + if (!property && !hasAdditionalProperties) { + throw new Error(`Unable to find property ${propertyKey} for type ${parentMetaSchemaType.type}`); + } + } }); + +// Print the output, or write it to a file +if (outputFile === null) { + console.log("No output file arg set, logging to console."); + // console.log(String(fileDoc)) +} else { + // console.log("Writing output to \"" + outputFile + "\""); + fs.writeFileSync(outputFile, String(fileDoc)) +} + +// Helper functions + +// Convert an array of path elements JSON dot notation +function pathToString(path) { + const elements = [] + path.slice().forEach(entry => { + if (yaml.isSeq(entry)) { + elements.push("[]"); + } + if (yaml.isPair(entry)) { + elements.push("."); + elements.push(entry.key.value); + } + }); + return elements.length === 0 ? "." : elements.join(""); +} + +function resolveParentNodeType(jsonSchemaTypesByType, path) { + let last = jsonSchemaTypesByType['OpentelemetryConfiguration']; + if (!last) { + throw new Error(`JSON schema missing root type 'OpenTelemetryConfiguration'`); + } + for (let i = 0; i < path.length; i++) { + const entry = path[i]; + if (yaml.isPair(entry)) { + const propertyKey = entry.key.value; + let jsonSchemaPropertyType; + try { + jsonSchemaPropertyType = resolveJsonSchemaPropertyType(last, propertyKey, jsonSchemaTypesByType); + } catch (error) { + return null; + } + last = jsonSchemaTypesByType[jsonSchemaPropertyType.type]; + if (!last) { + console.log(`No type for ${jsonSchemaPropertyType.type}`); + return null; + } + } + } + return last; +} diff --git a/scripts1/generate-markdown.js b/scripts1/generate-markdown.js index 07b6da4d..9481066c 100644 --- a/scripts1/generate-markdown.js +++ b/scripts1/generate-markdown.js @@ -1,5 +1,5 @@ import { - readJsonSchemaTypes, resolveRef + readJsonSchemaTypes, resolveJsonSchemaPropertyType, resolveRef } from "./json-schema.js"; import {readAndFixMetaSchemaTypes} from "./meta-schema.js"; import fs from "node:fs"; @@ -17,57 +17,26 @@ readJsonSchemaTypes().forEach(type => jsonSchemaTypesByType[type.type] = type); const output = []; const languages = ['c++', 'c#', 'erlang', 'go', 'java', 'js', 'php', 'python', 'ruby', 'rust', 'swift'] -class JsonSchemaType { - type; - isPrimitive; - isArray; - isOneOf; - - constructor(type, isPrimitive, isArray, isOneOf) { - this.type = type; - this.isPrimitive = isPrimitive; - this.isArray = isArray; - this.isOneOf = isOneOf; - } -} - -function resolvePropertyTypes(jsonSchemaType, property, jsonSchemaTypesByType) { - const properties = jsonSchemaType.schema['properties']; - if (!properties) { - throw new Error(`Unable to resolve property ${property} for ${jsonSchemaType.type}. Type doesn't have properties.`) - } - const jsonSchemaProperty = properties[property]; - if (!jsonSchemaProperty) { - throw new Error(`Unable to resolve property ${property} for ${jsonSchemaType.type}. Type doesn't have ${property}.`); - } - const type = jsonSchemaProperty['type']; - const ref = jsonSchemaProperty['$ref']; - const items = jsonSchemaProperty['items']; - const oneOf = jsonSchemaProperty['oneOf']; - if (type === 'array' && items) { - const itemsType = items['type']; - const itemsRef = items['$ref']; - if (itemsType) { - const typeArr = Array.isArray(type) ? type : [type]; - return typeArr.map(item => new JsonSchemaType(item, true, true, false)); - } - if (itemsRef) { - const resolvedRef = resolveRef(itemsRef, jsonSchemaTypesByType); - return [new JsonSchemaType(resolvedRef.type, false, true, false)]; - } - } - if (type) { - const typeArr = Array.isArray(type) ? type : [type]; - return typeArr.map(item => new JsonSchemaType(item, true, false, false)); +function formatJsonSchemaPropertyType(type, prefix, suffix) { + const output = []; + output.push(prefix); + if (type.isOneOf) { + output.push('One of:
'); + type.oneOfTypes.forEach(item => { + output.push(formatJsonSchemaPropertyType(item, '* ', '
')); + }); + return output.join(''); } - if (ref) { - const resolvedRef = resolveRef(ref, jsonSchemaTypesByType); - return [new JsonSchemaType(resolvedRef.type, false, false, false)]; + if (type.isSeq) { + output.push('`array` of '); } - if (oneOf) { - return [new JsonSchemaType('oneOf', false, false, true)]; + if (type.isScalar) { + output.push(`\`${type.type}\``); + } else { + output.push(`[\`${type.type}\`](#${type.type})`); } - throw new Error(`Unable to resolve types of property ${property}: ${JSON.stringify(jsonSchemaType)}.`) + output.push(suffix); + return output.join(''); } types.sort((a, b) => a.type.localeCompare(b.type)); @@ -90,30 +59,11 @@ types.forEach(metaSchemaType => { output.push(`| Property | Description | Type | Required? |\n`); output.push("|---|---|---|---|\n"); metaSchemaType.properties.forEach(property => { - const formatted = []; - const propertyTypes = resolvePropertyTypes(jsonSchemaType, property.property, jsonSchemaTypesByType); - propertyTypes.forEach(type => { - if (propertyTypes.length > 1) { - formatted.push('* '); - } - if (type.isArray) { - formatted.push('`array` of ') - } - if (type.isPrimitive || type.isOneOf) { - formatted.push(`\`${type.type}\``); - } else { - formatted.push(`[\`${type.type}\`](#${type.type})`); - } - if (type.isOneOf) { - formatted.push(' (see JSON schema for details)'); - } - if (propertyTypes.length > 1) { - formatted.push('
'); - } - }); + const propertyType = resolveJsonSchemaPropertyType(jsonSchemaType, property.property, jsonSchemaTypesByType); + const formattedPropertyType = formatJsonSchemaPropertyType(propertyType, '', ''); const isRequired = required !== undefined && required.includes(property.property); - output.push(`| \`${property.property}\` | ${property.description.split("\n").join("
")} | ${formatted.join("")} | \`${isRequired}\` |\n`); + output.push(`| \`${property.property}\` | ${property.description.split("\n").join("
")} | ${formattedPropertyType} | \`${isRequired}\` |\n`); }); output.push('\n'); @@ -143,7 +93,7 @@ types.forEach(metaSchemaType => { output.push(`
\n`); output.push(`Path patterns\n\n`); jsonSchemaType.pathPatterns.forEach(pathPattern => { - output.push(`* \`${pathPattern}\``); + output.push(`* \`${pathPattern}\`\n`); }); output.push(`
\n`); }); diff --git a/scripts1/json-schema.js b/scripts1/json-schema.js index 9e00ec86..94231bfc 100644 --- a/scripts1/json-schema.js +++ b/scripts1/json-schema.js @@ -43,14 +43,6 @@ export function readJsonSchemaTypes() { jsonSchemaType.schema = topLevelSchema; }); - // Compute path patterns for types - // DFS starting at OpenTelemetryConfigurationType - let current = typesByType['OpenTelemetryConfiguration']; - if (current === null) { - throw new Error("Missing OpenTelemetryConfiguration type"); - } - recursiveAddPathPatterns(current, typesByType, ".", []); - return Object.values(typesByType); } @@ -76,37 +68,63 @@ function getDefs(jsonSchema) { return defs; } -function recursiveAddPathPatterns(currentJsonSchemaType, typesByType, currentPath, parentTypes) { - currentJsonSchemaType.pathPatterns.push(currentPath); - - const properties = currentJsonSchemaType.schema['properties']; +export function resolveJsonSchemaPropertyType(jsonSchemaType, property, jsonSchemaTypesByType) { + const properties = jsonSchemaType.schema['properties']; if (!properties) { - return; + throw new Error(`Unable to resolve property ${property} for ${jsonSchemaType.type}. Type doesn't have properties.`) } - const nextParentTypes = [...parentTypes, currentJsonSchemaType]; - Object.entries(properties).forEach(([property, schema]) => { - let ref = schema['$ref']; - const isArray = schema['type'] === 'array'; - if (!ref && isArray) { - const items = schema['items']; - if (items) { - ref = items['$ref']; - } - } - if (!ref) { - return; - } - const resolvedRef = resolveRef(ref, typesByType); - if (parentTypes.find(type => type.type === resolvedRef.type)) { - return; // Recursive reference + const jsonSchemaProperty = properties[property]; + if (!jsonSchemaProperty) { + throw new Error(`Unable to resolve property ${property} for ${jsonSchemaType.type}. Type doesn't have ${property}.`); + } + const type = jsonSchemaProperty['type']; + const ref = jsonSchemaProperty['$ref']; + const items = jsonSchemaProperty['items']; + const oneOf = jsonSchemaProperty['oneOf']; + if (type === 'array' && items) { + const itemsType = items['type']; + const itemsRef = items['$ref']; + if (itemsType) { + return Array.isArray(itemsType) + ? new JsonSchemaPropertyType('oneOf', false, true, itemsType.map(item => new JsonSchemaPropertyType(item, true, false, []))) + : new JsonSchemaPropertyType(itemsType, false, true, []); } - let nextPath = currentPath; - nextPath += (currentPath === '.') ? property : ('.' + property) - if (isArray) { - nextPath += '[]'; + if (itemsRef) { + const resolvedRef = resolveRef(itemsRef, jsonSchemaTypesByType); + return new JsonSchemaPropertyType(resolvedRef.type, false, true, []); } - recursiveAddPathPatterns(resolvedRef, typesByType, nextPath, nextParentTypes); - }); + } + if (type) { + return Array.isArray(type) + ? new JsonSchemaPropertyType('oneOf', true, false, type.map(item => new JsonSchemaPropertyType(item, true, false, []))) + : new JsonSchemaPropertyType(type, true, false, []); + } + if (ref) { + const resolvedRef = resolveRef(ref, jsonSchemaTypesByType); + return new JsonSchemaPropertyType(resolvedRef.type, false, false, []); + } + if (oneOf) { + return new JsonSchemaPropertyType('oneOf', false, false, [new JsonSchemaPropertyType('see JSON schema', false, false, [])]); + } + throw new Error(`Unable to resolve types of property ${property}: ${JSON.stringify(jsonSchemaType)}.`) +} + +const scalarTypes = ['boolean', 'string', 'null', 'integer', 'number']; + +export class JsonSchemaPropertyType { + type; + isScalar; + isSeq; + isOneOf; + oneOfTypes; + + constructor(type, isScalar, isSeq, oneOfTypes) { + this.type = type; + this.isScalar = isScalar; + this.isSeq = isSeq; + this.isOneOf = oneOfTypes.length !== 0; + this.oneOfTypes = oneOfTypes; + } } export class JsonSchemaType { diff --git a/scripts1/util.js b/scripts1/util.js index c05b7f59..738c7869 100644 --- a/scripts1/util.js +++ b/scripts1/util.js @@ -1,12 +1,5 @@ - -import { - readJsonSchemaTypes -} from "./json-schema.js"; - import path from 'path'; import { fileURLToPath } from 'url'; -import fs from 'fs'; -import yaml from 'yaml'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); From 937b91b2fbaf6a5bf5b4436f15a4fbe28a93536d Mon Sep 17 00:00:00 2001 From: Jack Berg <34418638+jack-berg@users.noreply.github.com> Date: Thu, 2 Oct 2025 14:19:41 -0500 Subject: [PATCH 11/23] Work out kinks in description generation --- examples/kitchen-sink.yaml | 265 +++++++++++++-------- schema/meta_schema.yaml | 383 ++++++++++++++++++++++-------- scripts1/generate-descriptions.js | 100 +++++--- 3 files changed, 517 insertions(+), 231 deletions(-) diff --git a/examples/kitchen-sink.yaml b/examples/kitchen-sink.yaml index 8f0a7d44..c6c2c06f 100644 --- a/examples/kitchen-sink.yaml +++ b/examples/kitchen-sink.yaml @@ -50,8 +50,10 @@ logger_provider: exporter: # Configure exporter to be OTLP with HTTP transport. otlp_http: + # Configure endpoint, including the signal specific path. + # If omitted or null, the http://localhost:4318/v1/{signal} (where signal is 'traces', 'logs', or 'metrics') is used. endpoint: http://localhost:4318/v1/logs - # Configure certificate used to verify a server's TLS credentials. + # Configure certificate used to verify a server's TLS credentials. # Absolute path to certificate file in PEM format. # If omitted or null, system default certificate verification is used for secure connections. certificate_file: /app/cert.pem @@ -59,14 +61,16 @@ logger_provider: # Absolute path to client key file in PEM format. If set, .client_certificate must also be set. # If omitted or null, mTLS is not used. client_key_file: /app/cert.pem - # Configure mTLS client certificate. + # Configure mTLS client certificate. # Absolute path to client certificate file in PEM format. If set, .client_key must also be set. # If omitted or null, mTLS is not used. client_certificate_file: /app/cert.pem # Configure headers. Entries have higher priority than entries from .headers_list. # If an entry's .value is null, the entry is ignored. headers: - - name: api-key + - # The name of the pair. + name: api-key + # The value of the pair. value: "1234" # Configure headers. Entries have lower priority than entries from .headers. # The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details. @@ -76,7 +80,7 @@ logger_provider: # Values include: gzip, none. Implementations may support other compression algorithms. # If omitted or null, none is used. compression: gzip - # Configure max time (in milliseconds) to wait for each export. + # Configure max time (in milliseconds) to wait for each export. # Value must be non-negative. A value of 0 indicates no limit (infinity). # If omitted or null, 10000 is used. timeout: 10000 @@ -93,7 +97,7 @@ logger_provider: # Configure endpoint. # If omitted or null, http://localhost:4317 is used. endpoint: http://localhost:4317 - # Configure certificate used to verify a server's TLS credentials. + # Configure certificate used to verify a server's TLS credentials. # Absolute path to certificate file in PEM format. # If omitted or null, system default certificate verification is used for secure connections. certificate_file: /app/cert.pem @@ -101,14 +105,16 @@ logger_provider: # Absolute path to client key file in PEM format. If set, .client_certificate must also be set. # If omitted or null, mTLS is not used. client_key_file: /app/cert.pem - # Configure mTLS client certificate. + # Configure mTLS client certificate. # Absolute path to client certificate file in PEM format. If set, .client_key must also be set. # If omitted or null, mTLS is not used. client_certificate_file: /app/cert.pem # Configure headers. Entries have higher priority than entries from .headers_list. # If an entry's .value is null, the entry is ignored. headers: - - name: api-key + - # The name of the pair. + name: api-key + # The value of the pair. value: "1234" # Configure headers. Entries have lower priority than entries from .headers. # The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details. @@ -118,7 +124,7 @@ logger_provider: # Values include: gzip, none. Implementations may support other compression algorithms. # If omitted or null, none is used. compression: gzip - # Configure max time (in milliseconds) to wait for each export. + # Configure max time (in milliseconds) to wait for each export. # Value must be non-negative. A value of 0 indicates no limit (infinity). # If omitted or null, 10000 is used. timeout: 10000 @@ -209,20 +215,20 @@ meter_provider: # Configure Prometheus Exporter to produce metrics without a scope info metric. # If omitted or null, false is used. without_scope_info: false - # Configure Prometheus Exporter to add resource attributes as metrics attributes. + # Configure Prometheus Exporter to add resource attributes as metrics attributes, where the resource attribute keys match the patterns. with_resource_constant_labels: - # Configure resource attributes to be included. - # Attribute keys from resources are evaluated to match as follows: - # * If the value of the attribute key exactly matches. - # * If the value of the attribute key matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. - # If omitted, no resource attributes are included. + # Configure list of value patterns to include. + # Values are evaluated to match as follows: + # * If the value exactly matches. + # * If the value matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. + # If omitted, all values are included. included: - "service*" - # Configure resource attributes to be excluded. Applies after .with_resource_constant_labels.included (i.e. excluded has higher priority than included). - # Attribute keys from resources are evaluated to match as follows: - # * If the value of the attribute key exactly matches. - # * If the value of the attribute key matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. - # If omitted, .included resource attributes are included. + # Configure list of value patterns to exclude. Applies after .included (i.e. excluded has higher priority than included). + # Values are evaluated to match as follows: + # * If the value exactly matches. + # * If the value matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. + # If omitted, .included attributes are included. excluded: - "service.attr1" # Configure metric producers. @@ -270,10 +276,10 @@ meter_provider: exporter: # Configure exporter to be OTLP with HTTP transport. otlp_http: - # Configure endpoint, including the metric specific path. - # If omitted or null, http://localhost:4318/v1/metrics is used. + # Configure endpoint, including the signal specific path. + # If omitted or null, the http://localhost:4318/v1/{signal} (where signal is 'traces', 'logs', or 'metrics') is used. endpoint: http://localhost:4318/v1/metrics - # Configure certificate used to verify a server's TLS credentials. + # Configure certificate used to verify a server's TLS credentials. # Absolute path to certificate file in PEM format. # If omitted or null, system default certificate verification is used for secure connections. certificate_file: /app/cert.pem @@ -281,14 +287,16 @@ meter_provider: # Absolute path to client key file in PEM format. If set, .client_certificate must also be set. # If omitted or null, mTLS is not used. client_key_file: /app/cert.pem - # Configure mTLS client certificate. + # Configure mTLS client certificate. # Absolute path to client certificate file in PEM format. If set, .client_key must also be set. # If omitted or null, mTLS is not used. client_certificate_file: /app/cert.pem # Configure headers. Entries have higher priority than entries from .headers_list. # If an entry's .value is null, the entry is ignored. headers: - - name: api-key + - # The name of the pair. + name: api-key + # The value of the pair. value: "1234" # Configure headers. Entries have lower priority than entries from .headers. # The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details. @@ -298,7 +306,7 @@ meter_provider: # Values include: gzip, none. Implementations may support other compression algorithms. # If omitted or null, none is used. compression: gzip - # Configure max time (in milliseconds) to wait for each export. + # Configure max time (in milliseconds) to wait for each export. # Value must be non-negative. A value of 0 indicates no limit (infinity). # If omitted or null, 10000 is used. timeout: 10000 @@ -306,17 +314,17 @@ meter_provider: # Values include: protobuf, json. Implementations may not support json. # If omitted or null, protobuf is used. encoding: protobuf - # Configure temporality preference. + # Configure temporality preference. # Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md. # If omitted or null, cumulative is used. temporality_preference: delta - # Configure default histogram aggregation. + # Configure default histogram aggregation. # Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md. # If omitted or null, explicit_bucket_histogram is used. default_histogram_aggregation: base2_exponential_bucket_histogram # Configure metric producers. producers: - - # Configure metric producer to be prometheus. + - # Configure metric producer to be opencensus. opencensus: # Configure cardinality limits. cardinality_limits: @@ -354,7 +362,7 @@ meter_provider: # Configure endpoint. # If omitted or null, http://localhost:4317 is used. endpoint: http://localhost:4317 - # Configure certificate used to verify a server's TLS credentials. + # Configure certificate used to verify a server's TLS credentials. # Absolute path to certificate file in PEM format. # If omitted or null, system default certificate verification is used for secure connections. certificate_file: /app/cert.pem @@ -362,14 +370,16 @@ meter_provider: # Absolute path to client key file in PEM format. If set, .client_certificate must also be set. # If omitted or null, mTLS is not used. client_key_file: /app/cert.pem - # Configure mTLS client certificate. + # Configure mTLS client certificate. # Absolute path to client certificate file in PEM format. If set, .client_key must also be set. # If omitted or null, mTLS is not used. client_certificate_file: /app/cert.pem # Configure headers. Entries have higher priority than entries from .headers_list. # If an entry's .value is null, the entry is ignored. headers: - - name: api-key + - # The name of the pair. + name: api-key + # The value of the pair. value: "1234" # Configure headers. Entries have lower priority than entries from .headers. # The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details. @@ -379,7 +389,7 @@ meter_provider: # Values include: gzip, none. Implementations may support other compression algorithms. # If omitted or null, none is used. compression: gzip - # Configure max time (in milliseconds) to wait for each export. + # Configure max time (in milliseconds) to wait for each export. # Value must be non-negative. A value of 0 indicates no limit (infinity). # If omitted or null, 10000 is used. timeout: 10000 @@ -387,11 +397,11 @@ meter_provider: # Only applicable when .endpoint is provided without http or https scheme. Implementations may choose to ignore .insecure. # If omitted or null, false is used. insecure: false - # Configure temporality preference. + # Configure temporality preference. # Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md. # If omitted or null, cumulative is used. temporality_preference: delta - # Configure default histogram aggregation. + # Configure default histogram aggregation. # Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md. # If omitted or null, explicit_bucket_histogram is used. default_histogram_aggregation: base2_exponential_bucket_histogram @@ -406,10 +416,12 @@ meter_provider: # Values include stdout, or scheme+destination. For example: file:///path/to/file.jsonl. # If omitted or null, stdout is used. output_stream: file:///var/log/metrics.jsonl - # Configure temporality preference. Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md. + # Configure temporality preference. + # Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md. # If omitted or null, cumulative is used. temporality_preference: delta - # Configure default histogram aggregation. Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md. + # Configure default histogram aggregation. + # Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md. # If omitted or null, explicit_bucket_histogram is used. default_histogram_aggregation: base2_exponential_bucket_histogram - # Configure a periodic metric reader. @@ -423,10 +435,12 @@ meter_provider: # Values include stdout, or scheme+destination. For example: file:///path/to/file.jsonl. # If omitted or null, stdout is used. output_stream: stdout - # Configure temporality preference. Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md. + # Configure temporality preference. + # Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md. # If omitted or null, cumulative is used. temporality_preference: delta - # Configure default histogram aggregation. Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md. + # Configure default histogram aggregation. + # Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md. # If omitted or null, explicit_bucket_histogram is used. default_histogram_aggregation: base2_exponential_bucket_histogram - # Configure a periodic metric reader. @@ -502,13 +516,19 @@ meter_provider: aggregation_cardinality_limit: 2000 # Configure attribute keys retained in the resulting stream(s). attribute_keys: - # Configure list of attribute keys to include in the resulting stream(s). All other attributes are dropped. - # If omitted, all attributes are included. + # Configure list of value patterns to include. + # Values are evaluated to match as follows: + # * If the value exactly matches. + # * If the value matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. + # If omitted, all values are included. included: - key1 - key2 - # Configure list of attribute keys to exclude from the resulting stream(s). Applies after .attribute_keys.included (i.e. excluded has higher priority than included). - # If omitted, .attribute_keys.included are included. + # Configure list of value patterns to exclude. Applies after .included (i.e. excluded has higher priority than included). + # Values are evaluated to match as follows: + # * If the value exactly matches. + # * If the value matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. + # If omitted, .included attributes are included. excluded: - key3 # Configure the exemplar filter. @@ -582,10 +602,10 @@ tracer_provider: exporter: # Configure exporter to be OTLP with HTTP transport. otlp_http: - # Configure endpoint, including the trace specific path. - # If omitted or null, http://localhost:4318/v1/traces is used. + # Configure endpoint, including the signal specific path. + # If omitted or null, the http://localhost:4318/v1/{signal} (where signal is 'traces', 'logs', or 'metrics') is used. endpoint: http://localhost:4318/v1/traces - # Configure certificate used to verify a server's TLS credentials. + # Configure certificate used to verify a server's TLS credentials. # Absolute path to certificate file in PEM format. # If omitted or null, system default certificate verification is used for secure connections. certificate_file: /app/cert.pem @@ -593,14 +613,16 @@ tracer_provider: # Absolute path to client key file in PEM format. If set, .client_certificate must also be set. # If omitted or null, mTLS is not used. client_key_file: /app/cert.pem - # Configure mTLS client certificate. + # Configure mTLS client certificate. # Absolute path to client certificate file in PEM format. If set, .client_key must also be set. # If omitted or null, mTLS is not used. client_certificate_file: /app/cert.pem # Configure headers. Entries have higher priority than entries from .headers_list. # If an entry's .value is null, the entry is ignored. headers: - - name: api-key + - # The name of the pair. + name: api-key + # The value of the pair. value: "1234" # Configure headers. Entries have lower priority than entries from .headers. # The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details. @@ -610,7 +632,7 @@ tracer_provider: # Values include: gzip, none. Implementations may support other compression algorithms. # If omitted or null, none is used. compression: gzip - # Configure max time (in milliseconds) to wait for each export. + # Configure max time (in milliseconds) to wait for each export. # Value must be non-negative. A value of 0 indicates no limit (infinity). # If omitted or null, 10000 is used. timeout: 10000 @@ -627,7 +649,7 @@ tracer_provider: # Configure endpoint. # If omitted or null, http://localhost:4317 is used. endpoint: http://localhost:4317 - # Configure certificate used to verify a server's TLS credentials. + # Configure certificate used to verify a server's TLS credentials. # Absolute path to certificate file in PEM format. # If omitted or null, system default certificate verification is used for secure connections. certificate_file: /app/cert.pem @@ -635,14 +657,16 @@ tracer_provider: # Absolute path to client key file in PEM format. If set, .client_certificate must also be set. # If omitted or null, mTLS is not used. client_key_file: /app/cert.pem - # Configure mTLS client certificate. + # Configure mTLS client certificate. # Absolute path to client certificate file in PEM format. If set, .client_key must also be set. # If omitted or null, mTLS is not used. client_certificate_file: /app/cert.pem # Configure headers. Entries have higher priority than entries from .headers_list. # If an entry's .value is null, the entry is ignored. headers: - - name: api-key + - # The name of the pair. + name: api-key + # The value of the pair. value: "1234" # Configure headers. Entries have lower priority than entries from .headers. # The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details. @@ -652,7 +676,7 @@ tracer_provider: # Values include: gzip, none. Implementations may support other compression algorithms. # If omitted or null, none is used. compression: gzip - # Configure max time (in milliseconds) to wait for each export. + # Configure max time (in milliseconds) to wait for each export. # Value must be non-negative. A value of 0 indicates no limit (infinity). # If omitted or null, 10000 is used. timeout: 10000 @@ -782,34 +806,83 @@ tracer_provider: # If omitted, the default resource is used. resource: # Configure resource attributes. Entries have higher priority than entries from .resource.attributes_list. - # Entries must contain .name and .value, and may optionally include .type. If an entry's .type omitted or null, string is used. - # The .value's type must match the .type. Values for .type include: string, bool, int, double, string_array, bool_array, int_array, double_array. attributes: - - name: service.name + - # The attribute name. + name: service.name + # The attribute value. + # The type of value must match .type. value: unknown_service - - name: string_key + - # The attribute name. + name: string_key + # The attribute value. + # The type of value must match .type. value: value + # The attribute type. + # Values include: string, bool, int, double, string_array, bool_array, int_array, double_array. + # If omitted or null, string is used. type: string - - name: bool_key + - # The attribute name. + name: bool_key + # The attribute value. + # The type of value must match .type. value: true + # The attribute type. + # Values include: string, bool, int, double, string_array, bool_array, int_array, double_array. + # If omitted or null, string is used. type: bool - - name: int_key + - # The attribute name. + name: int_key + # The attribute value. + # The type of value must match .type. value: 1 + # The attribute type. + # Values include: string, bool, int, double, string_array, bool_array, int_array, double_array. + # If omitted or null, string is used. type: int - - name: double_key + - # The attribute name. + name: double_key + # The attribute value. + # The type of value must match .type. value: 1.1 + # The attribute type. + # Values include: string, bool, int, double, string_array, bool_array, int_array, double_array. + # If omitted or null, string is used. type: double - - name: string_array_key + - # The attribute name. + name: string_array_key + # The attribute value. + # The type of value must match .type. value: [ "value1", "value2" ] + # The attribute type. + # Values include: string, bool, int, double, string_array, bool_array, int_array, double_array. + # If omitted or null, string is used. type: string_array - - name: bool_array_key + - # The attribute name. + name: bool_array_key + # The attribute value. + # The type of value must match .type. value: [ true, false ] + # The attribute type. + # Values include: string, bool, int, double, string_array, bool_array, int_array, double_array. + # If omitted or null, string is used. type: bool_array - - name: int_array_key + - # The attribute name. + name: int_array_key + # The attribute value. + # The type of value must match .type. value: [ 1, 2 ] + # The attribute type. + # Values include: string, bool, int, double, string_array, bool_array, int_array, double_array. + # If omitted or null, string is used. type: int_array - - name: double_array_key + - # The attribute name. + name: double_array_key + # The attribute value. + # The type of value must match .type. value: [ 1.1, 2.2 ] + # The attribute type. + # Values include: string, bool, int, double, string_array, bool_array, int_array, double_array. + # If omitted or null, string is used. type: double_array # Configure resource attributes. Entries have lower priority than entries from .resource.attributes. # The value is a list of comma separated key-value pairs matching the format of OTEL_RESOURCE_ATTRIBUTES. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details. @@ -821,17 +894,17 @@ resource: detection/development: # Configure attributes provided by resource detectors. attributes: - # Configure list of attribute key patterns to include from resource detectors. - # Attribute keys from resource detectors are evaluated to match as follows: - # * If the value of the attribute key exactly matches. - # * If the value of the attribute key matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. - # If omitted, all attributes are included. + # Configure list of value patterns to include. + # Values are evaluated to match as follows: + # * If the value exactly matches. + # * If the value matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. + # If omitted, all values are included. included: - process.* - # Configure list of attribute key patterns to exclude from resource detectors. Applies after .resource.detectors.attributes.included (i.e. excluded has higher priority than included). - # Attribute keys from resource detectors are evaluated to match as follows: - # * If the value of the attribute key exactly matches. - # * If the value of the attribute key matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. + # Configure list of value patterns to exclude. Applies after .included (i.e. excluded has higher priority than included). + # Values are evaluated to match as follows: + # * If the value exactly matches. + # * If the value matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. # If omitted, .included attributes are included. excluded: - process.command_args @@ -839,18 +912,10 @@ resource: # Resource detector names are dependent on the SDK language ecosystem. Please consult documentation for each respective language. # If omitted or null, no resource detectors are enabled. detectors: - - # Enable the container resource detector. - # Note, the key "container" is an example and detector names may vary by SDK language ecosystem. - container: - - # Enable the host resource detector. - # Note, the key "host" is an example and detector names may vary by SDK language ecosystem. - host: - - # Enable the os resource detector. - # Note, the key "os" is an example and detector names may vary by SDK language ecosystem. - os: - - # Enable the process resource detector. - # Note, the key "process" is an example and detector names may vary by SDK language ecosystem. - process: + - container: + - host: + - os: + - process: # Configure resource schema URL. # If omitted or null, no schema URL is used. schema_url: https://opentelemetry.io/schemas/1.16.0 @@ -864,12 +929,15 @@ instrumentation/development: # See peer semantic conventions: https://opentelemetry.io/docs/specs/semconv/attributes-registry/peer/ peer: # Configure the service mapping for instrumentations following peer.service semantic conventions. - # Each entry is a key value pair where "peer" defines the IP address and "service" defines the corresponding logical name of the service. # See peer.service semantic conventions: https://opentelemetry.io/docs/specs/semconv/general/attributes/#general-remote-service-attributes service_mapping: - - peer: 1.2.3.4 + - # The IP address to map. + peer: 1.2.3.4 + # The logical name corresponding to the IP address of .peer. service: FooService - - peer: 2.3.4.5 + - # The IP address to map. + peer: 2.3.4.5 + # The logical name corresponding to the IP address of .peer. service: BarService # Configure instrumentations following the http semantic conventions. # See http semantic conventions: https://opentelemetry.io/docs/specs/semconv/http/ @@ -880,7 +948,7 @@ instrumentation/development: request_captured_headers: - Content-Type - Accept - # Configure headers to capture for outbound http responses. + # Configure headers to capture for inbound http responses. response_captured_headers: - Content-Type - Content-Encoding @@ -896,56 +964,55 @@ instrumentation/development: - Content-Encoding # Configure C++ language-specific instrumentation libraries. cpp: - # Configure the instrumentation corresponding to key "example". example: property: "value" # Configure .NET language-specific instrumentation libraries. + # Each entry's key identifies a particular instrumentation library. The corresponding value configures it. dotnet: - # Configure the instrumentation corresponding to key "example". example: property: "value" # Configure Erlang language-specific instrumentation libraries. + # Each entry's key identifies a particular instrumentation library. The corresponding value configures it. erlang: - # Configure the instrumentation corresponding to key "example". example: property: "value" # Configure Go language-specific instrumentation libraries. + # Each entry's key identifies a particular instrumentation library. The corresponding value configures it. go: - # Configure the instrumentation corresponding to key "example". example: property: "value" # Configure Java language-specific instrumentation libraries. + # Each entry's key identifies a particular instrumentation library. The corresponding value configures it. java: - # Configure the instrumentation corresponding to key "example". example: property: "value" # Configure JavaScript language-specific instrumentation libraries. + # Each entry's key identifies a particular instrumentation library. The corresponding value configures it. js: - # Configure the instrumentation corresponding to key "example". example: property: "value" # Configure PHP language-specific instrumentation libraries. + # Each entry's key identifies a particular instrumentation library. The corresponding value configures it. php: - # Configure the instrumentation corresponding to key "example". example: property: "value" # Configure Python language-specific instrumentation libraries. + # Each entry's key identifies a particular instrumentation library. The corresponding value configures it. python: - # Configure the instrumentation corresponding to key "example". example: property: "value" # Configure Ruby language-specific instrumentation libraries. + # Each entry's key identifies a particular instrumentation library. The corresponding value configures it. ruby: - # Configure the instrumentation corresponding to key "example". example: property: "value" # Configure Rust language-specific instrumentation libraries. + # Each entry's key identifies a particular instrumentation library. The corresponding value configures it. rust: - # Configure the instrumentation corresponding to key "example". example: property: "value" # Configure Swift language-specific instrumentation libraries. + # Each entry's key identifies a particular instrumentation library. The corresponding value configures it. swift: - # Configure the instrumentation corresponding to key "example". example: property: "value" diff --git a/schema/meta_schema.yaml b/schema/meta_schema.yaml index 6f6387cf..7f9cbd43 100644 --- a/schema/meta_schema.yaml +++ b/schema/meta_schema.yaml @@ -31,11 +31,17 @@ - type: AttributeNameValue properties: - property: name - description: TODO + description: | + The attribute name. - property: value - description: TODO + description: | + The attribute value. + The type of value must match .type. - property: type - description: TODO + description: | + The attribute type. + Values include: string, bool, int, double, string_array, bool_array, int_array, double_array. + If omitted or null, string is used. - type: AttributeType properties: [] - type: B3MultiPropagator @@ -152,9 +158,11 @@ - type: ExperimentalHttpClientInstrumentation properties: - property: request_captured_headers - description: TODO + description: | + Configure headers to capture for outbound http requests. - property: response_captured_headers - description: TODO + description: | + Configure headers to capture for inbound http responses. - type: ExperimentalHttpInstrumentation properties: - property: client @@ -164,9 +172,11 @@ - type: ExperimentalHttpServerInstrumentation properties: - property: request_captured_headers - description: TODO + description: | + Configure headers to capture for inbound http requests. - property: response_captured_headers - description: TODO + description: | + Configure headers to capture for outbound http responses. - type: ExperimentalInstrumentation properties: - property: general @@ -176,25 +186,45 @@ - property: cpp description: Configure C++ language-specific instrumentation libraries. - property: dotnet - description: Configure .NET language-specific instrumentation libraries. + description: | + Configure .NET language-specific instrumentation libraries. + Each entry's key identifies a particular instrumentation library. The corresponding value configures it. - property: erlang - description: Configure Erlang language-specific instrumentation libraries. + description: | + Configure Erlang language-specific instrumentation libraries. + Each entry's key identifies a particular instrumentation library. The corresponding value configures it. - property: go - description: Configure Go language-specific instrumentation libraries. + description: | + Configure Go language-specific instrumentation libraries. + Each entry's key identifies a particular instrumentation library. The corresponding value configures it. - property: java - description: Configure Java language-specific instrumentation libraries. + description: | + Configure Java language-specific instrumentation libraries. + Each entry's key identifies a particular instrumentation library. The corresponding value configures it. - property: js - description: Configure JavaScript language-specific instrumentation libraries. + description: | + Configure JavaScript language-specific instrumentation libraries. + Each entry's key identifies a particular instrumentation library. The corresponding value configures it. - property: php - description: Configure PHP language-specific instrumentation libraries. + description: | + Configure PHP language-specific instrumentation libraries. + Each entry's key identifies a particular instrumentation library. The corresponding value configures it. - property: python - description: Configure Python language-specific instrumentation libraries. + description: | + Configure Python language-specific instrumentation libraries. + Each entry's key identifies a particular instrumentation library. The corresponding value configures it. - property: ruby - description: Configure Ruby language-specific instrumentation libraries. + description: | + Configure Ruby language-specific instrumentation libraries. + Each entry's key identifies a particular instrumentation library. The corresponding value configures it. - property: rust - description: Configure Rust language-specific instrumentation libraries. + description: | + Configure Rust language-specific instrumentation libraries. + Each entry's key identifies a particular instrumentation library. The corresponding value configures it. - property: swift - description: Configure Swift language-specific instrumentation libraries. + description: | + Configure Swift language-specific instrumentation libraries. + Each entry's key identifies a particular instrumentation library. The corresponding value configures it. - type: ExperimentalLanguageSpecificInstrumentation properties: [] - type: ExperimentalLoggerConfig @@ -240,25 +270,41 @@ - type: ExperimentalOtlpFileExporter properties: - property: output_stream - description: TODO + description: | + Configure output stream. + Values include stdout, or scheme+destination. For example: file:///path/to/file.jsonl. + If omitted or null, stdout is used. - type: ExperimentalOtlpFileMetricExporter properties: - property: output_stream - description: TODO + description: | + Configure output stream. + Values include stdout, or scheme+destination. For example: file:///path/to/file.jsonl. + If omitted or null, stdout is used. - property: temporality_preference - description: TODO + description: | + Configure temporality preference. + Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md. + If omitted or null, cumulative is used. - property: default_histogram_aggregation - description: TODO + description: | + Configure default histogram aggregation. + Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md. + If omitted or null, explicit_bucket_histogram is used. - type: ExperimentalPeerInstrumentation properties: - property: service_mapping - description: TODO + description: | + Configure the service mapping for instrumentations following peer.service semantic conventions. + See peer.service semantic conventions: https://opentelemetry.io/docs/specs/semconv/general/attributes/#general-remote-service-attributes - type: ExperimentalPeerServiceMapping properties: - property: peer - description: TODO + description: | + The IP address to map. - property: service - description: TODO + description: | + The logical name corresponding to the IP address of .peer. - type: ExperimentalPrometheusMetricExporter properties: - property: host @@ -282,7 +328,7 @@ Configure Prometheus Exporter to produce metrics without a scope info metric. If omitted or null, false is used. - property: with_resource_constant_labels - description: Configure Prometheus Exporter to add resource attributes as metrics attributes. + description: Configure Prometheus Exporter to add resource attributes as metrics attributes, where the resource attribute keys match the patterns. - type: ExperimentalResourceDetection properties: - property: attributes @@ -332,17 +378,17 @@ properties: - property: included description: | - Configure list of attribute key patterns to include from resource detectors. - Attribute keys from resource detectors are evaluated to match as follows: - * If the value of the attribute key exactly matches. - * If the value of the attribute key matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. - If omitted, all attributes are included. + Configure list of value patterns to include. + Values are evaluated to match as follows: + * If the value exactly matches. + * If the value matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. + If omitted, all values are included. - property: excluded description: | - Configure list of attribute key patterns to exclude from resource detectors. Applies after .resource.detectors.attributes.included (i.e. excluded has higher priority than included). - Attribute keys from resource detectors are evaluated to match as follows: - * If the value of the attribute key exactly matches. - * If the value of the attribute key matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. + Configure list of value patterns to exclude. Applies after .included (i.e. excluded has higher priority than included). + Values are evaluated to match as follows: + * If the value exactly matches. + * If the value matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. If omitted, .included attributes are included. - type: InstrumentType properties: [] @@ -428,33 +474,53 @@ - type: NameStringValuePair properties: - property: name - description: TODO + description: The name of the pair. - property: value - description: TODO + description: The value of the pair. - type: OpenCensusMetricProducer properties: [] - type: OpentelemetryConfiguration properties: - property: file_format - description: TODO + description: | + The file format version. + The yaml format is documented at + https://github.com/open-telemetry/opentelemetry-configuration/tree/main/schema - property: disabled - description: TODO + description: | + Configure if the SDK is disabled or not. + If omitted or null, false is used. - property: log_level - description: TODO + description: | + Configure the log level of the internal logger used by the SDK. + If omitted, info is used. - property: attribute_limits - description: TODO + description: | + Configure general attribute limits. See also tracer_provider.limits, logger_provider.limits. - property: logger_provider - description: TODO + description: | + Configure logger provider. + If omitted, a noop logger provider is used. - property: meter_provider - description: TODO + description: | + Configure meter provider. + If omitted, a noop meter provider is used. - property: propagator - description: TODO + description: | + Configure text map context propagators. + If omitted, a noop propagator is used. - property: tracer_provider - description: TODO + description: | + Configure tracer provider. + If omitted, a noop tracer provider is used. - property: resource - description: TODO + description: | + Configure resource for all signals. + If omitted, the default resource is used. - property: instrumentation/development - description: TODO + description: | + Configure instrumentation. + This type is in development and subject to breaking changes in minor versions. - type: OpenTracingPropagator properties: [] - type: OtlpGrpcExporter @@ -464,19 +530,39 @@ Configure endpoint. If omitted or null, http://localhost:4317 is used. - property: certificate_file - description: TODO + description: | + Configure certificate used to verify a server's TLS credentials. + Absolute path to certificate file in PEM format. + If omitted or null, system default certificate verification is used for secure connections. - property: client_key_file - description: TODO + description: | + Configure mTLS private client key. + Absolute path to client key file in PEM format. If set, .client_certificate must also be set. + If omitted or null, mTLS is not used. - property: client_certificate_file - description: TODO + description: | + Configure mTLS client certificate. + Absolute path to client certificate file in PEM format. If set, .client_key must also be set. + If omitted or null, mTLS is not used. - property: headers - description: TODO + description: | + Configure headers. Entries have higher priority than entries from .headers_list. + If an entry's .value is null, the entry is ignored. - property: headers_list - description: TODO + description: | + Configure headers. Entries have lower priority than entries from .headers. + The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details. + If omitted or null, no headers are added. - property: compression - description: TODO + description: | + Configure compression. + Values include: gzip, none. Implementations may support other compression algorithms. + If omitted or null, none is used. - property: timeout - description: TODO + description: | + Configure max time (in milliseconds) to wait for each export. + Value must be non-negative. A value of 0 indicates no limit (infinity). + If omitted or null, 10000 is used. - property: insecure description: | Configure client transport security for the exporter's connection. @@ -485,47 +571,100 @@ - type: OtlpGrpcMetricExporter properties: - property: endpoint - description: TODO + description: | + Configure endpoint. + If omitted or null, http://localhost:4317 is used. - property: certificate_file - description: TODO + description: | + Configure certificate used to verify a server's TLS credentials. + Absolute path to certificate file in PEM format. + If omitted or null, system default certificate verification is used for secure connections. - property: client_key_file - description: TODO + description: | + Configure mTLS private client key. + Absolute path to client key file in PEM format. If set, .client_certificate must also be set. + If omitted or null, mTLS is not used. - property: client_certificate_file - description: TODO + description: | + Configure mTLS client certificate. + Absolute path to client certificate file in PEM format. If set, .client_key must also be set. + If omitted or null, mTLS is not used. - property: headers - description: TODO + description: | + Configure headers. Entries have higher priority than entries from .headers_list. + If an entry's .value is null, the entry is ignored. - property: headers_list - description: TODO + description: | + Configure headers. Entries have lower priority than entries from .headers. + The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details. + If omitted or null, no headers are added. - property: compression - description: TODO + description: | + Configure compression. + Values include: gzip, none. Implementations may support other compression algorithms. + If omitted or null, none is used. - property: timeout - description: TODO + description: | + Configure max time (in milliseconds) to wait for each export. + Value must be non-negative. A value of 0 indicates no limit (infinity). + If omitted or null, 10000 is used. - property: insecure - description: TODO + description: | + Configure client transport security for the exporter's connection. + Only applicable when .endpoint is provided without http or https scheme. Implementations may choose to ignore .insecure. + If omitted or null, false is used. - property: temporality_preference - description: TODO + description: | + Configure temporality preference. + Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md. + If omitted or null, cumulative is used. - property: default_histogram_aggregation - description: TODO + description: | + Configure default histogram aggregation. + Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md. + If omitted or null, explicit_bucket_histogram is used. - type: OtlpHttpEncoding properties: [] - type: OtlpHttpExporter properties: - property: endpoint - description: TODO + description: | + Configure endpoint, including the signal specific path. + If omitted or null, the http://localhost:4318/v1/{signal} (where signal is 'traces', 'logs', or 'metrics') is used. - property: certificate_file - description: TODO + description: | + Configure certificate used to verify a server's TLS credentials. + Absolute path to certificate file in PEM format. + If omitted or null, system default certificate verification is used for secure connections. - property: client_key_file - description: TODO + description: | + Configure mTLS private client key. + Absolute path to client key file in PEM format. If set, .client_certificate must also be set. + If omitted or null, mTLS is not used. - property: client_certificate_file - description: TODO + description: | + Configure mTLS client certificate. + Absolute path to client certificate file in PEM format. If set, .client_key must also be set. + If omitted or null, mTLS is not used. - property: headers - description: TODO + description: | + Configure headers. Entries have higher priority than entries from .headers_list. + If an entry's .value is null, the entry is ignored. - property: headers_list - description: TODO + description: | + Configure headers. Entries have lower priority than entries from .headers. + The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details. + If omitted or null, no headers are added. - property: compression - description: TODO + description: | + Configure compression. + Values include: gzip, none. Implementations may support other compression algorithms. + If omitted or null, none is used. - property: timeout - description: TODO + description: | + Configure max time (in milliseconds) to wait for each export. + Value must be non-negative. A value of 0 indicates no limit (infinity). + If omitted or null, 10000 is used. - property: encoding description: | Configure the encoding used for messages. @@ -535,40 +674,83 @@ properties: - property: endpoint description: | - Configure endpoint, including the metric specific path. - If omitted or null, http://localhost:4318/v1/metrics is used. + Configure endpoint, including the signal specific path. + If omitted or null, the http://localhost:4318/v1/{signal} (where signal is 'traces', 'logs', or 'metrics') is used. + - property: endpoint + description: | + Configure endpoint. + If omitted or null, http://localhost:4317 is used. - property: certificate_file - description: TODO + description: | + Configure certificate used to verify a server's TLS credentials. + Absolute path to certificate file in PEM format. + If omitted or null, system default certificate verification is used for secure connections. - property: client_key_file - description: TODO + description: | + Configure mTLS private client key. + Absolute path to client key file in PEM format. If set, .client_certificate must also be set. + If omitted or null, mTLS is not used. - property: client_certificate_file - description: TODO + description: | + Configure mTLS client certificate. + Absolute path to client certificate file in PEM format. If set, .client_key must also be set. + If omitted or null, mTLS is not used. - property: headers - description: TODO + description: | + Configure headers. Entries have higher priority than entries from .headers_list. + If an entry's .value is null, the entry is ignored. - property: headers_list - description: TODO + description: | + Configure headers. Entries have lower priority than entries from .headers. + The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details. + If omitted or null, no headers are added. - property: compression - description: TODO + description: | + Configure compression. + Values include: gzip, none. Implementations may support other compression algorithms. + If omitted or null, none is used. - property: timeout - description: TODO + description: | + Configure max time (in milliseconds) to wait for each export. + Value must be non-negative. A value of 0 indicates no limit (infinity). + If omitted or null, 10000 is used. - property: encoding - description: TODO + description: | + Configure the encoding used for messages. + Values include: protobuf, json. Implementations may not support json. + If omitted or null, protobuf is used. - property: temporality_preference - description: TODO + description: | + Configure temporality preference. + Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md. + If omitted or null, cumulative is used. - property: default_histogram_aggregation - description: TODO + description: | + Configure default histogram aggregation. + Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md. + If omitted or null, explicit_bucket_histogram is used. - type: ParentBasedSampler properties: - property: root - description: TODO + description: | + Configure root sampler. + If omitted or null, always_on is used. - property: remote_parent_sampled - description: TODO + description: | + Configure remote_parent_sampled sampler. + If omitted or null, always_on is used. - property: remote_parent_not_sampled - description: TODO + description: | + Configure remote_parent_not_sampled sampler. + If omitted or null, always_off is used. - property: local_parent_sampled - description: TODO + description: | + Configure local_parent_sampled sampler. + If omitted or null, always_on is used. - property: local_parent_not_sampled - description: TODO + description: | + Configure local_parent_not_sampled sampler. + If omitted or null, always_off is used. - type: PeriodicMetricReader properties: - property: interval @@ -603,7 +785,9 @@ - type: PullMetricExporter properties: - property: prometheus/development - description: TODO + description: | + Configure exporter to be prometheus. + This type is in development and subject to breaking changes in minor versions. - type: PullMetricReader properties: - property: exporter @@ -615,20 +799,23 @@ - type: PushMetricExporter properties: - property: otlp_http - description: TODO + description: | + Configure exporter to be OTLP with HTTP transport. - property: otlp_grpc - description: TODO + description: | + Configure exporter to be OTLP with gRPC transport. - property: otlp_file/development - description: TODO + description: | + Configure exporter to be OTLP with file transport. + This type is in development and subject to breaking changes in minor versions. - property: console - description: TODO + description: | + Configure exporter to be console. - type: Resource properties: - property: attributes description: | Configure resource attributes. Entries have higher priority than entries from .resource.attributes_list. - Entries must contain .name and .value, and may optionally include .type. If an entry's .type omitted or null, string is used. - The .value's type must match the .type. Values for .type include: string, bool, int, double, string_array, bool_array, int_array, double_array. - property: detection/development description: | Configure resource detection. @@ -736,7 +923,9 @@ - type: TraceIdRatioBasedSampler properties: - property: ratio - description: TODO + description: | + Configure trace_id_ratio. + If omitted or null, 1.0 is used. - type: TracerProvider properties: - property: processors diff --git a/scripts1/generate-descriptions.js b/scripts1/generate-descriptions.js index 60e8b03e..ad36f070 100644 --- a/scripts1/generate-descriptions.js +++ b/scripts1/generate-descriptions.js @@ -5,8 +5,16 @@ import {readAndFixMetaSchemaTypes} from "./meta-schema.js"; import {readJsonSchemaTypes, resolveJsonSchemaPropertyType, resolveRef} from "./json-schema.js"; let inputFile = '/Users/bergfamily/code/opentelemetry-configuration/examples/kitchen-sink.yaml'; -let outputFile = null; // '/Users/bergfamily/code/opentelemetry-configuration/examples/kitchen-sink-new.yaml'; - +let outputFile = '/Users/bergfamily/code/opentelemetry-configuration/examples/kitchen-sink.yaml'; +// Extract options +const options = { + debug: true // TODO +} +for (let i = 3; i < process.argv.length; i++) { + if (process.argv[i] === '--debug') { + options['debug'] = true; + } +} const { messages, types } = readAndFixMetaSchemaTypes(); const metaSchemaTypesByType = {}; @@ -35,27 +43,51 @@ yaml.visit(fileDoc, { let prevLastNode = lastNode; lastNode = node; counter++; - - const parentPath = pathToString(path); const propertyKey = node.key.value; - - const parentJsonSchemaType = resolveParentNodeType(jsonSchemaTypesByType, path); - const type = parentJsonSchemaType ? parentJsonSchemaType.type : null; - - console.log(`${parentPath} - ${propertyKey} - ${type}`); - - if (!parentJsonSchemaType) { + const jsonPath = yamlPathToJsonPath(path, propertyKey); + + // Resolve jsonSchemaType, metaSchemaType, metaSchemaProperty, or return + debug(""); + debug(`Resolving description for ${jsonPath}`); + let jsonSchemaType; + try { + jsonSchemaType =resolveJsonSchemaType(jsonSchemaTypesByType, path); + } catch (error) { + debug(`Unable to resolve JSON schema type: ${error.message}`); return; } - - const parentMetaSchemaType = metaSchemaTypesByType[parentJsonSchemaType.type]; - if (!parentMetaSchemaType) { + const metaSchemaType = metaSchemaTypesByType[jsonSchemaType.type]; + if (!metaSchemaType) { + throw new Error(`JSON schema type not found for meta schema type ${jsonSchemaType.type}.`); + } + const metaSchemaProperty = metaSchemaType.properties.find(item => item.property === propertyKey); + if (!metaSchemaProperty) { + debug(`No meta schema property ${propertyKey} for type ${metaSchemaType.type}.`); return; } - const property = parentMetaSchemaType.properties.find(item => item.property === propertyKey); - const hasAdditionalProperties = parentJsonSchemaType.schema['additionalProperties'] || false; - if (!property && !hasAdditionalProperties) { - throw new Error(`Unable to find property ${propertyKey} for type ${parentMetaSchemaType.type}`); + debug(`Resolved type ${jsonSchemaType.type}, property ${metaSchemaProperty.property}, description:\n${metaSchemaProperty.description}`); + + // Set the description + let formattedDescription = metaSchemaProperty.description + .replace(/\n$/, '') + .split('\n') + .map(line => ' ' + line) + .join('\n'); + // If we're on the first element, prefix the formatted description with the existing commentBefore to retain the comments at the top of the file + if (counter === 1 && node.key.commentBefore) { + const index = node.key.commentBefore.lastIndexOf(formattedDescription); + formattedDescription = (index === -1) + ? node.key.commentBefore + formattedDescription + : node.key.commentBefore.substring(0, index) + formattedDescription; + } + node.key.commentBefore = formattedDescription; + node.value.commentBefore = null; + // yaml parser sometimes misidentifies a pair's commentBefore as the previously processed pair.value.comment + // we detect and fix that by keeping a reference to the previous node and setting the comment to null + // this works because we only use commentBefore in this project + if (prevLastNode !== null) { + node.key.spaceBefore = null; + prevLastNode.value.comment = null; } } }); @@ -70,11 +102,16 @@ if (outputFile === null) { } // Helper functions +// Log the message to the console if the script was run with `--debug` argument +function debug(message) { + if (options.debug) { + console.debug(message); + } +} -// Convert an array of path elements JSON dot notation -function pathToString(path) { +function yamlPathToJsonPath(yamlPath, propertyKey) { const elements = [] - path.slice().forEach(entry => { + yamlPath.slice().forEach(entry => { if (yaml.isSeq(entry)) { elements.push("[]"); } @@ -83,28 +120,21 @@ function pathToString(path) { elements.push(entry.key.value); } }); - return elements.length === 0 ? "." : elements.join(""); + return (elements.length === 0 ? "." : elements.join("")) + propertyKey; } -function resolveParentNodeType(jsonSchemaTypesByType, path) { - let last = jsonSchemaTypesByType['OpentelemetryConfiguration']; +function resolveJsonSchemaType(jsonSchemaTypesByType, yamlPath) { + let last = jsonSchemaTypesByType['OpentelemetryConfiguration']; // TODO: make constant if (!last) { throw new Error(`JSON schema missing root type 'OpenTelemetryConfiguration'`); } - for (let i = 0; i < path.length; i++) { - const entry = path[i]; + for (let i = 0; i < yamlPath.length; i++) { + const entry = yamlPath[i]; if (yaml.isPair(entry)) { - const propertyKey = entry.key.value; - let jsonSchemaPropertyType; - try { - jsonSchemaPropertyType = resolveJsonSchemaPropertyType(last, propertyKey, jsonSchemaTypesByType); - } catch (error) { - return null; - } + const jsonSchemaPropertyType = resolveJsonSchemaPropertyType(last, entry.key.value, jsonSchemaTypesByType); last = jsonSchemaTypesByType[jsonSchemaPropertyType.type]; if (!last) { - console.log(`No type for ${jsonSchemaPropertyType.type}`); - return null; + throw new Error(`No JSON schema type for ${jsonSchemaPropertyType.type}`); } } } From 6887040b95c8bf6b4d3830e94ab195a9d2d0c3a7 Mon Sep 17 00:00:00 2001 From: Jack Berg <34418638+jack-berg@users.noreply.github.com> Date: Thu, 2 Oct 2025 14:27:31 -0500 Subject: [PATCH 12/23] Delete old copies of scripts --- Makefile | 10 +- examples/sdk-config.yaml | 39 +- examples/sdk-migration-config.yaml | 39 +- package.json | 6 +- schema-docs.md | 1487 +++++++++------------- {scripts1 => scripts}/fix-meta-schema.js | 0 scripts/generate-descriptions.js | 143 +-- scripts/generate-markdown.js | 113 +- scripts/generate-meta-schema.js | 45 - {scripts1 => scripts}/json-schema.js | 0 {scripts1 => scripts}/meta-schema.js | 0 scripts/schema.js | 96 -- {scripts1 => scripts}/util.js | 0 scripts/validate-meta-schema.js | 104 -- scripts1/generate-descriptions.js | 142 --- scripts1/generate-markdown.js | 101 -- 16 files changed, 822 insertions(+), 1503 deletions(-) rename {scripts1 => scripts}/fix-meta-schema.js (100%) delete mode 100644 scripts/generate-meta-schema.js rename {scripts1 => scripts}/json-schema.js (100%) rename {scripts1 => scripts}/meta-schema.js (100%) delete mode 100644 scripts/schema.js rename {scripts1 => scripts}/util.js (100%) delete mode 100644 scripts/validate-meta-schema.js delete mode 100644 scripts1/generate-descriptions.js delete mode 100644 scripts1/generate-markdown.js diff --git a/Makefile b/Makefile index 2df58040..812c747b 100644 --- a/Makefile +++ b/Makefile @@ -45,13 +45,9 @@ update-file-format: generate-markdown: npm run-script generate-markdown || exit 1; \ -.PHONY: generate-meta-schema -generate-meta-schema: - npm run-script generate-meta-schema || exit 1; \ - -.PHONY: validate-meta-schema -validate-meta-schema: - npm run-script validate-meta-schema || exit 1; \ +.PHONY: fix-meta-schema +fix-meta-schema: + npm run-script fix-meta-schema || exit 1; \ .PHONY: install-tools install-tools: diff --git a/examples/sdk-config.yaml b/examples/sdk-config.yaml index 1305a00a..6b34ee06 100644 --- a/examples/sdk-config.yaml +++ b/examples/sdk-config.yaml @@ -19,10 +19,11 @@ log_level: info # If omitted, the default resource is used. resource: # Configure resource attributes. Entries have higher priority than entries from .resource.attributes_list. - # Entries must contain .name and .value, and may optionally include .type. If an entry's .type omitted or null, string is used. - # The .value's type must match the .type. Values for .type include: string, bool, int, double, string_array, bool_array, int_array, double_array. attributes: - - name: service.name + - # The attribute name. + name: service.name + # The attribute value. + # The type of value must match .type. value: unknown_service # Configure general attribute limits. See also tracer_provider.limits, logger_provider.limits. attribute_limits: @@ -70,10 +71,10 @@ tracer_provider: exporter: # Configure exporter to be OTLP with HTTP transport. otlp_http: - # Configure endpoint, including the trace specific path. - # If omitted or null, http://localhost:4318/v1/traces is used. + # Configure endpoint, including the signal specific path. + # If omitted or null, the http://localhost:4318/v1/{signal} (where signal is 'traces', 'logs', or 'metrics') is used. endpoint: http://localhost:4318/v1/traces - # Configure certificate used to verify a server's TLS credentials. + # Configure certificate used to verify a server's TLS credentials. # Absolute path to certificate file in PEM format. # If omitted or null, system default certificate verification is used for secure connections. certificate_file: @@ -81,7 +82,7 @@ tracer_provider: # Absolute path to client key file in PEM format. If set, .client_certificate must also be set. # If omitted or null, mTLS is not used. client_key_file: - # Configure mTLS client certificate. + # Configure mTLS client certificate. # Absolute path to client certificate file in PEM format. If set, .client_key must also be set. # If omitted or null, mTLS is not used. client_certificate_file: @@ -89,7 +90,7 @@ tracer_provider: # Values include: gzip, none. Implementations may support other compression algorithms. # If omitted or null, none is used. compression: gzip - # Configure max time (in milliseconds) to wait for each export. + # Configure max time (in milliseconds) to wait for each export. # Value must be non-negative. A value of 0 indicates no limit (infinity). # If omitted or null, 10000 is used. timeout: 10000 @@ -171,10 +172,10 @@ meter_provider: exporter: # Configure exporter to be OTLP with HTTP transport. otlp_http: - # Configure endpoint, including the metric specific path. - # If omitted or null, http://localhost:4318/v1/metrics is used. + # Configure endpoint, including the signal specific path. + # If omitted or null, the http://localhost:4318/v1/{signal} (where signal is 'traces', 'logs', or 'metrics') is used. endpoint: http://localhost:4318/v1/metrics - # Configure certificate used to verify a server's TLS credentials. + # Configure certificate used to verify a server's TLS credentials. # Absolute path to certificate file in PEM format. # If omitted or null, system default certificate verification is used for secure connections. certificate_file: @@ -182,7 +183,7 @@ meter_provider: # Absolute path to client key file in PEM format. If set, .client_certificate must also be set. # If omitted or null, mTLS is not used. client_key_file: - # Configure mTLS client certificate. + # Configure mTLS client certificate. # Absolute path to client certificate file in PEM format. If set, .client_key must also be set. # If omitted or null, mTLS is not used. client_certificate_file: @@ -190,18 +191,18 @@ meter_provider: # Values include: gzip, none. Implementations may support other compression algorithms. # If omitted or null, none is used. compression: gzip - # Configure max time (in milliseconds) to wait for each export. + # Configure max time (in milliseconds) to wait for each export. # Value must be non-negative. A value of 0 indicates no limit (infinity). # If omitted or null, 10000 is used. timeout: 10000 # Configure headers. Entries have higher priority than entries from .headers_list. # If an entry's .value is null, the entry is ignored. headers: [] - # Configure temporality preference. + # Configure temporality preference. # Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md. # If omitted or null, cumulative is used. temporality_preference: cumulative - # Configure default histogram aggregation. + # Configure default histogram aggregation. # Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md. # If omitted or null, explicit_bucket_histogram is used. default_histogram_aggregation: explicit_bucket_histogram @@ -234,8 +235,10 @@ logger_provider: exporter: # Configure exporter to be OTLP with HTTP transport. otlp_http: + # Configure endpoint, including the signal specific path. + # If omitted or null, the http://localhost:4318/v1/{signal} (where signal is 'traces', 'logs', or 'metrics') is used. endpoint: http://localhost:4318/v1/logs - # Configure certificate used to verify a server's TLS credentials. + # Configure certificate used to verify a server's TLS credentials. # Absolute path to certificate file in PEM format. # If omitted or null, system default certificate verification is used for secure connections. certificate_file: @@ -243,7 +246,7 @@ logger_provider: # Absolute path to client key file in PEM format. If set, .client_certificate must also be set. # If omitted or null, mTLS is not used. client_key_file: - # Configure mTLS client certificate. + # Configure mTLS client certificate. # Absolute path to client certificate file in PEM format. If set, .client_key must also be set. # If omitted or null, mTLS is not used. client_certificate_file: @@ -251,7 +254,7 @@ logger_provider: # Values include: gzip, none. Implementations may support other compression algorithms. # If omitted or null, none is used. compression: gzip - # Configure max time (in milliseconds) to wait for each export. + # Configure max time (in milliseconds) to wait for each export. # Value must be non-negative. A value of 0 indicates no limit (infinity). # If omitted or null, 10000 is used. timeout: 10000 diff --git a/examples/sdk-migration-config.yaml b/examples/sdk-migration-config.yaml index 21131dbe..9a395fc2 100644 --- a/examples/sdk-migration-config.yaml +++ b/examples/sdk-migration-config.yaml @@ -46,10 +46,11 @@ log_level: ${OTEL_LOG_LEVEL:-info} # If omitted, the default resource is used. resource: # Configure resource attributes. Entries have higher priority than entries from .resource.attributes_list. - # Entries must contain .name and .value, and may optionally include .type. If an entry's .type omitted or null, string is used. - # The .value's type must match the .type. Values for .type include: string, bool, int, double, string_array, bool_array, int_array, double_array. attributes: - - name: service.name + - # The attribute name. + name: service.name + # The attribute value. + # The type of value must match .type. value: ${OTEL_SERVICE_NAME:-unknown_service} # Configure resource attributes. Entries have lower priority than entries from .resource.attributes. # The value is a list of comma separated key-value pairs matching the format of OTEL_RESOURCE_ATTRIBUTES. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details. @@ -102,10 +103,10 @@ tracer_provider: exporter: # Configure exporter to be OTLP with HTTP transport. otlp_http: - # Configure endpoint, including the trace specific path. - # If omitted or null, http://localhost:4318/v1/traces is used. + # Configure endpoint, including the signal specific path. + # If omitted or null, the http://localhost:4318/v1/{signal} (where signal is 'traces', 'logs', or 'metrics') is used. endpoint: ${OTEL_EXPORTER_OTLP_TRACES_ENDPOINT:-http://localhost:4318/v1/traces} - # Configure certificate used to verify a server's TLS credentials. + # Configure certificate used to verify a server's TLS credentials. # Absolute path to certificate file in PEM format. # If omitted or null, system default certificate verification is used for secure connections. certificate_file: ${OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE} @@ -113,7 +114,7 @@ tracer_provider: # Absolute path to client key file in PEM format. If set, .client_certificate must also be set. # If omitted or null, mTLS is not used. client_key_file: ${OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY} - # Configure mTLS client certificate. + # Configure mTLS client certificate. # Absolute path to client certificate file in PEM format. If set, .client_key must also be set. # If omitted or null, mTLS is not used. client_certificate_file: ${OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATE} @@ -121,7 +122,7 @@ tracer_provider: # Values include: gzip, none. Implementations may support other compression algorithms. # If omitted or null, none is used. compression: ${OTEL_EXPORTER_OTLP_TRACES_COMPRESSION:-gzip} - # Configure max time (in milliseconds) to wait for each export. + # Configure max time (in milliseconds) to wait for each export. # Value must be non-negative. A value of 0 indicates no limit (infinity). # If omitted or null, 10000 is used. timeout: ${OTEL_EXPORTER_OTLP_TRACES_TIMEOUT:-10000} @@ -209,10 +210,10 @@ meter_provider: exporter: # Configure exporter to be OTLP with HTTP transport. otlp_http: - # Configure endpoint, including the metric specific path. - # If omitted or null, http://localhost:4318/v1/metrics is used. + # Configure endpoint, including the signal specific path. + # If omitted or null, the http://localhost:4318/v1/{signal} (where signal is 'traces', 'logs', or 'metrics') is used. endpoint: ${OTEL_EXPORTER_OTLP_METRICS_ENDPOINT:-http://localhost:4318/v1/metrics} - # Configure certificate used to verify a server's TLS credentials. + # Configure certificate used to verify a server's TLS credentials. # Absolute path to certificate file in PEM format. # If omitted or null, system default certificate verification is used for secure connections. certificate_file: ${OTEL_EXPORTER_OTLP_METRICS_CERTIFICATE} @@ -220,7 +221,7 @@ meter_provider: # Absolute path to client key file in PEM format. If set, .client_certificate must also be set. # If omitted or null, mTLS is not used. client_key_file: ${OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY} - # Configure mTLS client certificate. + # Configure mTLS client certificate. # Absolute path to client certificate file in PEM format. If set, .client_key must also be set. # If omitted or null, mTLS is not used. client_certificate_file: ${OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE} @@ -228,7 +229,7 @@ meter_provider: # Values include: gzip, none. Implementations may support other compression algorithms. # If omitted or null, none is used. compression: ${OTEL_EXPORTER_OTLP_METRICS_COMPRESSION:-gzip} - # Configure max time (in milliseconds) to wait for each export. + # Configure max time (in milliseconds) to wait for each export. # Value must be non-negative. A value of 0 indicates no limit (infinity). # If omitted or null, 10000 is used. timeout: ${OTEL_EXPORTER_OTLP_METRICS_TIMEOUT:-10000} @@ -239,11 +240,11 @@ meter_provider: # The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details. # If omitted or null, no headers are added. headers_list: ${OTEL_EXPORTER_OTLP_METRICS_HEADERS} - # Configure temporality preference. + # Configure temporality preference. # Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md. # If omitted or null, cumulative is used. temporality_preference: ${OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE:-cumulative} - # Configure default histogram aggregation. + # Configure default histogram aggregation. # Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md. # If omitted or null, explicit_bucket_histogram is used. default_histogram_aggregation: ${OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION:-explicit_bucket_histogram} @@ -276,8 +277,10 @@ logger_provider: exporter: # Configure exporter to be OTLP with HTTP transport. otlp_http: + # Configure endpoint, including the signal specific path. + # If omitted or null, the http://localhost:4318/v1/{signal} (where signal is 'traces', 'logs', or 'metrics') is used. endpoint: ${OTEL_EXPORTER_OTLP_LOGS_ENDPOINT:-http://localhost:4318/v1/logs} - # Configure certificate used to verify a server's TLS credentials. + # Configure certificate used to verify a server's TLS credentials. # Absolute path to certificate file in PEM format. # If omitted or null, system default certificate verification is used for secure connections. certificate_file: ${OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE} @@ -285,7 +288,7 @@ logger_provider: # Absolute path to client key file in PEM format. If set, .client_certificate must also be set. # If omitted or null, mTLS is not used. client_key_file: ${OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEY} - # Configure mTLS client certificate. + # Configure mTLS client certificate. # Absolute path to client certificate file in PEM format. If set, .client_key must also be set. # If omitted or null, mTLS is not used. client_certificate_file: ${OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE} @@ -293,7 +296,7 @@ logger_provider: # Values include: gzip, none. Implementations may support other compression algorithms. # If omitted or null, none is used. compression: ${OTEL_EXPORTER_OTLP_LOGS_COMPRESSION:-gzip} - # Configure max time (in milliseconds) to wait for each export. + # Configure max time (in milliseconds) to wait for each export. # Value must be non-negative. A value of 0 indicates no limit (infinity). # If omitted or null, 10000 is used. timeout: ${OTEL_EXPORTER_OTLP_LOGS_TIMEOUT:-10000} diff --git a/package.json b/package.json index 96c372db..9280ea5b 100644 --- a/package.json +++ b/package.json @@ -3,11 +3,7 @@ "scripts": { "generate-descriptions": "node scripts/generate-descriptions.js", "generate-markdown": "node scripts/generate-markdown.js", - "generate-meta-schema": "node scripts/generate-meta-schema.js", - "validate-meta-schema": "node scripts/validate-meta-schema.js", - "fix-meta-schema": "node scripts1/fix-meta-schema.js", - "generate-descriptions-new": "node scripts1/generate-descriptions.js", - "generate-markdown-new": "node scripts1/generate-markdown.js" + "fix-meta-schema": "node scripts/fix-meta-schema.js" }, "devDependencies": { "@json-schema-tools/traverse": "^1.10.4", diff --git a/schema-docs.md b/schema-docs.md index cc70f96e..e51b777f 100644 --- a/schema-docs.md +++ b/schema-docs.md @@ -11,12 +11,12 @@ | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `default` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `drop` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `explicit_bucket_histogram` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `base2_exponential_bucket_histogram` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `last_value` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `sum` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `default` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `drop` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `explicit_bucket_histogram` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `base2_exponential_bucket_histogram` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `last_value` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `sum` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -47,12 +47,9 @@ "$ref": "#/$defs/SumAggregation" } } -}
-
-Path patterns - -* `.meter_provider.views[].stream.aggregation` +}
+ ### AlwaysOffSampler No properties. @@ -67,12 +64,9 @@ No properties. "null" ], "additionalProperties": false -} -
-Path patterns - -* `.tracer_provider.sampler.always_off` +}
+ ### AlwaysOnSampler No properties. @@ -87,12 +81,9 @@ No properties. "null" ], "additionalProperties": false -} -
-Path patterns - -* `.tracer_provider.sampler.always_on` +}
+ ### AttributeLimits | Property | Description | Type | Required? | @@ -102,8 +93,8 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `attribute_value_length_limit` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `attribute_count_limit` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `attribute_value_length_limit` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `attribute_count_limit` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -126,25 +117,22 @@ No properties. ] } } -}
-
-Path patterns - -* `.attribute_limits` +}
+ ### AttributeNameValue | Property | Description | Type | Required? | |---|---|---|---| -| `name` | TODO | `string` | `true` | -| `value` | TODO | One of:
* [`see JSON schema`](#see JSON schema)
| `true` | -| `type` | TODO | [`AttributeType`](#AttributeType) | `false` | +| `name` | The attribute name.
| `string` | `true` | +| `value` | The attribute value.
The type of value must match .type.
| One of:
* [`see JSON schema`](#see JSON schema)
| `true` | +| `type` | The attribute type.
Values include: string, bool, int, double, string_array, bool_array, int_array, double_array.
If omitted or null, string is used.
| [`AttributeType`](#AttributeType) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `name` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `value` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `type` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `name` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `value` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `type` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -199,12 +187,9 @@ No properties. "name", "value" ] -}
-
-Path patterns - -* `.resource.attributes[]` +}
+ ### AttributeType No properties. @@ -229,12 +214,9 @@ No properties. "int_array", "double_array" ] -} -
-Path patterns - -* `.resource.attributes[].type` +}
+ ### B3MultiPropagator No properties. @@ -249,12 +231,9 @@ No properties. "null" ], "additionalProperties": false -} -
-Path patterns - -* `.propagator.composite[].b3multi` +}
+ ### B3Propagator No properties. @@ -269,12 +248,9 @@ No properties. "null" ], "additionalProperties": false -} -
-Path patterns - -* `.propagator.composite[].b3` +}
+ ### BaggagePropagator No properties. @@ -289,12 +265,9 @@ No properties. "null" ], "additionalProperties": false -} -
-Path patterns - -* `.propagator.composite[].baggage` +}
+ ### Base2ExponentialBucketHistogramAggregation | Property | Description | Type | Required? | @@ -305,9 +278,9 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `max_scale` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `max_size` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `record_min_max` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `max_scale` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `max_size` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `record_min_max` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -339,12 +312,9 @@ No properties. ] } } -}
-
-Path patterns - -* `.meter_provider.views[].stream.aggregation.base2_exponential_bucket_histogram` +}
+ ### BatchLogRecordProcessor | Property | Description | Type | Required? | @@ -357,11 +327,11 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `schedule_delay` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `export_timeout` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `max_queue_size` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `max_export_batch_size` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `exporter` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `schedule_delay` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `export_timeout` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `max_queue_size` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `max_export_batch_size` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `exporter` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -406,12 +376,9 @@ No properties. "required": [ "exporter" ] -}
-
-Path patterns - -* `.logger_provider.processors[].batch` +}
+ ### BatchSpanProcessor | Property | Description | Type | Required? | @@ -424,11 +391,11 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `schedule_delay` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `export_timeout` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `max_queue_size` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `max_export_batch_size` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `exporter` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `schedule_delay` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `export_timeout` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `max_queue_size` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `max_export_batch_size` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `exporter` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -473,12 +440,9 @@ No properties. "required": [ "exporter" ] -}
-
-Path patterns - -* `.tracer_provider.processors[].batch` +}
+ ### CardinalityLimits | Property | Description | Type | Required? | @@ -494,14 +458,14 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `default` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `counter` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `gauge` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `histogram` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `observable_counter` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `observable_gauge` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `observable_up_down_counter` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `up_down_counter` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `default` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `counter` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `gauge` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `histogram` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `observable_counter` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `observable_gauge` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `observable_up_down_counter` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `up_down_counter` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -568,13 +532,9 @@ No properties. "exclusiveMinimum": 0 } } -}
-
-Path patterns - -* `.meter_provider.readers[].periodic.cardinality_limits` -* `.meter_provider.readers[].pull.cardinality_limits` +}
+ ### ConsoleExporter No properties. @@ -589,16 +549,9 @@ No properties. "null" ], "additionalProperties": false -} -
-Path patterns - -* `.logger_provider.processors[].batch.exporter.console` -* `.logger_provider.processors[].simple.exporter.console` -* `.meter_provider.readers[].periodic.exporter.console` -* `.tracer_provider.processors[].batch.exporter.console` -* `.tracer_provider.processors[].simple.exporter.console` +}
+ ### DefaultAggregation No properties. @@ -613,12 +566,9 @@ No properties. "null" ], "additionalProperties": false -} -
-Path patterns - -* `.meter_provider.views[].stream.aggregation.default` +}
+ ### DropAggregation No properties. @@ -633,12 +583,9 @@ No properties. "null" ], "additionalProperties": false -} -
-Path patterns - -* `.meter_provider.views[].stream.aggregation.drop` +}
+ ### ExemplarFilter No properties. @@ -657,12 +604,9 @@ No properties. "always_off", "trace_based" ] -} -
-Path patterns - -* `.meter_provider.exemplar_filter` +}
+ ### ExperimentalGeneralInstrumentation | Property | Description | Type | Required? | @@ -672,8 +616,8 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `peer` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `http` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `peer` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `http` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -690,23 +634,56 @@ No properties. "$ref": "#/$defs/ExperimentalHttpInstrumentation" } } -}
+} + + +### ExperimentalHttpClientInstrumentation + +| Property | Description | Type | Required? | +|---|---|---|---| +| `request_captured_headers` | Configure headers to capture for outbound http requests.
| `array` of [`string`](#string) | `false` | +| `response_captured_headers` | Configure headers to capture for inbound http responses.
| `array` of [`string`](#string) | `false` | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| `request_captured_headers` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `response_captured_headers` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +
-Path patterns +JSON Schema -* `.instrumentation/development.general` +[JSON Schema Source File](./schema/instrumentation.json) +
{
+  "type": "object",
+  "additionalProperties": false,
+  "properties": {
+    "request_captured_headers": {
+      "type": "array",
+      "items": {
+        "type": "string"
+      }
+    },
+    "response_captured_headers": {
+      "type": "array",
+      "items": {
+        "type": "string"
+      }
+    }
+  }
+}
+ ### ExperimentalHttpInstrumentation | Property | Description | Type | Required? | |---|---|---|---| -| `client` | Configure instrumentations following the http client semantic conventions. | `object` | `false` | -| `server` | Configure instrumentations following the http server semantic conventions. | `object` | `false` | +| `client` | Configure instrumentations following the http client semantic conventions. | [`ExperimentalHttpClientInstrumentation`](#ExperimentalHttpClientInstrumentation) | `false` | +| `server` | Configure instrumentations following the http server semantic conventions. | [`ExperimentalHttpServerInstrumentation`](#ExperimentalHttpServerInstrumentation) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `client` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `server` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `client` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `server` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -717,79 +694,82 @@ No properties. "additionalProperties": false, "properties": { "client": { - "type": "object", - "additionalProperties": false, - "properties": { - "request_captured_headers": { - "type": "array", - "items": { - "type": "string" - } - }, - "response_captured_headers": { - "type": "array", - "items": { - "type": "string" - } - } - } + "$ref": "#/$defs/ExperimentalHttpClientInstrumentation" }, "server": { - "type": "object", - "additionalProperties": false, - "properties": { - "request_captured_headers": { - "type": "array", - "items": { - "type": "string" - } - }, - "response_captured_headers": { - "type": "array", - "items": { - "type": "string" - } - } - } + "$ref": "#/$defs/ExperimentalHttpServerInstrumentation" } } -}
+} + + +### ExperimentalHttpServerInstrumentation + +| Property | Description | Type | Required? | +|---|---|---|---| +| `request_captured_headers` | Configure headers to capture for inbound http requests.
| `array` of [`string`](#string) | `false` | +| `response_captured_headers` | Configure headers to capture for outbound http responses.
| `array` of [`string`](#string) | `false` | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| `request_captured_headers` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `response_captured_headers` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +
-Path patterns +JSON Schema -* `.instrumentation/development.general.http` +[JSON Schema Source File](./schema/instrumentation.json) +
{
+  "type": "object",
+  "additionalProperties": false,
+  "properties": {
+    "request_captured_headers": {
+      "type": "array",
+      "items": {
+        "type": "string"
+      }
+    },
+    "response_captured_headers": {
+      "type": "array",
+      "items": {
+        "type": "string"
+      }
+    }
+  }
+}
+ ### ExperimentalInstrumentation | Property | Description | Type | Required? | |---|---|---|---| | `general` | Configure general SemConv options that may apply to multiple languages and instrumentations.
Instrumenation may merge general config options with the language specific configuration at .instrumentation..
| [`ExperimentalGeneralInstrumentation`](#ExperimentalGeneralInstrumentation) | `false` | | `cpp` | Configure C++ language-specific instrumentation libraries. | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | -| `dotnet` | Configure .NET language-specific instrumentation libraries. | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | -| `erlang` | Configure Erlang language-specific instrumentation libraries. | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | -| `go` | Configure Go language-specific instrumentation libraries. | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | -| `java` | Configure Java language-specific instrumentation libraries. | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | -| `js` | Configure JavaScript language-specific instrumentation libraries. | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | -| `php` | Configure PHP language-specific instrumentation libraries. | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | -| `python` | Configure Python language-specific instrumentation libraries. | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | -| `ruby` | Configure Ruby language-specific instrumentation libraries. | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | -| `rust` | Configure Rust language-specific instrumentation libraries. | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | -| `swift` | Configure Swift language-specific instrumentation libraries. | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | +| `dotnet` | Configure .NET language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | +| `erlang` | Configure Erlang language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | +| `go` | Configure Go language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | +| `java` | Configure Java language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | +| `js` | Configure JavaScript language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | +| `php` | Configure PHP language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | +| `python` | Configure Python language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | +| `ruby` | Configure Ruby language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | +| `rust` | Configure Rust language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | +| `swift` | Configure Swift language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `general` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `cpp` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `dotnet` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `erlang` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `go` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `java` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `js` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `php` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `python` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `ruby` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `rust` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `swift` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `general` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `cpp` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `dotnet` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `erlang` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `go` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `java` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `js` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `php` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `python` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `ruby` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `rust` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `swift` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -863,20 +843,59 @@ No properties. "service_mapping": { "type": "array", "items": { - "type": "object", - "additionalProperties": false, - "properties": { - "peer": { - "type": "string" - }, - "service": { - "type": "string" - } - }, - "required": [ - "peer", - "service" - ] + "$ref": "#/$defs/ExperimentalPeerServiceMapping" + } + } + } + }, + "ExperimentalPeerServiceMapping": { + "type": "object", + "additionalProperties": false, + "properties": { + "peer": { + "type": "string" + }, + "service": { + "type": "string" + } + }, + "required": [ + "peer", + "service" + ] + }, + "ExperimentalHttpClientInstrumentation": { + "type": "object", + "additionalProperties": false, + "properties": { + "request_captured_headers": { + "type": "array", + "items": { + "type": "string" + } + }, + "response_captured_headers": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "ExperimentalHttpServerInstrumentation": { + "type": "object", + "additionalProperties": false, + "properties": { + "request_captured_headers": { + "type": "array", + "items": { + "type": "string" + } + }, + "response_captured_headers": { + "type": "array", + "items": { + "type": "string" } } } @@ -886,40 +905,10 @@ No properties. "additionalProperties": false, "properties": { "client": { - "type": "object", - "additionalProperties": false, - "properties": { - "request_captured_headers": { - "type": "array", - "items": { - "type": "string" - } - }, - "response_captured_headers": { - "type": "array", - "items": { - "type": "string" - } - } - } + "$ref": "#/$defs/ExperimentalHttpClientInstrumentation" }, "server": { - "type": "object", - "additionalProperties": false, - "properties": { - "request_captured_headers": { - "type": "array", - "items": { - "type": "string" - } - }, - "response_captured_headers": { - "type": "array", - "items": { - "type": "string" - } - } - } + "$ref": "#/$defs/ExperimentalHttpServerInstrumentation" } } }, @@ -933,12 +922,9 @@ No properties. } } } -}
-
-Path patterns - -* `.instrumentation/development` +}
+ ### ExperimentalLanguageSpecificInstrumentation No properties. @@ -955,22 +941,9 @@ No properties. "type": "object" } } -} -
-Path patterns - -* `.instrumentation/development.cpp` -* `.instrumentation/development.dotnet` -* `.instrumentation/development.erlang` -* `.instrumentation/development.go` -* `.instrumentation/development.java` -* `.instrumentation/development.js` -* `.instrumentation/development.php` -* `.instrumentation/development.python` -* `.instrumentation/development.ruby` -* `.instrumentation/development.rust` -* `.instrumentation/development.swift` +}
+ ### ExperimentalLoggerConfig | Property | Description | Type | Required? | @@ -979,7 +952,7 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `disabled` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `disabled` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -997,13 +970,9 @@ No properties. ] } } -}
-
-Path patterns - -* `.logger_provider.logger_configurator/development.default_config` -* `.logger_provider.logger_configurator/development.loggers[].config` +}
+ ### ExperimentalLoggerConfigurator | Property | Description | Type | Required? | @@ -1013,8 +982,8 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `default_config` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `loggers` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `default_config` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `loggers` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -1036,12 +1005,9 @@ No properties. } } } -}
-
-Path patterns - -* `.logger_provider.logger_configurator/development` +}
+ ### ExperimentalLoggerMatcherAndConfig | Property | Description | Type | Required? | @@ -1051,8 +1017,8 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `name` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `config` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `name` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `config` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -1073,12 +1039,9 @@ No properties. "$ref": "#/$defs/ExperimentalLoggerConfig" } } -}
-
-Path patterns - -* `.logger_provider.logger_configurator/development.loggers[]` +}
+ ### ExperimentalMeterConfig | Property | Description | Type | Required? | @@ -1087,7 +1050,7 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `disabled` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `disabled` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -1105,13 +1068,9 @@ No properties. ] } } -}
-
-Path patterns - -* `.meter_provider.meter_configurator/development.default_config` -* `.meter_provider.meter_configurator/development.meters[].config` +}
+ ### ExperimentalMeterConfigurator | Property | Description | Type | Required? | @@ -1121,8 +1080,8 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `default_config` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `meters` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `default_config` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `meters` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -1144,12 +1103,9 @@ No properties. } } } -}
-
-Path patterns - -* `.meter_provider.meter_configurator/development` +}
+ ### ExperimentalMeterMatcherAndConfig | Property | Description | Type | Required? | @@ -1159,8 +1115,8 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `name` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `config` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `name` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `config` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -1181,21 +1137,18 @@ No properties. "$ref": "#/$defs/ExperimentalMeterConfig" } } -}
-
-Path patterns - -* `.meter_provider.meter_configurator/development.meters[]` +}
+ ### ExperimentalOtlpFileExporter | Property | Description | Type | Required? | |---|---|---|---| -| `output_stream` | TODO | One of:
* `string`
* `null`
| `false` | +| `output_stream` | Configure output stream.
Values include stdout, or scheme+destination. For example: file:///path/to/file.jsonl.
If omitted or null, stdout is used.
| One of:
* `string`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `output_stream` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `output_stream` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -1215,28 +1168,22 @@ No properties. ] } } -}
-
-Path patterns - -* `.logger_provider.processors[].batch.exporter.otlp_file/development` -* `.logger_provider.processors[].simple.exporter.otlp_file/development` -* `.tracer_provider.processors[].batch.exporter.otlp_file/development` -* `.tracer_provider.processors[].simple.exporter.otlp_file/development` +}
+ ### ExperimentalOtlpFileMetricExporter | Property | Description | Type | Required? | |---|---|---|---| -| `output_stream` | TODO | One of:
* `string`
* `null`
| `false` | -| `temporality_preference` | TODO | [`ExporterTemporalityPreference`](#ExporterTemporalityPreference) | `false` | -| `default_histogram_aggregation` | TODO | [`ExporterDefaultHistogramAggregation`](#ExporterDefaultHistogramAggregation) | `false` | +| `output_stream` | Configure output stream.
Values include stdout, or scheme+destination. For example: file:///path/to/file.jsonl.
If omitted or null, stdout is used.
| One of:
* `string`
* `null`
| `false` | +| `temporality_preference` | Configure temporality preference.
Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, cumulative is used.
| [`ExporterTemporalityPreference`](#ExporterTemporalityPreference) | `false` | +| `default_histogram_aggregation` | Configure default histogram aggregation.
Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, explicit_bucket_histogram is used.
| [`ExporterDefaultHistogramAggregation`](#ExporterDefaultHistogramAggregation) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `output_stream` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `temporality_preference` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `default_histogram_aggregation` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `output_stream` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `temporality_preference` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `default_histogram_aggregation` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -1262,21 +1209,18 @@ No properties. "$ref": "#/$defs/ExporterDefaultHistogramAggregation" } } -}
-
-Path patterns - -* `.meter_provider.readers[].periodic.exporter.otlp_file/development` +}
+ ### ExperimentalPeerInstrumentation | Property | Description | Type | Required? | |---|---|---|---| -| `service_mapping` | TODO | `array` of [`object`](#object) | `false` | +| `service_mapping` | Configure the service mapping for instrumentations following peer.service semantic conventions.
See peer.service semantic conventions: https://opentelemetry.io/docs/specs/semconv/general/attributes/#general-remote-service-attributes
| `array` of [`ExperimentalPeerServiceMapping`](#ExperimentalPeerServiceMapping) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `service_mapping` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `service_mapping` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -1289,29 +1233,47 @@ No properties. "service_mapping": { "type": "array", "items": { - "type": "object", - "additionalProperties": false, - "properties": { - "peer": { - "type": "string" - }, - "service": { - "type": "string" - } - }, - "required": [ - "peer", - "service" - ] + "$ref": "#/$defs/ExperimentalPeerServiceMapping" } } } -}
+} + + +### ExperimentalPeerServiceMapping + +| Property | Description | Type | Required? | +|---|---|---|---| +| `peer` | The IP address to map.
| `string` | `true` | +| `service` | The logical name corresponding to the IP address of .peer.
| `string` | `true` | + +| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | +|---|---|---|---|---|---|---|---|---|---|---|---| +| `peer` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `service` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +
-Path patterns +JSON Schema -* `.instrumentation/development.general.peer` +[JSON Schema Source File](./schema/instrumentation.json) +
{
+  "type": "object",
+  "additionalProperties": false,
+  "properties": {
+    "peer": {
+      "type": "string"
+    },
+    "service": {
+      "type": "string"
+    }
+  },
+  "required": [
+    "peer",
+    "service"
+  ]
+}
+ ### ExperimentalPrometheusMetricExporter | Property | Description | Type | Required? | @@ -1321,16 +1283,16 @@ No properties. | `without_units` | Configure Prometheus Exporter to produce metrics without a unit suffix or UNIT metadata.
If omitted or null, false is used.
| One of:
* `boolean`
* `null`
| `false` | | `without_type_suffix` | Configure Prometheus Exporter to produce metrics without a type suffix.
If omitted or null, false is used.
| One of:
* `boolean`
* `null`
| `false` | | `without_scope_info` | Configure Prometheus Exporter to produce metrics without a scope info metric.
If omitted or null, false is used.
| One of:
* `boolean`
* `null`
| `false` | -| `with_resource_constant_labels` | Configure Prometheus Exporter to add resource attributes as metrics attributes. | [`IncludeExclude`](#IncludeExclude) | `false` | +| `with_resource_constant_labels` | Configure Prometheus Exporter to add resource attributes as metrics attributes, where the resource attribute keys match the patterns. | [`IncludeExclude`](#IncludeExclude) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `host` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `port` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `without_units` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `without_type_suffix` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `without_scope_info` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `with_resource_constant_labels` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `host` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `port` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `without_units` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `without_type_suffix` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `without_scope_info` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `with_resource_constant_labels` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -1377,12 +1339,9 @@ No properties. "$ref": "common.json#/$defs/IncludeExclude" } } -}
-
-Path patterns - -* `.meter_provider.readers[].pull.exporter.prometheus/development` +}
+ ### ExperimentalResourceDetection | Property | Description | Type | Required? | @@ -1392,8 +1351,8 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `attributes` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `detectors` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `attributes` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `detectors` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -1413,12 +1372,9 @@ No properties. } } } -}
-
-Path patterns - -* `.resource.detection/development` +}
+ ### ExperimentalResourceDetector No properties. @@ -1440,12 +1396,9 @@ No properties. ] } } -} -
-Path patterns - -* `.resource.detection/development.detectors[]` +}
+ ### ExperimentalTracerConfig | Property | Description | Type | Required? | @@ -1454,7 +1407,7 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `disabled` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `disabled` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -1475,13 +1428,9 @@ No properties. "required": [ "disabled" ] -}
-
-Path patterns - -* `.tracer_provider.tracer_configurator/development.default_config` -* `.tracer_provider.tracer_configurator/development.tracers[].config` +}
+ ### ExperimentalTracerConfigurator | Property | Description | Type | Required? | @@ -1491,8 +1440,8 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `default_config` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `tracers` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `default_config` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `tracers` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -1514,12 +1463,9 @@ No properties. } } } -}
-
-Path patterns - -* `.tracer_provider.tracer_configurator/development` +}
+ ### ExperimentalTracerMatcherAndConfig | Property | Description | Type | Required? | @@ -1529,8 +1475,8 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `name` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `config` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `name` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `config` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -1555,12 +1501,9 @@ No properties. "name", "config" ] -}
-
-Path patterns - -* `.tracer_provider.tracer_configurator/development.tracers[]` +}
+ ### ExplicitBucketHistogramAggregation | Property | Description | Type | Required? | @@ -1570,8 +1513,8 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `boundaries` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `record_min_max` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `boundaries` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `record_min_max` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -1597,12 +1540,9 @@ No properties. ] } } -}
-
-Path patterns - -* `.meter_provider.views[].stream.aggregation.explicit_bucket_histogram` +}
+ ### ExporterDefaultHistogramAggregation No properties. @@ -1620,14 +1560,9 @@ No properties. "explicit_bucket_histogram", "base2_exponential_bucket_histogram" ] -} -
-Path patterns - -* `.meter_provider.readers[].periodic.exporter.otlp_http.default_histogram_aggregation` -* `.meter_provider.readers[].periodic.exporter.otlp_grpc.default_histogram_aggregation` -* `.meter_provider.readers[].periodic.exporter.otlp_file/development.default_histogram_aggregation` +}
+ ### ExporterTemporalityPreference No properties. @@ -1646,25 +1581,20 @@ No properties. "delta", "low_memory" ] -} -
-Path patterns - -* `.meter_provider.readers[].periodic.exporter.otlp_http.temporality_preference` -* `.meter_provider.readers[].periodic.exporter.otlp_grpc.temporality_preference` -* `.meter_provider.readers[].periodic.exporter.otlp_file/development.temporality_preference` +}
+ ### IncludeExclude | Property | Description | Type | Required? | |---|---|---|---| -| `included` | Configure list of attribute key patterns to include from resource detectors.
Attribute keys from resource detectors are evaluated to match as follows:
* If the value of the attribute key exactly matches.
* If the value of the attribute key matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
If omitted, all attributes are included.
| `array` of [`string`](#string) | `false` | -| `excluded` | Configure list of attribute key patterns to exclude from resource detectors. Applies after .resource.detectors.attributes.included (i.e. excluded has higher priority than included).
Attribute keys from resource detectors are evaluated to match as follows:
* If the value of the attribute key exactly matches.
* If the value of the attribute key matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
If omitted, .included attributes are included.
| `array` of [`string`](#string) | `false` | +| `included` | Configure list of value patterns to include.
Values are evaluated to match as follows:
* If the value exactly matches.
* If the value matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
If omitted, all values are included.
| `array` of [`string`](#string) | `false` | +| `excluded` | Configure list of value patterns to exclude. Applies after .included (i.e. excluded has higher priority than included).
Values are evaluated to match as follows:
* If the value exactly matches.
* If the value matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
If omitted, .included attributes are included.
| `array` of [`string`](#string) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `included` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `excluded` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `included` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `excluded` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -1687,14 +1617,9 @@ No properties. } } } -}
-
-Path patterns - -* `.meter_provider.readers[].pull.exporter.prometheus/development.with_resource_constant_labels` -* `.meter_provider.views[].stream.attribute_keys` -* `.resource.detection/development.attributes` +}
+ ### InstrumentType No properties. @@ -1717,12 +1642,9 @@ No properties. "observable_up_down_counter", "up_down_counter" ] -} -
-Path patterns - -* `.meter_provider.views[].selector.instrument_type` +}
+ ### JaegerPropagator No properties. @@ -1737,12 +1659,9 @@ No properties. "null" ], "additionalProperties": false -} -
-Path patterns - -* `.propagator.composite[].jaeger` +}
+ ### JaegerRemoteSampler | Property | Description | Type | Required? | @@ -1753,9 +1672,9 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `endpoint` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `interval` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `initial_sampler` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `endpoint` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `interval` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `initial_sampler` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -1785,13 +1704,9 @@ No properties. "$ref": "#/$defs/Sampler" } } -}
-
-Path patterns - -* `.tracer_provider.sampler.jaeger_remote` -* `.tracer_provider.*.jaeger_remote` +}
+ ### LastValueAggregation No properties. @@ -1806,12 +1721,9 @@ No properties. "null" ], "additionalProperties": false -} -
-Path patterns - -* `.meter_provider.views[].stream.aggregation.last_value` +}
+ ### LoggerProvider | Property | Description | Type | Required? | @@ -1822,9 +1734,9 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `processors` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `limits` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `logger_configurator/development` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `processors` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `limits` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `logger_configurator/development` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -2022,12 +1934,9 @@ No properties. } } } -}
-
-Path patterns - -* `.logger_provider` +}
+ ### LogRecordExporter | Property | Description | Type | Required? | @@ -2039,10 +1948,10 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `otlp_http` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `otlp_grpc` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `otlp_file/development` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `console` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `otlp_http` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `otlp_grpc` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `otlp_file/development` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `console` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -2075,13 +1984,9 @@ No properties. ] } } -}
-
-Path patterns - -* `.logger_provider.processors[].batch.exporter` -* `.logger_provider.processors[].simple.exporter` +}
+ ### LogRecordLimits | Property | Description | Type | Required? | @@ -2091,8 +1996,8 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `attribute_value_length_limit` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `attribute_count_limit` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `attribute_value_length_limit` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `attribute_count_limit` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -2117,12 +2022,9 @@ No properties. "minimum": 0 } } -}
-
-Path patterns - -* `.logger_provider.limits` +}
+ ### LogRecordProcessor | Property | Description | Type | Required? | @@ -2132,8 +2034,8 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `batch` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `simple` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `batch` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `simple` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -2159,12 +2061,9 @@ No properties. ] } } -}
-
-Path patterns - -* `.logger_provider.processors[]` +}
+ ### MeterProvider | Property | Description | Type | Required? | @@ -2176,10 +2075,10 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `readers` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `views` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `exemplar_filter` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `meter_configurator/development` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `readers` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `views` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `exemplar_filter` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `meter_configurator/development` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -2900,12 +2799,9 @@ No properties. } } } -}
-
-Path patterns - -* `.meter_provider` +}
+ ### MetricProducer | Property | Description | Type | Required? | @@ -2914,7 +2810,7 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `opencensus` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `opencensus` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -2938,13 +2834,9 @@ No properties. ] } } -}
-
-Path patterns - -* `.meter_provider.readers[].periodic.producers[]` -* `.meter_provider.readers[].pull.producers[]` +}
+ ### MetricReader | Property | Description | Type | Required? | @@ -2954,8 +2846,8 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `periodic` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `pull` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `periodic` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `pull` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -2974,23 +2866,20 @@ No properties. "$ref": "#/$defs/PullMetricReader" } } -}
-
-Path patterns - -* `.meter_provider.readers[]` +}
+ ### NameStringValuePair | Property | Description | Type | Required? | |---|---|---|---| -| `name` | TODO | `string` | `true` | -| `value` | TODO | One of:
* `string`
* `null`
| `true` | +| `name` | The name of the pair. | `string` | `true` | +| `value` | The value of the pair. | One of:
* `string`
* `null`
| `true` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `name` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `value` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `name` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `value` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -3014,21 +2903,9 @@ No properties. "name", "value" ] -}
-
-Path patterns - -* `.logger_provider.processors[].batch.exporter.otlp_http.headers[]` -* `.logger_provider.processors[].batch.exporter.otlp_grpc.headers[]` -* `.logger_provider.processors[].simple.exporter.otlp_http.headers[]` -* `.logger_provider.processors[].simple.exporter.otlp_grpc.headers[]` -* `.meter_provider.readers[].periodic.exporter.otlp_http.headers[]` -* `.meter_provider.readers[].periodic.exporter.otlp_grpc.headers[]` -* `.tracer_provider.processors[].batch.exporter.otlp_http.headers[]` -* `.tracer_provider.processors[].batch.exporter.otlp_grpc.headers[]` -* `.tracer_provider.processors[].simple.exporter.otlp_http.headers[]` -* `.tracer_provider.processors[].simple.exporter.otlp_grpc.headers[]` +}
+ ### OpenCensusMetricProducer No properties. @@ -3043,40 +2920,36 @@ No properties. "null" ], "additionalProperties": false -} -
-Path patterns - -* `.meter_provider.readers[].periodic.producers[].opencensus` -* `.meter_provider.readers[].pull.producers[].opencensus` +}
+ ### OpentelemetryConfiguration | Property | Description | Type | Required? | |---|---|---|---| -| `file_format` | TODO | `string` | `true` | -| `disabled` | TODO | One of:
* `boolean`
* `null`
| `false` | -| `log_level` | TODO | One of:
* `string`
* `null`
| `false` | -| `attribute_limits` | TODO | [`AttributeLimits`](#AttributeLimits) | `false` | -| `logger_provider` | TODO | [`LoggerProvider`](#LoggerProvider) | `false` | -| `meter_provider` | TODO | [`MeterProvider`](#MeterProvider) | `false` | -| `propagator` | TODO | [`Propagator`](#Propagator) | `false` | -| `tracer_provider` | TODO | [`TracerProvider`](#TracerProvider) | `false` | -| `resource` | TODO | [`Resource`](#Resource) | `false` | -| `instrumentation/development` | TODO | [`ExperimentalInstrumentation`](#ExperimentalInstrumentation) | `false` | +| `file_format` | The file format version.
The yaml format is documented at
https://github.com/open-telemetry/opentelemetry-configuration/tree/main/schema
| `string` | `true` | +| `disabled` | Configure if the SDK is disabled or not.
If omitted or null, false is used.
| One of:
* `boolean`
* `null`
| `false` | +| `log_level` | Configure the log level of the internal logger used by the SDK.
If omitted, info is used.
| One of:
* `string`
* `null`
| `false` | +| `attribute_limits` | Configure general attribute limits. See also tracer_provider.limits, logger_provider.limits.
| [`AttributeLimits`](#AttributeLimits) | `false` | +| `logger_provider` | Configure logger provider.
If omitted, a noop logger provider is used.
| [`LoggerProvider`](#LoggerProvider) | `false` | +| `meter_provider` | Configure meter provider.
If omitted, a noop meter provider is used.
| [`MeterProvider`](#MeterProvider) | `false` | +| `propagator` | Configure text map context propagators.
If omitted, a noop propagator is used.
| [`Propagator`](#Propagator) | `false` | +| `tracer_provider` | Configure tracer provider.
If omitted, a noop tracer provider is used.
| [`TracerProvider`](#TracerProvider) | `false` | +| `resource` | Configure resource for all signals.
If omitted, the default resource is used.
| [`Resource`](#Resource) | `false` | +| `instrumentation/development` | Configure instrumentation.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalInstrumentation`](#ExperimentalInstrumentation) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `file_format` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `disabled` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `log_level` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `attribute_limits` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `logger_provider` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `meter_provider` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `propagator` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `tracer_provider` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `resource` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `instrumentation/development` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `file_format` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `disabled` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `log_level` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `attribute_limits` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `logger_provider` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `meter_provider` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `propagator` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `tracer_provider` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `resource` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `instrumentation/development` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -3167,12 +3040,9 @@ No properties. "$ref": "instrumentation.json" } } -}
-
-Path patterns - -* `.` +}
+ ### OpenTracingPropagator No properties. @@ -3187,37 +3057,34 @@ No properties. "null" ], "additionalProperties": false -} -
-Path patterns - -* `.propagator.composite[].ottrace` +}
+ ### OtlpGrpcExporter | Property | Description | Type | Required? | |---|---|---|---| | `endpoint` | Configure endpoint.
If omitted or null, http://localhost:4317 is used.
| One of:
* `string`
* `null`
| `false` | -| `certificate_file` | TODO | One of:
* `string`
* `null`
| `false` | -| `client_key_file` | TODO | One of:
* `string`
* `null`
| `false` | -| `client_certificate_file` | TODO | One of:
* `string`
* `null`
| `false` | -| `headers` | TODO | `array` of [`NameStringValuePair`](#NameStringValuePair) | `false` | -| `headers_list` | TODO | One of:
* `string`
* `null`
| `false` | -| `compression` | TODO | One of:
* `string`
* `null`
| `false` | -| `timeout` | TODO | One of:
* `integer`
* `null`
| `false` | +| `certificate_file` | Configure certificate used to verify a server's TLS credentials.
Absolute path to certificate file in PEM format.
If omitted or null, system default certificate verification is used for secure connections.
| One of:
* `string`
* `null`
| `false` | +| `client_key_file` | Configure mTLS private client key.
Absolute path to client key file in PEM format. If set, .client_certificate must also be set.
If omitted or null, mTLS is not used.
| One of:
* `string`
* `null`
| `false` | +| `client_certificate_file` | Configure mTLS client certificate.
Absolute path to client certificate file in PEM format. If set, .client_key must also be set.
If omitted or null, mTLS is not used.
| One of:
* `string`
* `null`
| `false` | +| `headers` | Configure headers. Entries have higher priority than entries from .headers_list.
If an entry's .value is null, the entry is ignored.
| `array` of [`NameStringValuePair`](#NameStringValuePair) | `false` | +| `headers_list` | Configure headers. Entries have lower priority than entries from .headers.
The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details.
If omitted or null, no headers are added.
| One of:
* `string`
* `null`
| `false` | +| `compression` | Configure compression.
Values include: gzip, none. Implementations may support other compression algorithms.
If omitted or null, none is used.
| One of:
* `string`
* `null`
| `false` | +| `timeout` | Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 10000 is used.
| One of:
* `integer`
* `null`
| `false` | | `insecure` | Configure client transport security for the exporter's connection.
Only applicable when .endpoint is provided without http or https scheme. Implementations may choose to ignore .insecure.
If omitted or null, false is used.
| One of:
* `boolean`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `endpoint` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `certificate_file` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `client_key_file` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `client_certificate_file` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `headers` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `headers_list` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `compression` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `timeout` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `insecure` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `endpoint` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `certificate_file` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `client_key_file` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `client_certificate_file` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `headers` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `headers_list` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `compression` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `timeout` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `insecure` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -3286,44 +3153,38 @@ No properties. ] } } -}
-
-Path patterns - -* `.logger_provider.processors[].batch.exporter.otlp_grpc` -* `.logger_provider.processors[].simple.exporter.otlp_grpc` -* `.tracer_provider.processors[].batch.exporter.otlp_grpc` -* `.tracer_provider.processors[].simple.exporter.otlp_grpc` +}
+ ### OtlpGrpcMetricExporter | Property | Description | Type | Required? | |---|---|---|---| -| `endpoint` | TODO | One of:
* `string`
* `null`
| `false` | -| `certificate_file` | TODO | One of:
* `string`
* `null`
| `false` | -| `client_key_file` | TODO | One of:
* `string`
* `null`
| `false` | -| `client_certificate_file` | TODO | One of:
* `string`
* `null`
| `false` | -| `headers` | TODO | `array` of [`NameStringValuePair`](#NameStringValuePair) | `false` | -| `headers_list` | TODO | One of:
* `string`
* `null`
| `false` | -| `compression` | TODO | One of:
* `string`
* `null`
| `false` | -| `timeout` | TODO | One of:
* `integer`
* `null`
| `false` | -| `insecure` | TODO | One of:
* `boolean`
* `null`
| `false` | -| `temporality_preference` | TODO | [`ExporterTemporalityPreference`](#ExporterTemporalityPreference) | `false` | -| `default_histogram_aggregation` | TODO | [`ExporterDefaultHistogramAggregation`](#ExporterDefaultHistogramAggregation) | `false` | +| `endpoint` | Configure endpoint.
If omitted or null, http://localhost:4317 is used.
| One of:
* `string`
* `null`
| `false` | +| `certificate_file` | Configure certificate used to verify a server's TLS credentials.
Absolute path to certificate file in PEM format.
If omitted or null, system default certificate verification is used for secure connections.
| One of:
* `string`
* `null`
| `false` | +| `client_key_file` | Configure mTLS private client key.
Absolute path to client key file in PEM format. If set, .client_certificate must also be set.
If omitted or null, mTLS is not used.
| One of:
* `string`
* `null`
| `false` | +| `client_certificate_file` | Configure mTLS client certificate.
Absolute path to client certificate file in PEM format. If set, .client_key must also be set.
If omitted or null, mTLS is not used.
| One of:
* `string`
* `null`
| `false` | +| `headers` | Configure headers. Entries have higher priority than entries from .headers_list.
If an entry's .value is null, the entry is ignored.
| `array` of [`NameStringValuePair`](#NameStringValuePair) | `false` | +| `headers_list` | Configure headers. Entries have lower priority than entries from .headers.
The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details.
If omitted or null, no headers are added.
| One of:
* `string`
* `null`
| `false` | +| `compression` | Configure compression.
Values include: gzip, none. Implementations may support other compression algorithms.
If omitted or null, none is used.
| One of:
* `string`
* `null`
| `false` | +| `timeout` | Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 10000 is used.
| One of:
* `integer`
* `null`
| `false` | +| `insecure` | Configure client transport security for the exporter's connection.
Only applicable when .endpoint is provided without http or https scheme. Implementations may choose to ignore .insecure.
If omitted or null, false is used.
| One of:
* `boolean`
* `null`
| `false` | +| `temporality_preference` | Configure temporality preference.
Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, cumulative is used.
| [`ExporterTemporalityPreference`](#ExporterTemporalityPreference) | `false` | +| `default_histogram_aggregation` | Configure default histogram aggregation.
Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, explicit_bucket_histogram is used.
| [`ExporterDefaultHistogramAggregation`](#ExporterDefaultHistogramAggregation) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `endpoint` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `certificate_file` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `client_key_file` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `client_certificate_file` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `headers` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `headers_list` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `compression` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `timeout` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `insecure` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `temporality_preference` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `default_histogram_aggregation` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `endpoint` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `certificate_file` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `client_key_file` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `client_certificate_file` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `headers` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `headers_list` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `compression` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `timeout` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `insecure` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `temporality_preference` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `default_histogram_aggregation` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -3398,12 +3259,9 @@ No properties. "$ref": "#/$defs/ExporterDefaultHistogramAggregation" } } -}
-
-Path patterns - -* `.meter_provider.readers[].periodic.exporter.otlp_grpc` +}
+ ### OtlpHttpEncoding No properties. @@ -3421,41 +3279,34 @@ No properties. "protobuf", "json" ] -} -
-Path patterns - -* `.logger_provider.processors[].batch.exporter.otlp_http.encoding` -* `.logger_provider.processors[].simple.exporter.otlp_http.encoding` -* `.meter_provider.readers[].periodic.exporter.otlp_http.encoding` -* `.tracer_provider.processors[].batch.exporter.otlp_http.encoding` -* `.tracer_provider.processors[].simple.exporter.otlp_http.encoding` +}
+ ### OtlpHttpExporter | Property | Description | Type | Required? | |---|---|---|---| -| `endpoint` | TODO | One of:
* `string`
* `null`
| `false` | -| `certificate_file` | TODO | One of:
* `string`
* `null`
| `false` | -| `client_key_file` | TODO | One of:
* `string`
* `null`
| `false` | -| `client_certificate_file` | TODO | One of:
* `string`
* `null`
| `false` | -| `headers` | TODO | `array` of [`NameStringValuePair`](#NameStringValuePair) | `false` | -| `headers_list` | TODO | One of:
* `string`
* `null`
| `false` | -| `compression` | TODO | One of:
* `string`
* `null`
| `false` | -| `timeout` | TODO | One of:
* `integer`
* `null`
| `false` | +| `endpoint` | Configure endpoint, including the signal specific path.
If omitted or null, the http://localhost:4318/v1/{signal} (where signal is 'traces', 'logs', or 'metrics') is used.
| One of:
* `string`
* `null`
| `false` | +| `certificate_file` | Configure certificate used to verify a server's TLS credentials.
Absolute path to certificate file in PEM format.
If omitted or null, system default certificate verification is used for secure connections.
| One of:
* `string`
* `null`
| `false` | +| `client_key_file` | Configure mTLS private client key.
Absolute path to client key file in PEM format. If set, .client_certificate must also be set.
If omitted or null, mTLS is not used.
| One of:
* `string`
* `null`
| `false` | +| `client_certificate_file` | Configure mTLS client certificate.
Absolute path to client certificate file in PEM format. If set, .client_key must also be set.
If omitted or null, mTLS is not used.
| One of:
* `string`
* `null`
| `false` | +| `headers` | Configure headers. Entries have higher priority than entries from .headers_list.
If an entry's .value is null, the entry is ignored.
| `array` of [`NameStringValuePair`](#NameStringValuePair) | `false` | +| `headers_list` | Configure headers. Entries have lower priority than entries from .headers.
The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details.
If omitted or null, no headers are added.
| One of:
* `string`
* `null`
| `false` | +| `compression` | Configure compression.
Values include: gzip, none. Implementations may support other compression algorithms.
If omitted or null, none is used.
| One of:
* `string`
* `null`
| `false` | +| `timeout` | Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 10000 is used.
| One of:
* `integer`
* `null`
| `false` | | `encoding` | Configure the encoding used for messages.
Values include: protobuf, json. Implementations may not support json.
If omitted or null, protobuf is used.
| [`OtlpHttpEncoding`](#OtlpHttpEncoding) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `endpoint` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `certificate_file` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `client_key_file` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `client_certificate_file` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `headers` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `headers_list` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `compression` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `timeout` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `encoding` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `endpoint` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `certificate_file` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `client_key_file` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `client_certificate_file` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `headers` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `headers_list` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `compression` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `timeout` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `encoding` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -3521,44 +3372,40 @@ No properties. "$ref": "#/$defs/OtlpHttpEncoding" } } -}
-
-Path patterns - -* `.logger_provider.processors[].batch.exporter.otlp_http` -* `.logger_provider.processors[].simple.exporter.otlp_http` -* `.tracer_provider.processors[].batch.exporter.otlp_http` -* `.tracer_provider.processors[].simple.exporter.otlp_http` +}
+ ### OtlpHttpMetricExporter | Property | Description | Type | Required? | |---|---|---|---| -| `endpoint` | Configure endpoint, including the metric specific path.
If omitted or null, http://localhost:4318/v1/metrics is used.
| One of:
* `string`
* `null`
| `false` | -| `certificate_file` | TODO | One of:
* `string`
* `null`
| `false` | -| `client_key_file` | TODO | One of:
* `string`
* `null`
| `false` | -| `client_certificate_file` | TODO | One of:
* `string`
* `null`
| `false` | -| `headers` | TODO | `array` of [`NameStringValuePair`](#NameStringValuePair) | `false` | -| `headers_list` | TODO | One of:
* `string`
* `null`
| `false` | -| `compression` | TODO | One of:
* `string`
* `null`
| `false` | -| `timeout` | TODO | One of:
* `integer`
* `null`
| `false` | -| `encoding` | TODO | [`OtlpHttpEncoding`](#OtlpHttpEncoding) | `false` | -| `temporality_preference` | TODO | [`ExporterTemporalityPreference`](#ExporterTemporalityPreference) | `false` | -| `default_histogram_aggregation` | TODO | [`ExporterDefaultHistogramAggregation`](#ExporterDefaultHistogramAggregation) | `false` | +| `endpoint` | Configure endpoint, including the signal specific path.
If omitted or null, the http://localhost:4318/v1/{signal} (where signal is 'traces', 'logs', or 'metrics') is used.
| One of:
* `string`
* `null`
| `false` | +| `endpoint` | Configure endpoint.
If omitted or null, http://localhost:4317 is used.
| One of:
* `string`
* `null`
| `false` | +| `certificate_file` | Configure certificate used to verify a server's TLS credentials.
Absolute path to certificate file in PEM format.
If omitted or null, system default certificate verification is used for secure connections.
| One of:
* `string`
* `null`
| `false` | +| `client_key_file` | Configure mTLS private client key.
Absolute path to client key file in PEM format. If set, .client_certificate must also be set.
If omitted or null, mTLS is not used.
| One of:
* `string`
* `null`
| `false` | +| `client_certificate_file` | Configure mTLS client certificate.
Absolute path to client certificate file in PEM format. If set, .client_key must also be set.
If omitted or null, mTLS is not used.
| One of:
* `string`
* `null`
| `false` | +| `headers` | Configure headers. Entries have higher priority than entries from .headers_list.
If an entry's .value is null, the entry is ignored.
| `array` of [`NameStringValuePair`](#NameStringValuePair) | `false` | +| `headers_list` | Configure headers. Entries have lower priority than entries from .headers.
The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details.
If omitted or null, no headers are added.
| One of:
* `string`
* `null`
| `false` | +| `compression` | Configure compression.
Values include: gzip, none. Implementations may support other compression algorithms.
If omitted or null, none is used.
| One of:
* `string`
* `null`
| `false` | +| `timeout` | Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 10000 is used.
| One of:
* `integer`
* `null`
| `false` | +| `encoding` | Configure the encoding used for messages.
Values include: protobuf, json. Implementations may not support json.
If omitted or null, protobuf is used.
| [`OtlpHttpEncoding`](#OtlpHttpEncoding) | `false` | +| `temporality_preference` | Configure temporality preference.
Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, cumulative is used.
| [`ExporterTemporalityPreference`](#ExporterTemporalityPreference) | `false` | +| `default_histogram_aggregation` | Configure default histogram aggregation.
Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, explicit_bucket_histogram is used.
| [`ExporterDefaultHistogramAggregation`](#ExporterDefaultHistogramAggregation) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `endpoint` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `certificate_file` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `client_key_file` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `client_certificate_file` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `headers` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `headers_list` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `compression` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `timeout` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `encoding` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `temporality_preference` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `default_histogram_aggregation` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `endpoint` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `endpoint` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `certificate_file` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `client_key_file` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `client_certificate_file` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `headers` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `headers_list` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `compression` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `timeout` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `encoding` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `temporality_preference` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `default_histogram_aggregation` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -3630,29 +3477,26 @@ No properties. "$ref": "#/$defs/ExporterDefaultHistogramAggregation" } } -}
-
-Path patterns - -* `.meter_provider.readers[].periodic.exporter.otlp_http` +}
+ ### ParentBasedSampler | Property | Description | Type | Required? | |---|---|---|---| -| `root` | TODO | [`Sampler`](#Sampler) | `false` | -| `remote_parent_sampled` | TODO | [`Sampler`](#Sampler) | `false` | -| `remote_parent_not_sampled` | TODO | [`Sampler`](#Sampler) | `false` | -| `local_parent_sampled` | TODO | [`Sampler`](#Sampler) | `false` | -| `local_parent_not_sampled` | TODO | [`Sampler`](#Sampler) | `false` | +| `root` | Configure root sampler.
If omitted or null, always_on is used.
| [`Sampler`](#Sampler) | `false` | +| `remote_parent_sampled` | Configure remote_parent_sampled sampler.
If omitted or null, always_on is used.
| [`Sampler`](#Sampler) | `false` | +| `remote_parent_not_sampled` | Configure remote_parent_not_sampled sampler.
If omitted or null, always_off is used.
| [`Sampler`](#Sampler) | `false` | +| `local_parent_sampled` | Configure local_parent_sampled sampler.
If omitted or null, always_on is used.
| [`Sampler`](#Sampler) | `false` | +| `local_parent_not_sampled` | Configure local_parent_not_sampled sampler.
If omitted or null, always_off is used.
| [`Sampler`](#Sampler) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `root` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `remote_parent_sampled` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `remote_parent_not_sampled` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `local_parent_sampled` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `local_parent_not_sampled` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `root` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `remote_parent_sampled` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `remote_parent_not_sampled` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `local_parent_sampled` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `local_parent_not_sampled` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -3681,13 +3525,9 @@ No properties. "$ref": "#/$defs/Sampler" } } -}
-
-Path patterns - -* `.tracer_provider.sampler.parent_based` -* `.tracer_provider.*.parent_based` +}
+ ### PeriodicMetricReader | Property | Description | Type | Required? | @@ -3700,11 +3540,11 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `interval` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `timeout` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `exporter` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `producers` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `cardinality_limits` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `interval` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `timeout` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `exporter` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `producers` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `cardinality_limits` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -3744,12 +3584,9 @@ No properties. "required": [ "exporter" ] -}
-
-Path patterns - -* `.meter_provider.readers[].periodic` +}
+ ### Propagator | Property | Description | Type | Required? | @@ -3759,8 +3596,8 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `composite` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `composite_list` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `composite` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `composite_list` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -3862,21 +3699,18 @@ No properties. "additionalProperties": false } } -}
-
-Path patterns - -* `.propagator` +}
+ ### PullMetricExporter | Property | Description | Type | Required? | |---|---|---|---| -| `prometheus/development` | TODO | [`ExperimentalPrometheusMetricExporter`](#ExperimentalPrometheusMetricExporter) | `false` | +| `prometheus/development` | Configure exporter to be prometheus.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalPrometheusMetricExporter`](#ExperimentalPrometheusMetricExporter) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `prometheus/development` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `prometheus/development` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -3902,12 +3736,9 @@ No properties. ] } } -}
-
-Path patterns - -* `.meter_provider.readers[].pull.exporter` +}
+ ### PullMetricReader | Property | Description | Type | Required? | @@ -3918,9 +3749,9 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `exporter` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `producers` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `cardinality_limits` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `exporter` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `producers` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `cardinality_limits` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -3946,27 +3777,24 @@ No properties. "required": [ "exporter" ] -}
-
-Path patterns - -* `.meter_provider.readers[].pull` +}
+ ### PushMetricExporter | Property | Description | Type | Required? | |---|---|---|---| -| `otlp_http` | TODO | [`OtlpHttpMetricExporter`](#OtlpHttpMetricExporter) | `false` | -| `otlp_grpc` | TODO | [`OtlpGrpcMetricExporter`](#OtlpGrpcMetricExporter) | `false` | -| `otlp_file/development` | TODO | [`ExperimentalOtlpFileMetricExporter`](#ExperimentalOtlpFileMetricExporter) | `false` | -| `console` | TODO | [`ConsoleExporter`](#ConsoleExporter) | `false` | +| `otlp_http` | Configure exporter to be OTLP with HTTP transport.
| [`OtlpHttpMetricExporter`](#OtlpHttpMetricExporter) | `false` | +| `otlp_grpc` | Configure exporter to be OTLP with gRPC transport.
| [`OtlpGrpcMetricExporter`](#OtlpGrpcMetricExporter) | `false` | +| `otlp_file/development` | Configure exporter to be OTLP with file transport.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalOtlpFileMetricExporter`](#ExperimentalOtlpFileMetricExporter) | `false` | +| `console` | Configure exporter to be console.
| [`ConsoleExporter`](#ConsoleExporter) | `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `otlp_http` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `otlp_grpc` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `otlp_file/development` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `console` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `otlp_http` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `otlp_grpc` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `otlp_file/development` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `console` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -3999,27 +3827,24 @@ No properties. ] } } -}
-
-Path patterns - -* `.meter_provider.readers[].periodic.exporter` +}
+ ### Resource | Property | Description | Type | Required? | |---|---|---|---| -| `attributes` | Configure resource attributes. Entries have higher priority than entries from .resource.attributes_list.
Entries must contain .name and .value, and may optionally include .type. If an entry's .type omitted or null, string is used.
The .value's type must match the .type. Values for .type include: string, bool, int, double, string_array, bool_array, int_array, double_array.
| `array` of [`AttributeNameValue`](#AttributeNameValue) | `false` | +| `attributes` | Configure resource attributes. Entries have higher priority than entries from .resource.attributes_list.
| `array` of [`AttributeNameValue`](#AttributeNameValue) | `false` | | `detection/development` | Configure resource detection.
This type is in development and subject to breaking changes in minor versions.
If omitted or null, resource detection is disabled.
| [`ExperimentalResourceDetection`](#ExperimentalResourceDetection) | `false` | | `schema_url` | Configure resource schema URL.
If omitted or null, no schema URL is used.
| One of:
* `string`
* `null`
| `false` | | `attributes_list` | Configure resource attributes. Entries have lower priority than entries from .resource.attributes.
The value is a list of comma separated key-value pairs matching the format of OTEL_RESOURCE_ATTRIBUTES. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details.
If omitted or null, no resource attributes are added.
| One of:
* `string`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `attributes` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `detection/development` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `schema_url` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `attributes_list` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `attributes` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `detection/development` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `schema_url` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `attributes_list` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -4151,12 +3976,9 @@ No properties. } } } -}
-
-Path patterns - -* `.resource` +}
+ ### Sampler | Property | Description | Type | Required? | @@ -4169,11 +3991,11 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `always_off` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `always_on` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `jaeger_remote` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `parent_based` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `trace_id_ratio_based` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `always_off` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `always_on` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `jaeger_remote` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `parent_based` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `trace_id_ratio_based` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -4209,12 +4031,9 @@ No properties. ] } } -}
-
-Path patterns - -* `.tracer_provider.sampler` +}
+ ### SimpleLogRecordProcessor | Property | Description | Type | Required? | @@ -4223,7 +4042,7 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `exporter` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `exporter` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -4240,12 +4059,9 @@ No properties. "required": [ "exporter" ] -}
-
-Path patterns - -* `.logger_provider.processors[].simple` +}
+ ### SimpleSpanProcessor | Property | Description | Type | Required? | @@ -4254,7 +4070,7 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `exporter` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `exporter` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -4271,12 +4087,9 @@ No properties. "required": [ "exporter" ] -}
-
-Path patterns - -* `.tracer_provider.processors[].simple` +}
+ ### SpanExporter | Property | Description | Type | Required? | @@ -4289,11 +4102,11 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `otlp_http` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `otlp_grpc` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `otlp_file/development` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `console` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `zipkin` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `otlp_http` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `otlp_grpc` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `otlp_file/development` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `console` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `zipkin` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -4329,13 +4142,9 @@ No properties. ] } } -}
-
-Path patterns - -* `.tracer_provider.processors[].batch.exporter` -* `.tracer_provider.processors[].simple.exporter` +}
+ ### SpanLimits | Property | Description | Type | Required? | @@ -4349,12 +4158,12 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `attribute_value_length_limit` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `attribute_count_limit` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `event_count_limit` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `link_count_limit` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `event_attribute_count_limit` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `link_attribute_count_limit` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `attribute_value_length_limit` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `attribute_count_limit` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `event_count_limit` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `link_count_limit` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `event_attribute_count_limit` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `link_attribute_count_limit` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -4407,12 +4216,9 @@ No properties. "minimum": 0 } } -}
-
-Path patterns - -* `.tracer_provider.limits` +}
+ ### SpanProcessor | Property | Description | Type | Required? | @@ -4422,8 +4228,8 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `batch` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `simple` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `batch` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `simple` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -4450,12 +4256,9 @@ No properties. ] } } -}
-
-Path patterns - -* `.tracer_provider.processors[]` +}
+ ### SumAggregation No properties. @@ -4470,12 +4273,9 @@ No properties. "null" ], "additionalProperties": false -} -
-Path patterns - -* `.meter_provider.views[].stream.aggregation.sum` +}
+ ### TextMapPropagator | Property | Description | Type | Required? | @@ -4489,12 +4289,12 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `tracecontext` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `baggage` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `b3` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `b3multi` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `jaeger` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `ottrace` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `tracecontext` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `baggage` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `b3` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `b3multi` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `jaeger` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `ottrace` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -4533,12 +4333,9 @@ No properties. ] } } -}
-
-Path patterns - -* `.propagator.composite[]` +}
+ ### TraceContextPropagator No properties. @@ -4553,21 +4350,18 @@ No properties. "null" ], "additionalProperties": false -} -
-Path patterns - -* `.propagator.composite[].tracecontext` +}
+ ### TraceIdRatioBasedSampler | Property | Description | Type | Required? | |---|---|---|---| -| `ratio` | TODO | One of:
* `number`
* `null`
| `false` | +| `ratio` | Configure trace_id_ratio.
If omitted or null, 1.0 is used.
| One of:
* `number`
* `null`
| `false` | | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `ratio` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `ratio` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -4587,12 +4381,9 @@ No properties. ] } } -}
-
-Path patterns - -* `.tracer_provider.sampler.trace_id_ratio_based` +}
+ ### TracerProvider | Property | Description | Type | Required? | @@ -4604,10 +4395,10 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `processors` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `limits` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `sampler` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `tracer_configurator/development` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `processors` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `limits` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `sampler` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `tracer_configurator/development` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -4978,12 +4769,9 @@ No properties. ] } } -}
-
-Path patterns - -* `.tracer_provider` +}
+ ### View | Property | Description | Type | Required? | @@ -4993,8 +4781,8 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `selector` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `stream` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `selector` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `stream` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -5011,12 +4799,9 @@ No properties. "$ref": "#/$defs/ViewStream" } } -}
-
-Path patterns - -* `.meter_provider.views[]` +}
+ ### ViewSelector | Property | Description | Type | Required? | @@ -5030,12 +4815,12 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `instrument_name` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `instrument_type` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `unit` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `meter_name` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `meter_version` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `meter_schema_url` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `instrument_name` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `instrument_type` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `unit` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `meter_name` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `meter_version` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `meter_schema_url` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -5079,12 +4864,9 @@ No properties. ] } } -}
-
-Path patterns - -* `.meter_provider.views[].selector` +}
+ ### ViewStream | Property | Description | Type | Required? | @@ -5097,11 +4879,11 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `name` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `description` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `aggregation` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `aggregation_cardinality_limit` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `attribute_keys` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `name` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `description` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `aggregation` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `aggregation_cardinality_limit` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `attribute_keys` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -5137,12 +4919,9 @@ No properties. "$ref": "common.json#/$defs/IncludeExclude" } } -}
-
-Path patterns - -* `.meter_provider.views[].stream` +}
+ ### ZipkinSpanExporter | Property | Description | Type | Required? | @@ -5152,8 +4931,8 @@ No properties. | Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | |---|---|---|---|---|---|---|---|---|---|---|---| -| `endpoint` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | -| `timeout` |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown |unknown | +| `endpoint` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | +| `timeout` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown |
JSON Schema @@ -5180,10 +4959,6 @@ No properties. "minimum": 0 } } -}
-
-Path patterns - -* `.tracer_provider.processors[].batch.exporter.zipkin` -* `.tracer_provider.processors[].simple.exporter.zipkin` +}
+ diff --git a/scripts1/fix-meta-schema.js b/scripts/fix-meta-schema.js similarity index 100% rename from scripts1/fix-meta-schema.js rename to scripts/fix-meta-schema.js diff --git a/scripts/generate-descriptions.js b/scripts/generate-descriptions.js index 2564f9fc..0eb5dc66 100644 --- a/scripts/generate-descriptions.js +++ b/scripts/generate-descriptions.js @@ -1,5 +1,7 @@ -const fs = require('node:fs'); -const yaml = require('yaml'); +import fs from 'fs'; +import yaml from 'yaml'; +import {readAndFixMetaSchemaTypes} from "./meta-schema.js"; +import {readJsonSchemaTypes, resolveJsonSchemaPropertyType} from "./json-schema.js"; // Extract input file arg or throw const usageString = "Usage: \n npm run-script generate-comments -- /absolute/path/to/input/file.yaml /absolute/path/to/output/file.yaml"; @@ -27,39 +29,23 @@ for (let i = 3; i < process.argv.length; i++) { } } -// Read and validate description rules -const typeDescriptionsContent = fs.readFileSync(__dirname + "/../schema/type_descriptions.yaml", "utf-8"); -const typeDescriptionsYaml = yaml.parse(typeDescriptionsContent); -const rulesByType = {}; -typeDescriptionsYaml.forEach(rule => { - const type = rule.type; - if (!(typeof type === 'string') && !(type instanceof String)) { - throw new Error("rule must have type: " + JSON.stringify(rule)); - } - if (type in rulesByType) { - throw new Error("multiple rules with type: " + type); - } - rulesByType[type] = rule; - if (!('property_descriptions' in rule)) { - throw new Error("rule missing property_description:" + JSON.stringify(rule)); - } - if (!('path_patterns' in rule)) { - throw new Error("rule missing path_patterns:" + JSON.stringify(rule)); - } - debug("\nRule for type: " + type); - debug(" property_descriptions:") - Object.entries(rule.property_descriptions) - .forEach(([property, description]) => debug(" " + property + ": " + description)); - debug(" path_patterns: \n" + rule.path_patterns.map(entry => " - " + toRegex(entry)).join("\n")); -}) +// Read JSON schema and meta schema +const { messages, types } = readAndFixMetaSchemaTypes(); +const metaSchemaTypesByType = {}; +types.forEach(type => metaSchemaTypesByType[type.type] = type); +if (messages.length > 0) { + throw new Error("Meta schema has problems. Please run fix-meta-schema and try again."); +} +const jsonSchemaTypesByType = {}; +readJsonSchemaTypes().forEach(type => jsonSchemaTypesByType[type.type] = type); -// Read in the input file +// Read and process the input file +// Visit each key/value pair in the input file YAML, attempting to match against description rules +// and setting a comment with the description from the matching rule const fileContent = fs.readFileSync(inputFile, "utf-8"); const fileDoc = yaml.parseDocument(fileContent); let counter = 0; let lastNode = null; -// Visit each key/value pair in the input file YAML, attempting to match against description rules -// and setting a comment with the description from the matching rule yaml.visit(fileDoc, { Pair: (key, node, path) => { if (yaml.isSeq(node.value)) { @@ -68,39 +54,36 @@ yaml.visit(fileDoc, { let prevLastNode = lastNode; lastNode = node; counter++; - // Compute the parenPath, a string representation of the location of this key/value pair in the document - // For example, the following sample YAML is annotated with the parentPath at each node - // parent: # . - // child: value # .parent - // child_arr: # .parent - // - arr_key: value # .parent.child_arr[] - const parentPath = pathToString(path); const propertyKey = node.key.value; + const jsonPath = yamlPathToJsonPath(path, propertyKey); + + // Resolve jsonSchemaType, metaSchemaType, metaSchemaProperty, or return debug(""); - debug("parentPath: " + parentPath ); - debug("propertyKey: " + propertyKey); - debug("currentNodePath: " + parentPath + (parentPath === "." ? "" : ".") + propertyKey); - // Iterate through the rules and find the first with a matching entry in rule.path_patterns and with defined property key - const matchingRule = typeDescriptionsYaml.find((rule) => { - const matchingPathPattern = rule['path_patterns'].find((pathPattern) => { - const regex = new RegExp(toRegex(pathPattern)); - return regex.test(parentPath); - }); - if (matchingPathPattern === undefined) { - return false; - } - return rule['property_descriptions'][propertyKey] !== undefined; - }); - // Exit early if no matching rule - if (matchingRule === undefined) { - debug("no matching rule") + debug(`Resolving description for ${jsonPath}`); + let jsonSchemaType; + try { + jsonSchemaType =resolveJsonSchemaType(jsonSchemaTypesByType, path); + } catch (error) { + debug(`Unable to resolve JSON schema type: ${error.message}`); + return; + } + const metaSchemaType = metaSchemaTypesByType[jsonSchemaType.type]; + if (!metaSchemaType) { + throw new Error(`JSON schema type not found for meta schema type ${jsonSchemaType.type}.`); + } + const metaSchemaProperty = metaSchemaType.properties.find(item => item.property === propertyKey); + if (!metaSchemaProperty) { + debug(`No meta schema property ${propertyKey} for type ${metaSchemaType.type}.`); return; } - debug("matched rule: " + matchingRule.type); - // We already guarantee that the propertyKey is defined for the rule above - const description = matchingRule['property_descriptions'][propertyKey]; - // Format the description - let formattedDescription = description.replace(/\n$/, '').split('\n').map(line => ' ' + line).join('\n'); + debug(`Resolved type ${jsonSchemaType.type}, property ${metaSchemaProperty.property}, description:\n${metaSchemaProperty.description}`); + + // Set the description + let formattedDescription = metaSchemaProperty.description + .replace(/\n$/, '') + .split('\n') + .map(line => ' ' + line) + .join('\n'); // If we're on the first element, prefix the formatted description with the existing commentBefore to retain the comments at the top of the file if (counter === 1 && node.key.commentBefore) { const index = node.key.commentBefore.lastIndexOf(formattedDescription); @@ -108,9 +91,6 @@ yaml.visit(fileDoc, { ? node.key.commentBefore + formattedDescription : node.key.commentBefore.substring(0, index) + formattedDescription; } - debug("description previously set to:\n" + node.key.commentBefore); - debug("updating description to:\n" + formattedDescription) - // Set the description node.key.commentBefore = formattedDescription; node.value.commentBefore = null; // yaml parser sometimes misidentifies a pair's commentBefore as the previously processed pair.value.comment @@ -133,20 +113,6 @@ if (outputFile === null) { } // Helper functions - -// Converts an input pattern to a regular expression. -// Converts any "*" to a ".*". -// Escapes all other regex special characters. -// Prefixes with "^", and adds "$" suffix. -function toRegex(pattern) { - let parts = pattern.split("*"); - if (parts.length === 0) parts = [pattern]; - const escaped = parts - .map(chunk => chunk.replace(/[-[\]{}()*+?.,\\^$|]/g, "\\$&")) - .join("(.*)"); - return "^" + escaped + "$"; -} - // Log the message to the console if the script was run with `--debug` argument function debug(message) { if (options.debug) { @@ -154,10 +120,9 @@ function debug(message) { } } -// Convert an array of path elements JSON dot notation -function pathToString(path) { +function yamlPathToJsonPath(yamlPath, propertyKey) { const elements = [] - path.slice().forEach(entry => { + yamlPath.slice().forEach(entry => { if (yaml.isSeq(entry)) { elements.push("[]"); } @@ -166,5 +131,23 @@ function pathToString(path) { elements.push(entry.key.value); } }); - return elements.length === 0 ? "." : elements.join(""); + return (elements.length === 0 ? "." : elements.join("")) + propertyKey; +} + +function resolveJsonSchemaType(jsonSchemaTypesByType, yamlPath) { + let last = jsonSchemaTypesByType['OpentelemetryConfiguration']; // TODO: make constant + if (!last) { + throw new Error(`JSON schema missing root type 'OpenTelemetryConfiguration'`); + } + for (let i = 0; i < yamlPath.length; i++) { + const entry = yamlPath[i]; + if (yaml.isPair(entry)) { + const jsonSchemaPropertyType = resolveJsonSchemaPropertyType(last, entry.key.value, jsonSchemaTypesByType); + last = jsonSchemaTypesByType[jsonSchemaPropertyType.type]; + if (!last) { + throw new Error(`No JSON schema type for ${jsonSchemaPropertyType.type}`); + } + } + } + return last; } diff --git a/scripts/generate-markdown.js b/scripts/generate-markdown.js index 1970075a..4fe08bd8 100644 --- a/scripts/generate-markdown.js +++ b/scripts/generate-markdown.js @@ -1,43 +1,94 @@ -const fs = require("node:fs"); -const traverse = require("@json-schema-tools/traverse").default; -const yaml = require('yaml'); -const schema = require('./schema'); +import { + readJsonSchemaTypes, resolveJsonSchemaPropertyType, resolveRef +} from "./json-schema.js"; +import {readAndFixMetaSchemaTypes} from "./meta-schema.js"; +import fs from "node:fs"; +import {markdownDocPath} from "./util.js"; -const resolvePropertyType = schema.resolvePropertyType; +const { messages, types } = readAndFixMetaSchemaTypes(); -const metaSchema = yaml.parse(fs.readFileSync(__dirname + "/../meta_schema.yaml", "utf-8")); +if (messages.length > 0) { + throw new Error("Meta schema has problems. Please run fix-meta-schema and try again."); +} + +const jsonSchemaTypesByType = {}; +readJsonSchemaTypes().forEach(type => jsonSchemaTypesByType[type.type] = type); const output = []; const languages = ['c++', 'c#', 'erlang', 'go', 'java', 'js', 'php', 'python', 'ruby', 'rust', 'swift'] -Object.entries(metaSchema).forEach(([typeName, typeMeta]) => { - output.push("### " + typeName + " \n\n"); +function formatJsonSchemaPropertyType(type, prefix, suffix) { + const output = []; + output.push(prefix); + if (type.isOneOf) { + output.push('One of:
'); + type.oneOfTypes.forEach(item => { + output.push(formatJsonSchemaPropertyType(item, '* ', '
')); + }); + return output.join(''); + } + if (type.isSeq) { + output.push('`array` of '); + } + if (type.isScalar) { + output.push(`\`${type.type}\``); + } else { + output.push(`[\`${type.type}\`](#${type.type})`); + } + output.push(suffix); + return output.join(''); +} + +types.sort((a, b) => a.type.localeCompare(b.type)); +types.forEach(metaSchemaType => { + const type = metaSchemaType.type; + const jsonSchemaType = jsonSchemaTypesByType[type]; + if (!jsonSchemaType) { + throw new Error(`JSON schema type not found for meta schema type ${type}.`); + } + const required = jsonSchemaType.schema['required']; + + // Heading + output.push(`### ${type} \n\n`); + + // Properties + if (metaSchemaType.properties.length === 0) { + output.push("No properties.\n\n"); + } else { + // Property type and description table + output.push(`| Property | Description | Type | Required? |\n`); + output.push("|---|---|---|---|\n"); + metaSchemaType.properties.forEach(property => { + const propertyType = resolveJsonSchemaPropertyType(jsonSchemaType, property.property, jsonSchemaTypesByType); + const formattedPropertyType = formatJsonSchemaPropertyType(propertyType, '', ''); + const isRequired = required !== undefined && required.includes(property.property); - // TODO: print raw JSON schema - // TODO: link to definition in source code + output.push(`| \`${property.property}\` | ${property.description.split("\n").join("
")} | ${formattedPropertyType} | \`${isRequired}\` |\n`); + }); + output.push('\n'); - if (Object.keys(typeMeta.properties).length === 0) { - output.push("No properties\n\n"); - return; + // Property language support table + output.push('| Property |') + languages.forEach(language => output.push(`${language} |`)); + output.push('\n'); + output.push('|---|'); + languages.forEach(language => output.push(`---|`)); + output.push('\n'); + metaSchemaType.properties.forEach(property => { + output.push(`| \`${property.property}\` |`); + languages.forEach(language => output.push(` unknown |`)); + output.push('\n'); + }); + output.push('\n'); } - output.push("| Property | Type | Description |"); - languages.forEach(language => output.push(language + " |")); - output.push("\n"); - - output.push("|---|---|---|"); - languages.forEach(language => output.push("---|")); - output.push("\n"); - - Object.entries(typeMeta.properties).forEach(([propertyName, property]) => { - const propertyType = resolvePropertyType(typeName, propertyName, type => `${type}`); - output.push("| " + propertyName + " | "); - output.push(propertyType + " | "); - output.push(property.description.split("\n").join("
") + " | "); - languages.forEach(language => output.push(" |")); - output.push("\n"); - }); - output.push("\n"); + // JSON schema collapsible section + output.push(`
\n`); + output.push(`JSON Schema\n\n`); + output.push(`[JSON Schema Source File](./schema/${jsonSchemaType.file})\n`) + output.push(`
${JSON.stringify(jsonSchemaType.schema, null, 2)}
\n`); + output.push(`
\n`); + output.push('\n'); }); -fs.writeFileSync(__dirname + "/../schema.md", output.join("")); \ No newline at end of file +fs.writeFileSync(markdownDocPath, output.join("")); diff --git a/scripts/generate-meta-schema.js b/scripts/generate-meta-schema.js deleted file mode 100644 index 46ca3bbb..00000000 --- a/scripts/generate-meta-schema.js +++ /dev/null @@ -1,45 +0,0 @@ -const fs = require("node:fs"); -const traverse = require("@json-schema-tools/traverse").default; -const yaml = require('yaml'); -const schemasByName = require('./schema').schemasByName; - -const typeDescriptions = yaml.parse(fs.readFileSync(__dirname + "/../schema/type_descriptions.yaml", "utf-8")); - -function findTypeDescription(type) { - return typeDescriptions.find(typeDescription => { - return typeDescription.type === type; - }); -} - -const metaSchema = {}; - -Object.entries(schemasByName).forEach(([type, value]) => { - let typeDescription = findTypeDescription(type); - if (typeDescription === undefined) { - typeDescription = { path_patterns: [], property_descriptions: {}}; - } - - const typeProperties = {}; - const typeDef = { properties: typeProperties, paths: typeDescription.path_patterns, definitionSource: `${value.file}${value.path}` }; - metaSchema[type] = typeDef; - - const properties = value.schema.properties; - if (!properties) { - return; - } - - Object.entries(properties).forEach(([propertyKey, propertyValue]) => { - let description = typeDescription.property_descriptions[propertyKey]; - if (description === undefined) { - description = "unknown"; - } - - const propertyDef = { - description, - implementationStatus: {} - }; - typeProperties[propertyKey] = propertyDef; - }); -}) - -fs.writeFileSync(__dirname + "/../meta_schema.yaml", yaml.stringify(metaSchema, { sortMapEntries: true, lineWidth: 0 })); diff --git a/scripts1/json-schema.js b/scripts/json-schema.js similarity index 100% rename from scripts1/json-schema.js rename to scripts/json-schema.js diff --git a/scripts1/meta-schema.js b/scripts/meta-schema.js similarity index 100% rename from scripts1/meta-schema.js rename to scripts/meta-schema.js diff --git a/scripts/schema.js b/scripts/schema.js deleted file mode 100644 index 2688e9f1..00000000 --- a/scripts/schema.js +++ /dev/null @@ -1,96 +0,0 @@ -const fs = require("node:fs"); -const traverse = require("@json-schema-tools/traverse").default; -const yaml = require('yaml'); - -/* - * Build up a catalog of schema types - */ -const schemasByName = {}; -const topLevelSchemas = {}; - -// Iterate through schema files, adding top-level types and $defs -const schemaDirPath = __dirname + "/../schema/"; -fs.readdirSync(schemaDirPath) - .filter(file => file.endsWith(".json")) - .forEach(file => { - const schema = require(`${schemaDirPath}${file}`); - topLevelSchemas[file] = schema; - - if (file === 'opentelemetry_configuration.json') { - schemasByName['OpenTelemetryConfiguration'] = { name: 'OpentelemetryConfiguration', file, path: '.', schema }; - } - - traverse(schema, (schema) => { - const defs = schema['$defs']; - if (defs) { - Object.entries(defs).forEach(([name, schema]) => { - const path = `#/$defs/${name}`; - if (name in schemasByName) { - throw new Error(`${name} already exists in schemasByName with definition: ` + schemasByName[name]); - } - schemasByName[name] = { name, file, path, schema }; - }); - } - }); - }); - -// Resolve refs to top-level types -Object.entries(schemasByName).forEach(([key, value]) => { - const ref = value.schema['$ref']; - if (ref) { - const topLevelSchema = topLevelSchemas[ref]; - if (!topLevelSchema) { - throw new Error("Could not resolve $ref:" + ref); - } - schemasByName[key] = { ...value, schema: topLevelSchema }; - } -}); - -function findMatch(ref) { - return Object.values(schemasByName) - .find(value => { - if (value.path === ref) { - return true; - } - return `${value.file}${value.path}` === ref; - }); -} - -function resolveType(schema, formatter) { - const ref = schema['$ref']; - if (ref) { - const match = findMatch(ref); - if (!match) { - throw new Error("Could not resolve $ref: " + ref); - } - return formatter(match.type); - } - const type = schema.type; - if (type === 'array') { - const items = schema.items; - const itemsType = resolveType(items, formatter); - return itemsType + "[]"; - } - if (typeof type == 'string') { - return type; - } - if (type === undefined) { - return "unknown"; - } - // primitive - const filtered = type.filter(val => val !== 'null'); - if (filtered.length !== 1) { - throw new Error("expected type to have size 1 but was: " + type); - } - return filtered[0]; -} - -function resolvePropertyType(typeName, propertyName, formatter) { - const schemaForType = schemasByName[typeName]; - const property = schemaForType.schema.properties[propertyName]; - - return resolveType(property, formatter); -} - -exports.schemasByName = schemasByName; -exports.resolvePropertyType = resolvePropertyType; diff --git a/scripts1/util.js b/scripts/util.js similarity index 100% rename from scripts1/util.js rename to scripts/util.js diff --git a/scripts/validate-meta-schema.js b/scripts/validate-meta-schema.js deleted file mode 100644 index beae8e62..00000000 --- a/scripts/validate-meta-schema.js +++ /dev/null @@ -1,104 +0,0 @@ -const fs = require("node:fs"); -const traverse = require("@json-schema-tools/traverse").default; -const yaml = require('yaml'); - -const metaSchemaPath = __dirname + "/../meta_schema.yaml"; -const metaSchemaContent = fs.readFileSync(metaSchemaPath, "utf-8"); -const metaSchemaDoc = yaml.parse(metaSchemaContent); - -// console.log(metaSchemaDoc); - -const schemasByName = {}; -const topLevelSchemas = {}; - -// Iterate through schema files, adding top-level types and $defs -const schemaDirPath = __dirname + "/../schema/"; -fs.readdirSync(schemaDirPath) - .filter(file => file.endsWith(".json")) - .forEach(file => { - const schema = require(`${schemaDirPath}${file}`); - topLevelSchemas[file] = schema; - - if (file === 'opentelemetry_configuration.json') { - schemasByName['OpenTelemetryConfiguration'] = { name: 'OpentelemetryConfiguration', file, path: '.', schema }; - } - - traverse(schema, (schema) => { - const defs = schema['$defs']; - if (!defs) return; - Object.entries(defs).forEach(([name, schema]) => { - const path = `#/$defs/${name}`; - if (name in schemasByName) { - throw new Error(`${name} already exists in schemasByName with definition: ` + schemasByName[name]); - } - schemasByName[name] = { name, file, path, schema }; - }); - }); - }); - -// Resolve refs to top-level types -Object.entries(schemasByName).forEach(([key, value]) => { - const ref = value.schema['$ref']; - if (!ref) return; - const topLevelSchema = topLevelSchemas[ref]; - if (!topLevelSchema) { - throw new Error("Could not resolve $ref:" + ref); - } - schemasByName[key] = { ...value, schema: topLevelSchema }; -}); - -// Validate no extra types in meta schema which are not in schema -const schemaTypes = Object.keys(schemasByName); -const metaSchemaTypes = Object.keys(metaSchemaDoc); - -metaSchemaTypes.forEach(typeName => { - if (!(typeName in schemasByName)) { - throw new Error(`${metaSchemaPath} has extra definition for type ${typeName} which is not part of schema`); - } -}); - -// Validate no extra types in schema which are not in meta schema -schemaTypes.forEach(typeName => { - if (!(typeName in metaSchemaDoc)) { - throw new Error(`${metaSchemaPath} missing definition for type ${typeName}`); - } -}); - -// Validate meta schema types are in lexicographical order -schemaTypes.sort(); -for (let i = 0; i < schemaTypes.length; i++) { - console.log(schemaTypes[i] + " " + metaSchemaTypes[i]); - if (schemaTypes[i] !== metaSchemaTypes[i]) { - throw new Error(`${metaSchemaPath} types are not in lexicographical order\n`); - } -} - -// Iterate through schema and validate all are correctly reflected in the meta schema -schemaTypes.forEach(typeName => { - const type = schemasByName[typeName]; -// console.log(typeName); -// console.log(type); -// console.log(); - - // We've previously asserted that metaSchemaDoc and schemasByname contains the same keys - const metaSchemaDef = metaSchemaDoc[typeName]; - - // TODO: validate metaSchemaDef has definitionSource, paths, properties - - const metasSchemaProperties = metaSchemaDef['properties']; - // TODO: check that properties is an object - if (!metasSchemaProperties) { - throw new Error(`${metaSchemaPath} has invalid definition for type ${typeName}: missing properties`); - } - - const properties = type.schema['properties']; - if (!properties) { - return; - } - Object.entries(properties).forEach(([propertyName, property]) => { - const metaSchemaProperty = metasSchemaProperties[propertyName]; - if (!metaSchemaProperty) { - throw new Error(`${metaSchemaPath} has invalid definition for type ${typeName}: missing property ${propertyName}`); - } - }); -}); diff --git a/scripts1/generate-descriptions.js b/scripts1/generate-descriptions.js deleted file mode 100644 index ad36f070..00000000 --- a/scripts1/generate-descriptions.js +++ /dev/null @@ -1,142 +0,0 @@ -import fs from 'fs'; -import yaml from 'yaml'; -import {schemaDirPath} from "./util.js"; -import {readAndFixMetaSchemaTypes} from "./meta-schema.js"; -import {readJsonSchemaTypes, resolveJsonSchemaPropertyType, resolveRef} from "./json-schema.js"; - -let inputFile = '/Users/bergfamily/code/opentelemetry-configuration/examples/kitchen-sink.yaml'; -let outputFile = '/Users/bergfamily/code/opentelemetry-configuration/examples/kitchen-sink.yaml'; -// Extract options -const options = { - debug: true // TODO -} -for (let i = 3; i < process.argv.length; i++) { - if (process.argv[i] === '--debug') { - options['debug'] = true; - } -} - -const { messages, types } = readAndFixMetaSchemaTypes(); -const metaSchemaTypesByType = {}; -types.forEach(type => metaSchemaTypesByType[type.type] = type); - -if (messages.length > 0) { - throw new Error("Meta schema has problems. Please run fix-meta-schema and try again."); -} - -const jsonSchemaTypesByType = {}; -readJsonSchemaTypes().forEach(type => jsonSchemaTypesByType[type.type] = type); - - -// Read in the input file -const fileContent = fs.readFileSync(inputFile, "utf-8"); -const fileDoc = yaml.parseDocument(fileContent); -let counter = 0; -let lastNode = null; -// Visit each key/value pair in the input file YAML, attempting to match against description rules -// and setting a comment with the description from the matching rule -yaml.visit(fileDoc, { - Pair: (key, node, path) => { - if (yaml.isSeq(node.value)) { - node.value.items.forEach(item => item.commentBefore = null); - } - let prevLastNode = lastNode; - lastNode = node; - counter++; - const propertyKey = node.key.value; - const jsonPath = yamlPathToJsonPath(path, propertyKey); - - // Resolve jsonSchemaType, metaSchemaType, metaSchemaProperty, or return - debug(""); - debug(`Resolving description for ${jsonPath}`); - let jsonSchemaType; - try { - jsonSchemaType =resolveJsonSchemaType(jsonSchemaTypesByType, path); - } catch (error) { - debug(`Unable to resolve JSON schema type: ${error.message}`); - return; - } - const metaSchemaType = metaSchemaTypesByType[jsonSchemaType.type]; - if (!metaSchemaType) { - throw new Error(`JSON schema type not found for meta schema type ${jsonSchemaType.type}.`); - } - const metaSchemaProperty = metaSchemaType.properties.find(item => item.property === propertyKey); - if (!metaSchemaProperty) { - debug(`No meta schema property ${propertyKey} for type ${metaSchemaType.type}.`); - return; - } - debug(`Resolved type ${jsonSchemaType.type}, property ${metaSchemaProperty.property}, description:\n${metaSchemaProperty.description}`); - - // Set the description - let formattedDescription = metaSchemaProperty.description - .replace(/\n$/, '') - .split('\n') - .map(line => ' ' + line) - .join('\n'); - // If we're on the first element, prefix the formatted description with the existing commentBefore to retain the comments at the top of the file - if (counter === 1 && node.key.commentBefore) { - const index = node.key.commentBefore.lastIndexOf(formattedDescription); - formattedDescription = (index === -1) - ? node.key.commentBefore + formattedDescription - : node.key.commentBefore.substring(0, index) + formattedDescription; - } - node.key.commentBefore = formattedDescription; - node.value.commentBefore = null; - // yaml parser sometimes misidentifies a pair's commentBefore as the previously processed pair.value.comment - // we detect and fix that by keeping a reference to the previous node and setting the comment to null - // this works because we only use commentBefore in this project - if (prevLastNode !== null) { - node.key.spaceBefore = null; - prevLastNode.value.comment = null; - } - } -}); - -// Print the output, or write it to a file -if (outputFile === null) { - console.log("No output file arg set, logging to console."); - // console.log(String(fileDoc)) -} else { - // console.log("Writing output to \"" + outputFile + "\""); - fs.writeFileSync(outputFile, String(fileDoc)) -} - -// Helper functions -// Log the message to the console if the script was run with `--debug` argument -function debug(message) { - if (options.debug) { - console.debug(message); - } -} - -function yamlPathToJsonPath(yamlPath, propertyKey) { - const elements = [] - yamlPath.slice().forEach(entry => { - if (yaml.isSeq(entry)) { - elements.push("[]"); - } - if (yaml.isPair(entry)) { - elements.push("."); - elements.push(entry.key.value); - } - }); - return (elements.length === 0 ? "." : elements.join("")) + propertyKey; -} - -function resolveJsonSchemaType(jsonSchemaTypesByType, yamlPath) { - let last = jsonSchemaTypesByType['OpentelemetryConfiguration']; // TODO: make constant - if (!last) { - throw new Error(`JSON schema missing root type 'OpenTelemetryConfiguration'`); - } - for (let i = 0; i < yamlPath.length; i++) { - const entry = yamlPath[i]; - if (yaml.isPair(entry)) { - const jsonSchemaPropertyType = resolveJsonSchemaPropertyType(last, entry.key.value, jsonSchemaTypesByType); - last = jsonSchemaTypesByType[jsonSchemaPropertyType.type]; - if (!last) { - throw new Error(`No JSON schema type for ${jsonSchemaPropertyType.type}`); - } - } - } - return last; -} diff --git a/scripts1/generate-markdown.js b/scripts1/generate-markdown.js deleted file mode 100644 index 9481066c..00000000 --- a/scripts1/generate-markdown.js +++ /dev/null @@ -1,101 +0,0 @@ -import { - readJsonSchemaTypes, resolveJsonSchemaPropertyType, resolveRef -} from "./json-schema.js"; -import {readAndFixMetaSchemaTypes} from "./meta-schema.js"; -import fs from "node:fs"; -import {markdownDocPath} from "./util.js"; - -const { messages, types } = readAndFixMetaSchemaTypes(); - -if (messages.length > 0) { - throw new Error("Meta schema has problems. Please run fix-meta-schema and try again."); -} - -const jsonSchemaTypesByType = {}; -readJsonSchemaTypes().forEach(type => jsonSchemaTypesByType[type.type] = type); - -const output = []; -const languages = ['c++', 'c#', 'erlang', 'go', 'java', 'js', 'php', 'python', 'ruby', 'rust', 'swift'] - -function formatJsonSchemaPropertyType(type, prefix, suffix) { - const output = []; - output.push(prefix); - if (type.isOneOf) { - output.push('One of:
'); - type.oneOfTypes.forEach(item => { - output.push(formatJsonSchemaPropertyType(item, '* ', '
')); - }); - return output.join(''); - } - if (type.isSeq) { - output.push('`array` of '); - } - if (type.isScalar) { - output.push(`\`${type.type}\``); - } else { - output.push(`[\`${type.type}\`](#${type.type})`); - } - output.push(suffix); - return output.join(''); -} - -types.sort((a, b) => a.type.localeCompare(b.type)); -types.forEach(metaSchemaType => { - const type = metaSchemaType.type; - const jsonSchemaType = jsonSchemaTypesByType[type]; - if (!jsonSchemaType) { - throw new Error(`JSON schema type not found for meta schema type ${type}.`); - } - const required = jsonSchemaType.schema['required']; - - // Heading - output.push(`### ${type} \n\n`); - - // Properties - if (metaSchemaType.properties.length === 0) { - output.push("No properties.\n\n"); - } else { - // Property type and description table - output.push(`| Property | Description | Type | Required? |\n`); - output.push("|---|---|---|---|\n"); - metaSchemaType.properties.forEach(property => { - const propertyType = resolveJsonSchemaPropertyType(jsonSchemaType, property.property, jsonSchemaTypesByType); - const formattedPropertyType = formatJsonSchemaPropertyType(propertyType, '', ''); - const isRequired = required !== undefined && required.includes(property.property); - - output.push(`| \`${property.property}\` | ${property.description.split("\n").join("
")} | ${formattedPropertyType} | \`${isRequired}\` |\n`); - }); - output.push('\n'); - - // Property language support table - output.push('| Property |') - languages.forEach(language => output.push(`${language} |`)); - output.push('\n'); - output.push('|---|'); - languages.forEach(language => output.push(`---|`)); - output.push('\n'); - metaSchemaType.properties.forEach(property => { - output.push(`| \`${property.property}\` |`); - languages.forEach(language => output.push(`unknown |`)); - output.push('\n'); - }); - output.push('\n'); - } - - // JSON schema collapsible section - output.push(`
\n`); - output.push(`JSON Schema\n\n`); - output.push(`[JSON Schema Source File](./schema/${jsonSchemaType.file})\n`) - output.push(`
${JSON.stringify(jsonSchemaType.schema, null, 2)}
`); - output.push(`
\n`); - - // Path patterns collapsible section - output.push(`
\n`); - output.push(`Path patterns\n\n`); - jsonSchemaType.pathPatterns.forEach(pathPattern => { - output.push(`* \`${pathPattern}\`\n`); - }); - output.push(`
\n`); -}); - -fs.writeFileSync(markdownDocPath, output.join("")); From 52d219c0393c9c7c8bbc02abd523214b085b1d79 Mon Sep 17 00:00:00 2001 From: Jack Berg <34418638+jack-berg@users.noreply.github.com> Date: Thu, 2 Oct 2025 14:44:58 -0500 Subject: [PATCH 13/23] Delete type_descriptions.yaml and update CONTRIBUTING.md --- CONTRIBUTING.md | 69 +-- schema/type_descriptions.yaml | 962 ---------------------------------- 2 files changed, 37 insertions(+), 994 deletions(-) delete mode 100644 schema/type_descriptions.yaml diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8a6a73f6..c3cebc31 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -247,37 +247,42 @@ You can perform all checks locally using this command: make all ``` -## Description generation - -The [./examples](./examples) directory contains a variety of examples, which -include important comments describing the semantics of the configuration -properties. In order to keep these comments consistent across examples, we have -tooling which automatically generates comments for each property. - -How it works: - -* The [./schema/type_descriptions.yaml](./schema/type_descriptions.yaml) file - defines descriptions for each of the properties of each type defines in - the [JSON schema](./schema) data model. -* The [./scripts/generate-descriptions.js](./scripts/generate-descriptions.js) is a - script which for a given input configuration file will: - * Parse the YAML. - * Walk through each key / value pair, and for each: - * Compute the JSON dot notation location of the current key / value pair. - * Find the first matching rule - in [type_description.yaml](./schema/type_descriptions.yaml). Iterate - through the rules and evaluate the key / value pair dot notation location - against each of the rule's `path_patterns`. - * Inject / overwrite comments for its properties according - to `type_descriptions.yaml`. - * Write the resulting content to specified output file or to the console. - -The `make generate-descriptions` command runs this process against each file -in `./examples` and overwrites each file in the process. - -**NOTE:** The [build](./.github/workflows/build-check.yaml) will fail -if `make generate-descriptions` produces any changes which are not checked into -version control. +## Meta schema + +[meta_schema.yaml](./schema/meta_schema.yaml) tracks schema details that don't fit neatly into the JSON schema including: + +* Property descriptions and semantics +* Implementation support status (TODO) + +There are variety of tasks which intersect with the meta schema: + +### `make fix-meta-schema` + +Ensures that the JSON schema and the meta schema are kept in sync: + +* If a type exists in the JSON schema and not the meta schema, add it. +* If a type exists in the meta schema and not the JSON schema, delete it. +* For each meta schema type: + * If a property exists in the JSON schema and not the meta schema, add it. + * If a property exists in the meta schema and not the JSON schema, delete it. + +When this task adds new entries to the meta schema, they are stubbed out with `TODO` placeholders. Contributors should update these with sensible values. + +**NOTE:** This task is run as part of build automation. If it produces changes which are not checked into version control, the build will fail. + +### `make generate-markdown` + +Generates markdown at [schema-docs.md](./schema-docs.md) which summarizes a variety of useful information about JSON schema and meta schema in an easy to consume format. + +**NOTE:** This task is run as part of build automation. If it produces changes which are not checked into version control, the build will fail. + +### `make generate-descriptions` + +Annotates files in [./examples](./examples) with comments derived from the JSON schema and meta schema. + +The `/examples` directory contains a variety of examples which are expected to be used as starter templates and as references. The JSON schema is insufficient in describing the expected behavior of a given config file. It's missing key details describing behavior semantics (such as defaults) which are essential for both users and implementers. This task ensures that all examples are correctly and consistently commented. + +**NOTE:** This task is run as part of build automation. If it produces changes which are not checked into version control, the build will fail. To run against a single file: @@ -293,7 +298,7 @@ To run against a single file: ```bash npm install ``` - + - Run the script: ```shell diff --git a/schema/type_descriptions.yaml b/schema/type_descriptions.yaml deleted file mode 100644 index 5f103a4f..00000000 --- a/schema/type_descriptions.yaml +++ /dev/null @@ -1,962 +0,0 @@ -# This file contains an array of objects defining the descriptions of properties for types defined in the schema. -# See "description generation" in CONTRIBUTING.md for more details. -# -# Example rule: -# - type: MyType # The type name corresponding to the JSON Schema Title. -# property_descriptions: # Mapping of the type's properties and their descriptions. -# propertyA: The propertyA description. # The description for MyType.propertyA. -# propertyB: The propertyB description. # The description for MyType.propertyB -# path_patterns: # Array of patterns where this type occurs in the schema. Each key-value in an example configuration file is transformed -# - .foo # into its JSON dot-notation location in the file, which is matched against these patterns. Each pattern is turned in a regex, - # after escaping special characters and replacing "*" with ".*". - -# START OpenTelemetryConfiguration -- type: OpenTelemetryConfiguration - property_descriptions: - file_format: > - The file format version. - - The yaml format is documented at - - https://github.com/open-telemetry/opentelemetry-configuration/tree/main/schema - disabled: > - Configure if the SDK is disabled or not. - - If omitted or null, false is used. - log_level: > - Configure the log level of the internal logger used by the SDK. - - If omitted, info is used. - resource: > - Configure resource for all signals. - - If omitted, the default resource is used. - propagator: > - Configure text map context propagators. - - If omitted, a noop propagator is used. - attribute_limits: Configure general attribute limits. See also tracer_provider.limits, logger_provider.limits. - logger_provider: > - Configure logger provider. - - If omitted, a noop logger provider is used. - tracer_provider: > - Configure tracer provider. - - If omitted, a noop tracer provider is used. - meter_provider: > - Configure meter provider. - - If omitted, a noop meter provider is used. - instrumentation/development: > - Configure instrumentation. - - This type is in development and subject to breaking changes in minor versions. - path_patterns: - - . - -- type: Resource - property_descriptions: - attributes: > - Configure resource attributes. Entries have higher priority than entries from .resource.attributes_list. - - Entries must contain .name and .value, and may optionally include .type. If an entry's .type omitted or null, string is used. - - The .value's type must match the .type. Values for .type include: string, bool, int, double, string_array, bool_array, int_array, double_array. - attributes_list: > - Configure resource attributes. Entries have lower priority than entries from .resource.attributes. - - The value is a list of comma separated key-value pairs matching the format of OTEL_RESOURCE_ATTRIBUTES. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details. - - If omitted or null, no resource attributes are added. - detection/development: > - Configure resource detection. - - This type is in development and subject to breaking changes in minor versions. - - If omitted or null, resource detection is disabled. - schema_url: > - Configure resource schema URL. - - If omitted or null, no schema URL is used. - path_patterns: - - .resource - -- type: ExperimentalResourceDetection - property_descriptions: - attributes: Configure attributes provided by resource detectors. - detectors: > - Configure resource detectors. - - Resource detector names are dependent on the SDK language ecosystem. Please consult documentation for each respective language. - - If omitted or null, no resource detectors are enabled. - path_patterns: - - .resource.detection/development - -- type: ExperimentalResourceDetector - property_descriptions: - container: > - Enable the container resource detector. - - Note, the key "container" is an example and detector names may vary by SDK language ecosystem. - host: > - Enable the host resource detector. - - Note, the key "host" is an example and detector names may vary by SDK language ecosystem. - os: > - Enable the os resource detector. - - Note, the key "os" is an example and detector names may vary by SDK language ecosystem. - process: > - Enable the process resource detector. - - Note, the key "process" is an example and detector names may vary by SDK language ecosystem. - path_patterns: - - .resource.detection/development.detectors[] - -- type: IncludeExclude - property_descriptions: - included: > - Configure list of attribute key patterns to include from resource detectors. - - Attribute keys from resource detectors are evaluated to match as follows: - * If the value of the attribute key exactly matches. - * If the value of the attribute key matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. - If omitted, all attributes are included. - excluded: > - Configure list of attribute key patterns to exclude from resource detectors. Applies after .resource.detectors.attributes.included (i.e. excluded has higher priority than included). - - Attribute keys from resource detectors are evaluated to match as follows: - * If the value of the attribute key exactly matches. - * If the value of the attribute key matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. - If omitted, .included attributes are included. - path_patterns: - - .resource.detection/development.attributes - -- type: AttributeLimits - property_descriptions: - attribute_value_length_limit: > - Configure max attribute value size. - - Value must be non-negative. - - If omitted or null, there is no limit. - attribute_count_limit: > - Configure max attribute count. - - Value must be non-negative. - - If omitted or null, 128 is used. - path_patterns: - - .attribute_limits - -- type: Propagator - property_descriptions: - composite: > - Configure the propagators in the composite text map propagator. Entries from .composite_list are appended to the list here with duplicates filtered out. - - Built-in propagator keys include: tracecontext, baggage, b3, b3multi, jaeger, ottrace. Known third party keys include: xray. - - If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used. - composite_list: > - Configure the propagators in the composite text map propagator. Entries are appended to .composite with duplicates filtered out. - - The value is a comma separated list of propagator identifiers matching the format of OTEL_PROPAGATORS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details. - - Built-in propagator identifiers include: tracecontext, baggage, b3, b3multi, jaeger, ottrace. Known third party identifiers include: xray. - - If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used. - path_patterns: - - .propagator -- type: TextMapPropagator - property_descriptions: - tracecontext: Include the w3c trace context propagator. - baggage: Include the w3c baggage propagator. - b3: Include the zipkin b3 propagator. - b3multi: Include the zipkin b3 multi propagator. - jaeger: Include the jaeger propagator. - ottrace: Include the opentracing propagator. - path_patterns: - - .propagator.composite[] -# END OpenTelemetryConfiguration - -# START LoggerProvider -- type: LoggerProvider - property_descriptions: - processors: Configure log record processors. - limits: Configure log record limits. See also attribute_limits. - logger_configurator/development: > - Configure loggers. - - This type is in development and subject to breaking changes in minor versions. - path_patterns: - - .logger_provider - -- type: LogRecordProcessor - property_descriptions: - batch: Configure a batch log record processor. - simple: Configure a simple log record processor. - path_patterns: - - .logger_provider.processors[] - -- type: BatchLogRecordProcessor - property_descriptions: - schedule_delay: > - Configure delay interval (in milliseconds) between two consecutive exports. - - Value must be non-negative. - - If omitted or null, 1000 is used. - export_timeout: > - Configure maximum allowed time (in milliseconds) to export data. - - Value must be non-negative. A value of 0 indicates no limit (infinity). - - If omitted or null, 30000 is used. - max_queue_size: > - Configure maximum queue size. Value must be positive. - - If omitted or null, 2048 is used. - max_export_batch_size: > - Configure maximum batch size. Value must be positive. - - If omitted or null, 512 is used. - exporter: Configure exporter. - path_patterns: - - .logger_provider.processors[].batch - -- type: SimpleLogRecordProcessor - property_descriptions: - exporter: Configure exporter. - path_patterns: - - .logger_provider.processors[].simple - -- type: LogRecordExporter - property_descriptions: - otlp_http: Configure exporter to be OTLP with HTTP transport. - otlp_grpc: Configure exporter to be OTLP with gRPC transport. - otlp_file/development: > - Configure exporter to be OTLP with file transport. - - This type is in development and subject to breaking changes in minor versions. - console: Configure exporter to be console. - path_patterns: - - .logger_provider.processors[].*.exporter - -- type: LogRecordLimits - property_descriptions: - attribute_value_length_limit: > - Configure max attribute value size. Overrides .attribute_limits.attribute_value_length_limit. - - Value must be non-negative. - - If omitted or null, there is no limit. - attribute_count_limit: > - Configure max attribute count. Overrides .attribute_limits.attribute_count_limit. - - Value must be non-negative. - - If omitted or null, 128 is used. - path_patterns: - - .logger_provider.limits - -- type: ExperimentalLoggerConfigurator - property_descriptions: - default_config: Configure the default logger config used there is no matching entry in .logger_configurator/development.loggers. - loggers: Configure loggers. - path_patterns: - - .logger_provider.logger_configurator/development - -- type: ExperimentalLoggerMatcherAndConfig - property_descriptions: - name: > - Configure logger names to match, evaluated as follows: - - * If the logger name exactly matches. - * If the logger name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. - config: The logger config. - path_patterns: - - .logger_provider.logger_configurator/development.loggers[] - -- type: ExperimentalLoggerConfig - property_descriptions: - disabled: Configure if the logger is enabled or not. - path_patterns: - - .logger_provider.logger_configurator/development.default_config - - .logger_provider.logger_configurator/development.loggers[].config -# END LoggerProvider - -# START TracerProvider -- type: TracerProvider - property_descriptions: - processors: Configure span processors. - limits: Configure span limits. See also attribute_limits. - sampler: > - Configure the sampler. - - If omitted, parent based sampler with a root of always_on is used. - tracer_configurator/development: > - Configure tracers. - - This type is in development and subject to breaking changes in minor versions. - path_patterns: - - .tracer_provider - -- type: SpanProcessor - property_descriptions: - batch: Configure a batch span processor. - simple: Configure a simple span processor. - path_patterns: - - .tracer_provider.processors[] - -- type: BatchSpanProcessor - property_descriptions: - schedule_delay: > - Configure delay interval (in milliseconds) between two consecutive exports. - - Value must be non-negative. - - If omitted or null, 5000 is used. - export_timeout: > - Configure maximum allowed time (in milliseconds) to export data. - - Value must be non-negative. A value of 0 indicates no limit (infinity). - - If omitted or null, 30000 is used. - max_queue_size: > - Configure maximum queue size. Value must be positive. - - If omitted or null, 2048 is used. - max_export_batch_size: > - Configure maximum batch size. Value must be positive. - - If omitted or null, 512 is used. - exporter: Configure exporter. - path_patterns: - - .tracer_provider.processors[].batch - -- type: SimpleSpanProcessor - property_descriptions: - exporter: Configure exporter. - path_patterns: - - .tracer_provider.processors[].simple - -- type: SpanExporter - property_descriptions: - otlp_http: Configure exporter to be OTLP with HTTP transport. - otlp_grpc: Configure exporter to be OTLP with gRPC transport. - otlp_file/development: > - Configure exporter to be OTLP with file transport. - - This type is in development and subject to breaking changes in minor versions. - zipkin: Configure exporter to be zipkin. - console: Configure exporter to be console. - path_patterns: - - .tracer_provider.processors[].*.exporter - -- type: ZipkinSpanExporter - property_descriptions: - endpoint: > - Configure endpoint. - - If omitted or null, http://localhost:9411/api/v2/spans is used. - timeout: > - Configure max time (in milliseconds) to wait for each export. - - Value must be non-negative. A value of 0 indicates indefinite. - - If omitted or null, 10000 is used. - path_patterns: - - .tracer_provider.processors[].*.exporter.zipkin - -- type: SpanLimits - property_descriptions: - attribute_value_length_limit: > - Configure max attribute value size. Overrides .attribute_limits.attribute_value_length_limit. - - Value must be non-negative. - - If omitted or null, there is no limit. - attribute_count_limit: > - Configure max attribute count. Overrides .attribute_limits.attribute_count_limit. - - Value must be non-negative. - - If omitted or null, 128 is used. - event_count_limit: > - Configure max span event count. - - Value must be non-negative. - - If omitted or null, 128 is used. - link_count_limit: > - Configure max span link count. - - Value must be non-negative. - - If omitted or null, 128 is used. - event_attribute_count_limit: > - Configure max attributes per span event. - - Value must be non-negative. - - If omitted or null, 128 is used. - link_attribute_count_limit: > - Configure max attributes per span link. - - Value must be non-negative. - - If omitted or null, 128 is used. - path_patterns: - - .tracer_provider.limits - -- type: Sampler - property_descriptions: - parent_based: Configure sampler to be parent_based. - trace_id_ratio_based: Configure sampler to be trace_id_ratio_based. - always_on: Configure sampler to be always_on. - always_off: Configure sampler to be always_off. - root: > - Configure root sampler. - - If omitted or null, always_on is used. - remote_parent_sampled: > - Configure remote_parent_sampled sampler. - - If omitted or null, always_on is used. - remote_parent_not_sampled: > - Configure remote_parent_not_sampled sampler. - - If omitted or null, always_off is used. - local_parent_sampled: > - Configure local_parent_sampled sampler. - - If omitted or null, always_on is used. - local_parent_not_sampled: > - Configure local_parent_not_sampled sampler. - - If omitted or null, always_off is used. - ratio: > - Configure trace_id_ratio. - - If omitted or null, 1.0 is used. - path_patterns: - - .tracer_provider.sampler - - .tracer_provider.sampler.* - -- type: ExperimentalTracerConfigurator - property_descriptions: - default_config: Configure the default tracer config used there is no matching entry in .tracer_configurator/development.tracers. - tracers: Configure tracers. - path_patterns: - - .tracer_provider.tracer_configurator/development - -- type: ExperimentalTracerMatcherAndConfig - property_descriptions: - name: > - Configure tracer names to match, evaluated as follows: - - * If the tracer name exactly matches. - * If the tracer name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. - config: The tracer config. - path_patterns: - - .tracer_provider.tracer_configurator/development.tracers[] - -- type: ExperimentalTracerConfig - property_descriptions: - disabled: Configure if the tracer is enabled or not. - path_patterns: - - .tracer_provider.tracer_configurator/development.default_config - - .tracer_provider.tracer_configurator/development.tracers[].config -# END TracerProvider - -# START MeterProvider -- type: MeterProvider - property_descriptions: - readers: Configure metric readers. - views: > - Configure views. - - Each view has a selector which determines the instrument(s) it applies to, and a configuration for the resulting stream(s). - exemplar_filter: > - Configure the exemplar filter. - - Values include: trace_based, always_on, always_off. For behavior of values see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#metrics-sdk-configuration. - - If omitted or null, trace_based is used. - meter_configurator/development: > - Configure meters. - - This type is in development and subject to breaking changes in minor versions. - path_patterns: - - .meter_provider - -- type: MetricReader - property_descriptions: - pull: Configure a pull based metric reader. - periodic: Configure a periodic metric reader. - path_patterns: - - .meter_provider.readers[] - -- type: PullMetricReader - property_descriptions: - exporter: Configure exporter. - producers: Configure metric producers. - cardinality_limits: Configure cardinality limits. - path_patterns: - - .meter_provider.readers[].pull - -- type: PeriodicMetricReader - property_descriptions: - interval: > - Configure delay interval (in milliseconds) between start of two consecutive exports. - - Value must be non-negative. - - If omitted or null, 60000 is used. - timeout: > - Configure maximum allowed time (in milliseconds) to export data. - - Value must be non-negative. A value of 0 indicates no limit (infinity). - - If omitted or null, 30000 is used. - exporter: Configure exporter. - producers: Configure metric producers. - cardinality_limits: Configure cardinality limits. - path_patterns: - - .meter_provider.readers[].periodic - -- type: MetricProducer - property_descriptions: - opencensus: Configure metric producer to be opencensus. - prometheus: Configure metric producer to be prometheus. - path_patterns: - - .meter_provider.readers[].pull.producers[] - - .meter_provider.readers[].periodic.producers[] - -- type: CardinalityLimits - property_descriptions: - default: > - Configure default cardinality limit for all instrument types. - - Instrument-specific cardinality limits take priority. - - If omitted or null, 2000 is used. - counter: > - Configure default cardinality limit for counter instruments. - - If omitted or null, the value from .default is used. - gauge: > - Configure default cardinality limit for gauge instruments. - - If omitted or null, the value from .default is used. - histogram: > - Configure default cardinality limit for histogram instruments. - - If omitted or null, the value from .default is used. - observable_counter: > - Configure default cardinality limit for observable_counter instruments. - - If omitted or null, the value from .default is used. - observable_gauge: > - Configure default cardinality limit for observable_gauge instruments. - - If omitted or null, the value from .default is used. - observable_up_down_counter: > - Configure default cardinality limit for observable_up_down_counter instruments. - - If omitted or null, the value from .default is used. - up_down_counter: > - Configure default cardinality limit for up_down_counter instruments. - - If omitted or null, the value from .default is used. - path_patterns: - - .meter_provider.readers[].pull.cardinality_limits - - .meter_provider.readers[].periodic.cardinality_limits - -- type: MetricExporter - property_descriptions: - prometheus/development: > - Configure exporter to be prometheus. - - This type is in development and subject to breaking changes in minor versions. - otlp_http: Configure exporter to be OTLP with HTTP transport. - otlp_grpc: Configure exporter to be OTLP with gRPC transport. - otlp_file/development: > - Configure exporter to be OTLP with file transport. - - This type is in development and subject to breaking changes in minor versions. - console: Configure exporter to be console. - path_patterns: - - .meter_provider.readers[].*.exporter - -- type: ExperimentalPrometheusMetricExporter - property_descriptions: - host: > - Configure host. - - If omitted or null, localhost is used. - port: > - Configure port. - - If omitted or null, 9464 is used. - without_units: > - Configure Prometheus Exporter to produce metrics without a unit suffix or UNIT metadata. - - If omitted or null, false is used. - without_type_suffix: > - Configure Prometheus Exporter to produce metrics without a type suffix. - - If omitted or null, false is used. - without_scope_info: > - Configure Prometheus Exporter to produce metrics without a scope info metric. - - If omitted or null, false is used. - with_resource_constant_labels: Configure Prometheus Exporter to add resource attributes as metrics attributes. - path_patterns: - - .meter_provider.readers[].pull.exporter.prometheus/development -- type: PrometheusIncludeExclude - property_descriptions: - included: > - Configure resource attributes to be included. - - Attribute keys from resources are evaluated to match as follows: - * If the value of the attribute key exactly matches. - * If the value of the attribute key matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. - If omitted, no resource attributes are included. - excluded: > - Configure resource attributes to be excluded. Applies after .with_resource_constant_labels.included (i.e. excluded has higher priority than included). - - Attribute keys from resources are evaluated to match as follows: - * If the value of the attribute key exactly matches. - * If the value of the attribute key matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. - If omitted, .included resource attributes are included. - path_patterns: - - .meter_provider.readers[].pull.exporter.prometheus/development.with_resource_constant_labels - -- type: View - property_descriptions: - selector: > - Configure view selector. - - Selection criteria is additive as described in https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#instrument-selection-criteria. - stream: Configure view stream. - path_patterns: - - .meter_provider.views[] - -- type: ViewSelector - property_descriptions: - instrument_name: > - Configure instrument name selection criteria. - - If omitted or null, all instrument names match. - instrument_type: > - Configure instrument type selection criteria. - - Values include: counter, gauge, histogram, observable_counter, observable_gauge, observable_up_down_counter, up_down_counter. - - If omitted or null, all instrument types match. - unit: > - Configure the instrument unit selection criteria. - - If omitted or null, all instrument units match. - meter_name: > - Configure meter name selection criteria. - - If omitted or null, all meter names match. - meter_version: > - Configure meter version selection criteria. - - If omitted or null, all meter versions match. - meter_schema_url: > - Configure meter schema url selection criteria. - - If omitted or null, all meter schema URLs match. - path_patterns: - - .meter_provider.views[].selector - -- type: ViewStream - property_descriptions: - name: > - Configure metric name of the resulting stream(s). - - If omitted or null, the instrument's original name is used. - description: > - Configure metric description of the resulting stream(s). - - If omitted or null, the instrument's origin description is used. - aggregation: > - Configure aggregation of the resulting stream(s). - - Values include: default, drop, explicit_bucket_histogram, base2_exponential_bucket_histogram, last_value, sum. For behavior of values see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#aggregation. - - If omitted, default is used. - aggregation_cardinality_limit: > - Configure the aggregation cardinality limit. - - If omitted or null, the metric reader's default cardinality limit is used. - attribute_keys: > - Configure attribute keys retained in the resulting stream(s). - path_patterns: - - .meter_provider.views[].stream - -- type: StreamIncludeExclude - property_descriptions: - included: > - Configure list of attribute keys to include in the resulting stream(s). All other attributes are dropped. - - If omitted, all attributes are included. - excluded: > - Configure list of attribute keys to exclude from the resulting stream(s). Applies after .attribute_keys.included (i.e. excluded has higher priority than included). - - If omitted, .attribute_keys.included are included. - path_patterns: - - .meter_provider.views[].stream.attribute_keys - -- type: Aggregation - property_descriptions: - explicit_bucket_histogram: Configure aggregation to be explicit_bucket_histogram. - path_patterns: - - .meter_provider.views[].stream.aggregation - -- type: ExplicitBucketHistogramAggregation - property_descriptions: - boundaries: > - Configure bucket boundaries. - - If omitted, [0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, 7500, 10000] is used. - record_min_max: > - Configure record min and max. - - If omitted or null, true is used. - path_patterns: - - .meter_provider.views[].stream.aggregation.explicit_bucket_histogram - -- type: ExperimentalMeterConfigurator - property_descriptions: - default_config: Configure the default meter config used there is no matching entry in .meter_configurator/development.meters. - meters: Configure meters. - path_patterns: - - .meter_provider.meter_configurator/development - -- type: ExperimentalMeterMatcherAndConfig - property_descriptions: - name: > - Configure meter names to match, evaluated as follows: - - * If the meter name exactly matches. - * If the meter name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. - config: The meter config. - path_patterns: - - .meter_provider.meter_configurator/development.meters[] - -- type: ExperimentalMeterConfig - property_descriptions: - disabled: Configure if the meter is enabled or not. - path_patterns: - - .meter_provider.meter_configurator/development.default_config - - .meter_provider.meter_configurator/development.meters[].config -# END meter_provider - -# START common -- type: OtlpExporterCommon - property_descriptions: - certificate_file: > - Configure certificate used to verify a server's TLS credentials. - - Absolute path to certificate file in PEM format. - - If omitted or null, system default certificate verification is used for secure connections. - client_key_file: > - Configure mTLS private client key. - - Absolute path to client key file in PEM format. If set, .client_certificate must also be set. - - If omitted or null, mTLS is not used. - client_certificate_file: > - Configure mTLS client certificate. - - Absolute path to client certificate file in PEM format. If set, .client_key must also be set. - - If omitted or null, mTLS is not used. - headers: > - Configure headers. Entries have higher priority than entries from .headers_list. - - If an entry's .value is null, the entry is ignored. - headers_list: > - Configure headers. Entries have lower priority than entries from .headers. - - The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details. - - If omitted or null, no headers are added. - compression: > - Configure compression. - - Values include: gzip, none. Implementations may support other compression algorithms. - - If omitted or null, none is used. - timeout: > - Configure max time (in milliseconds) to wait for each export. - - Value must be non-negative. A value of 0 indicates no limit (infinity). - - If omitted or null, 10000 is used. - temporality_preference: > - Configure temporality preference. - - Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md. - - If omitted or null, cumulative is used. - default_histogram_aggregation: > - Configure default histogram aggregation. - - Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md. - - If omitted or null, explicit_bucket_histogram is used. - path_patterns: - - .tracer_provider.processors[].*.exporter.otlp_http - - .logger_provider.processors[].*.exporter.otlp_http - - .meter_provider.readers[].periodic.exporter.otlp_http - - .tracer_provider.processors[].*.exporter.otlp_grpc - - .logger_provider.processors[].*.exporter.otlp_grpc - - .meter_provider.readers[].periodic.exporter.otlp_grpc -- type: OtlpHttpExporter - property_descriptions: - encoding: > - Configure the encoding used for messages. - - Values include: protobuf, json. Implementations may not support json. - - If omitted or null, protobuf is used. - path_patterns: - - .tracer_provider.processors[].*.exporter.otlp_http - - .logger_provider.processors[].*.exporter.otlp_http - - .meter_provider.readers[].periodic.exporter.otlp_http -- type: OtlpHttpSpanExporter - property_descriptions: - endpoint: > - Configure endpoint, including the trace specific path. - - If omitted or null, http://localhost:4318/v1/traces is used. - path_patterns: - - .tracer_provider.processors[].*.exporter.otlp_http -- type: OtlpHttpMetricExporter - property_descriptions: - endpoint: > - Configure endpoint, including the metric specific path. - - If omitted or null, http://localhost:4318/v1/metrics is used. - path_patterns: - - .meter_provider.readers[].periodic.exporter.otlp_http -- type: OtlpHttpLogRecordExporter - property_descriptions: - endpoint: > - Configure endpoint, including the log specific path. - - If omitted or null, http://localhost:4318/v1/logs is used. - path_patterns: - - .meter_provider.readers[].periodic.exporter.otlp_http -- type: OtlpGrpcExporter - property_descriptions: - endpoint: > - Configure endpoint. - - If omitted or null, http://localhost:4317 is used. - insecure: > - Configure client transport security for the exporter's connection. - - Only applicable when .endpoint is provided without http or https scheme. Implementations may choose to ignore .insecure. - - If omitted or null, false is used. - path_patterns: - - .tracer_provider.processors[].*.exporter.otlp_grpc - - .logger_provider.processors[].*.exporter.otlp_grpc - - .meter_provider.readers[].periodic.exporter.otlp_grpc -- type: OtlpFileExporter - property_descriptions: - output_stream: > - Configure output stream. - - Values include stdout, or scheme+destination. For example: file:///path/to/file.jsonl. - - If omitted or null, stdout is used. - path_patterns: - - .tracer_provider.processors[].*.exporter.otlp_file/development - - .logger_provider.processors[].*.exporter.otlp_file/development - - .meter_provider.readers[].periodic.exporter.otlp_file/development -# END common - -# START Instrumentation -- type: ExperimentalInstrumentation - property_descriptions: - general: > - Configure general SemConv options that may apply to multiple languages and instrumentations. - - Instrumenation may merge general config options with the language specific configuration at .instrumentation.. - cpp: Configure C++ language-specific instrumentation libraries. - dotnet: Configure .NET language-specific instrumentation libraries. - erlang: Configure Erlang language-specific instrumentation libraries. - go: Configure Go language-specific instrumentation libraries. - java: Configure Java language-specific instrumentation libraries. - js: Configure JavaScript language-specific instrumentation libraries. - php: Configure PHP language-specific instrumentation libraries. - python: Configure Python language-specific instrumentation libraries. - ruby: Configure Ruby language-specific instrumentation libraries. - rust: Configure Rust language-specific instrumentation libraries. - swift: Configure Swift language-specific instrumentation libraries. - path_patterns: - - .instrumentation/development - -- type: ExperimentalGeneralInstrumentation - property_descriptions: - peer: > - Configure instrumentations following the peer semantic conventions. - - See peer semantic conventions: https://opentelemetry.io/docs/specs/semconv/attributes-registry/peer/ - http: > - Configure instrumentations following the http semantic conventions. - - See http semantic conventions: https://opentelemetry.io/docs/specs/semconv/http/ - path_patterns: - - .instrumentation/development.general - -- type: GeneralInstrumentationPeer - property_descriptions: - service_mapping: > - Configure the service mapping for instrumentations following peer.service semantic conventions. - - Each entry is a key value pair where "peer" defines the IP address and "service" defines the corresponding logical name of the service. - - See peer.service semantic conventions: https://opentelemetry.io/docs/specs/semconv/general/attributes/#general-remote-service-attributes - path_patterns: - - .instrumentation/development.general.peer - -- type: ExperimentalHttpInstrumentation - property_descriptions: - client: Configure instrumentations following the http client semantic conventions. - server: Configure instrumentations following the http server semantic conventions. - path_patterns: - - .instrumentation/development.general.http - -- type: GeneralInstrumentationHttpClient - property_descriptions: - request_captured_headers: Configure headers to capture for outbound http requests. - response_captured_headers: Configure headers to capture for outbound http responses. - path_patterns: - - .instrumentation/development.general.http.client - -- type: GeneralInstrumentationHttpServer - property_descriptions: - request_captured_headers: Configure headers to capture for inbound http requests. - response_captured_headers: Configure headers to capture for outbound http responses. - path_patterns: - - .instrumentation/development.general.http.server - -- type: LanguageSpecificInstrumentation - property_descriptions: - example: Configure the instrumentation corresponding to key "example". - path_patterns: - - .instrumentation/development.* -# END Instrumentation - From 28f7424f6b58383e3811f79bb119e0fd15641c51 Mon Sep 17 00:00:00 2001 From: Jack Berg <34418638+jack-berg@users.noreply.github.com> Date: Thu, 2 Oct 2025 14:51:35 -0500 Subject: [PATCH 14/23] Cleanup and add all-meta-schema task --- .github/workflows/build-check.yaml | 10 +- CONTRIBUTING.md | 4 + Makefile | 23 +- meta_schema.yaml | 1268 ---------------------------- schema-docs.md | 421 +-------- schema.md | 611 -------------- scripts/generate-markdown.js | 62 +- scripts/json-schema.js | 2 - scripts/meta-schema.js | 1 + 9 files changed, 52 insertions(+), 2350 deletions(-) delete mode 100644 meta_schema.yaml delete mode 100644 schema.md diff --git a/.github/workflows/build-check.yaml b/.github/workflows/build-check.yaml index 54a956b5..72d5d372 100644 --- a/.github/workflows/build-check.yaml +++ b/.github/workflows/build-check.yaml @@ -22,19 +22,21 @@ jobs: - name: validate example run: make validate-examples - - name: generate descriptions - run: make generate-descriptions + - name: meta schema + run: make all-meta-schema - name: check for diff run: | # need to "git add" to detect any changes to descriptions which are not checked in - # select files from both /examples + # select files from locations managed by meta schema git add examples** + git add schema/meta_schema.yaml + git add schema-docs.md if git diff --cached --quiet then echo "No diff detected." else - echo "Diff detected - did you run 'make generate-descriptions'?" + echo "Diff detected - did you run 'make all-meta-schema'?" echo $(git diff --cached --name-only) echo $(git diff --cached) exit 1 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c3cebc31..5d4baadd 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -313,6 +313,10 @@ rule, the previous description, the new description, etc. npm run-script generate-descriptions -- /absolute/path/to/input/file.yaml /absolute/path/to/output/file.yaml --debug ``` +### `make all-meta-schema` + +A composite task which runs all meta schema tasks. + ## Pull requests A PR is ready to merge when: diff --git a/Makefile b/Makefile index 812c747b..4bbd6b68 100644 --- a/Makefile +++ b/Makefile @@ -27,13 +27,6 @@ validate-examples: || exit 1; \ done -.PHONY: generate-descriptions -generate-descriptions: - @if ! npm ls minimatch yaml; then npm install; fi - @for f in $(EXAMPLE_FILES); do \ - npm run-script generate-descriptions-new -- $(shell pwd)/examples/$$f $(shell pwd)/examples/$$f || exit 1; \ - done - .PHONY: update-file-format update-file-format: @echo "Updating \"file_format:\" in ./examples/* to: $(FILE_FORMAT)" @@ -41,13 +34,23 @@ update-file-format: sed -e 's/file_format:.*/file_format: \"$(FILE_FORMAT)\"/g' -i '' ./examples/$$f; \ done +.PHONY: fix-meta-schema +fix-meta-schema: + npm run-script fix-meta-schema || exit 1; \ + +.PHONY: generate-descriptions +generate-descriptions: + @if ! npm ls minimatch yaml; then npm install; fi + @for f in $(EXAMPLE_FILES); do \ + npm run-script generate-descriptions -- $(shell pwd)/examples/$$f $(shell pwd)/examples/$$f || exit 1; \ + done + .PHONY: generate-markdown generate-markdown: npm run-script generate-markdown || exit 1; \ -.PHONY: fix-meta-schema -fix-meta-schema: - npm run-script fix-meta-schema || exit 1; \ +.PHONY: all-meta-schema +all-meta-schema: fix-meta-schema generate-descriptions generate-markdown .PHONY: install-tools install-tools: diff --git a/meta_schema.yaml b/meta_schema.yaml deleted file mode 100644 index 805ad5a4..00000000 --- a/meta_schema.yaml +++ /dev/null @@ -1,1268 +0,0 @@ -Aggregation: - definitionSource: meter_provider.json#/$defs/Aggregation - paths: - - .meter_provider.views[].stream.aggregation - properties: - base2_exponential_bucket_histogram: - description: unknown - implementationStatus: {} - default: - description: unknown - implementationStatus: {} - drop: - description: unknown - implementationStatus: {} - explicit_bucket_histogram: - description: Configure aggregation to be explicit_bucket_histogram. - implementationStatus: {} - last_value: - description: unknown - implementationStatus: {} - sum: - description: unknown - implementationStatus: {} -AlwaysOffSampler: - definitionSource: tracer_provider.json#/$defs/AlwaysOffSampler - paths: [] - properties: {} -AlwaysOnSampler: - definitionSource: tracer_provider.json#/$defs/AlwaysOnSampler - paths: [] - properties: {} -AttributeLimits: - definitionSource: opentelemetry_configuration.json#/$defs/AttributeLimits - paths: - - .attribute_limits - properties: - attribute_count_limit: - description: | - Configure max attribute count. - Value must be non-negative. - If omitted or null, 128 is used. - implementationStatus: {} - attribute_value_length_limit: - description: | - Configure max attribute value size. - Value must be non-negative. - If omitted or null, there is no limit. - implementationStatus: {} -AttributeNameValue: - definitionSource: resource.json#/$defs/AttributeNameValue - paths: [] - properties: - name: - description: unknown - implementationStatus: {} - type: - description: unknown - implementationStatus: {} - value: - description: unknown - implementationStatus: {} -AttributeType: - definitionSource: resource.json#/$defs/AttributeType - paths: [] - properties: {} -B3MultiPropagator: - definitionSource: propagator.json#/$defs/B3MultiPropagator - paths: [] - properties: {} -B3Propagator: - definitionSource: propagator.json#/$defs/B3Propagator - paths: [] - properties: {} -BaggagePropagator: - definitionSource: propagator.json#/$defs/BaggagePropagator - paths: [] - properties: {} -Base2ExponentialBucketHistogramAggregation: - definitionSource: meter_provider.json#/$defs/Base2ExponentialBucketHistogramAggregation - paths: [] - properties: - max_scale: - description: unknown - implementationStatus: {} - max_size: - description: unknown - implementationStatus: {} - record_min_max: - description: unknown - implementationStatus: {} -BatchLogRecordProcessor: - definitionSource: logger_provider.json#/$defs/BatchLogRecordProcessor - paths: - - .logger_provider.processors[].batch - properties: - export_timeout: - description: | - Configure maximum allowed time (in milliseconds) to export data. - Value must be non-negative. A value of 0 indicates no limit (infinity). - If omitted or null, 30000 is used. - implementationStatus: {} - exporter: - description: Configure exporter. - implementationStatus: {} - max_export_batch_size: - description: | - Configure maximum batch size. Value must be positive. - If omitted or null, 512 is used. - implementationStatus: {} - max_queue_size: - description: | - Configure maximum queue size. Value must be positive. - If omitted or null, 2048 is used. - implementationStatus: {} - schedule_delay: - description: | - Configure delay interval (in milliseconds) between two consecutive exports. - Value must be non-negative. - If omitted or null, 1000 is used. - implementationStatus: {} -BatchSpanProcessor: - definitionSource: tracer_provider.json#/$defs/BatchSpanProcessor - paths: - - .tracer_provider.processors[].batch - properties: - export_timeout: - description: | - Configure maximum allowed time (in milliseconds) to export data. - Value must be non-negative. A value of 0 indicates no limit (infinity). - If omitted or null, 30000 is used. - implementationStatus: {} - exporter: - description: Configure exporter. - implementationStatus: {} - max_export_batch_size: - description: | - Configure maximum batch size. Value must be positive. - If omitted or null, 512 is used. - implementationStatus: {} - max_queue_size: - description: | - Configure maximum queue size. Value must be positive. - If omitted or null, 2048 is used. - implementationStatus: {} - schedule_delay: - description: | - Configure delay interval (in milliseconds) between two consecutive exports. - Value must be non-negative. - If omitted or null, 5000 is used. - implementationStatus: {} -CardinalityLimits: - definitionSource: meter_provider.json#/$defs/CardinalityLimits - paths: - - .meter_provider.readers[].pull.cardinality_limits - - .meter_provider.readers[].periodic.cardinality_limits - properties: - counter: - description: | - Configure default cardinality limit for counter instruments. - If omitted or null, the value from .default is used. - implementationStatus: {} - default: - description: | - Configure default cardinality limit for all instrument types. - Instrument-specific cardinality limits take priority. - If omitted or null, 2000 is used. - implementationStatus: {} - gauge: - description: | - Configure default cardinality limit for gauge instruments. - If omitted or null, the value from .default is used. - implementationStatus: {} - histogram: - description: | - Configure default cardinality limit for histogram instruments. - If omitted or null, the value from .default is used. - implementationStatus: {} - observable_counter: - description: | - Configure default cardinality limit for observable_counter instruments. - If omitted or null, the value from .default is used. - implementationStatus: {} - observable_gauge: - description: | - Configure default cardinality limit for observable_gauge instruments. - If omitted or null, the value from .default is used. - implementationStatus: {} - observable_up_down_counter: - description: | - Configure default cardinality limit for observable_up_down_counter instruments. - If omitted or null, the value from .default is used. - implementationStatus: {} - up_down_counter: - description: | - Configure default cardinality limit for up_down_counter instruments. - If omitted or null, the value from .default is used. - implementationStatus: {} -ConsoleExporter: - definitionSource: common.json#/$defs/ConsoleExporter - paths: [] - properties: {} -DefaultAggregation: - definitionSource: meter_provider.json#/$defs/DefaultAggregation - paths: [] - properties: {} -DropAggregation: - definitionSource: meter_provider.json#/$defs/DropAggregation - paths: [] - properties: {} -ExemplarFilter: - definitionSource: meter_provider.json#/$defs/ExemplarFilter - paths: [] - properties: {} -ExperimentalGeneralInstrumentation: - definitionSource: instrumentation.json#/$defs/ExperimentalGeneralInstrumentation - paths: - - .instrumentation/development.general - properties: - http: - description: | - Configure instrumentations following the http semantic conventions. - See http semantic conventions: https://opentelemetry.io/docs/specs/semconv/http/ - implementationStatus: {} - peer: - description: | - Configure instrumentations following the peer semantic conventions. - See peer semantic conventions: https://opentelemetry.io/docs/specs/semconv/attributes-registry/peer/ - implementationStatus: {} -ExperimentalHttpInstrumentation: - definitionSource: instrumentation.json#/$defs/ExperimentalHttpInstrumentation - paths: - - .instrumentation/development.general.http - properties: - client: - description: Configure instrumentations following the http client semantic conventions. - implementationStatus: {} - server: - description: Configure instrumentations following the http server semantic conventions. - implementationStatus: {} -ExperimentalInstrumentation: - definitionSource: opentelemetry_configuration.json#/$defs/ExperimentalInstrumentation - paths: - - .instrumentation/development - properties: - cpp: - description: Configure C++ language-specific instrumentation libraries. - implementationStatus: {} - dotnet: - description: Configure .NET language-specific instrumentation libraries. - implementationStatus: {} - erlang: - description: Configure Erlang language-specific instrumentation libraries. - implementationStatus: {} - general: - description: | - Configure general SemConv options that may apply to multiple languages and instrumentations. - Instrumenation may merge general config options with the language specific configuration at .instrumentation.. - implementationStatus: {} - go: - description: Configure Go language-specific instrumentation libraries. - implementationStatus: {} - java: - description: Configure Java language-specific instrumentation libraries. - implementationStatus: {} - js: - description: Configure JavaScript language-specific instrumentation libraries. - implementationStatus: {} - php: - description: Configure PHP language-specific instrumentation libraries. - implementationStatus: {} - python: - description: Configure Python language-specific instrumentation libraries. - implementationStatus: {} - ruby: - description: Configure Ruby language-specific instrumentation libraries. - implementationStatus: {} - rust: - description: Configure Rust language-specific instrumentation libraries. - implementationStatus: {} - swift: - description: Configure Swift language-specific instrumentation libraries. - implementationStatus: {} -ExperimentalLanguageSpecificInstrumentation: - definitionSource: instrumentation.json#/$defs/ExperimentalLanguageSpecificInstrumentation - paths: [] - properties: {} -ExperimentalLoggerConfig: - definitionSource: logger_provider.json#/$defs/ExperimentalLoggerConfig - paths: - - .logger_provider.logger_configurator/development.default_config - - .logger_provider.logger_configurator/development.loggers[].config - properties: - disabled: - description: Configure if the logger is enabled or not. - implementationStatus: {} -ExperimentalLoggerConfigurator: - definitionSource: logger_provider.json#/$defs/ExperimentalLoggerConfigurator - paths: - - .logger_provider.logger_configurator/development - properties: - default_config: - description: Configure the default logger config used there is no matching entry in .logger_configurator/development.loggers. - implementationStatus: {} - loggers: - description: Configure loggers. - implementationStatus: {} -ExperimentalLoggerMatcherAndConfig: - definitionSource: logger_provider.json#/$defs/ExperimentalLoggerMatcherAndConfig - paths: - - .logger_provider.logger_configurator/development.loggers[] - properties: - config: - description: The logger config. - implementationStatus: {} - name: - description: | - Configure logger names to match, evaluated as follows: - - * If the logger name exactly matches. - * If the logger name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. - implementationStatus: {} -ExperimentalMeterConfig: - definitionSource: meter_provider.json#/$defs/ExperimentalMeterConfig - paths: - - .meter_provider.meter_configurator/development.default_config - - .meter_provider.meter_configurator/development.meters[].config - properties: - disabled: - description: Configure if the meter is enabled or not. - implementationStatus: {} -ExperimentalMeterConfigurator: - definitionSource: meter_provider.json#/$defs/ExperimentalMeterConfigurator - paths: - - .meter_provider.meter_configurator/development - properties: - default_config: - description: Configure the default meter config used there is no matching entry in .meter_configurator/development.meters. - implementationStatus: {} - meters: - description: Configure meters. - implementationStatus: {} -ExperimentalMeterMatcherAndConfig: - definitionSource: meter_provider.json#/$defs/ExperimentalMeterMatcherAndConfig - paths: - - .meter_provider.meter_configurator/development.meters[] - properties: - config: - description: The meter config. - implementationStatus: {} - name: - description: | - Configure meter names to match, evaluated as follows: - - * If the meter name exactly matches. - * If the meter name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. - implementationStatus: {} -ExperimentalOtlpFileExporter: - definitionSource: common.json#/$defs/ExperimentalOtlpFileExporter - paths: [] - properties: - output_stream: - description: unknown - implementationStatus: {} -ExperimentalOtlpFileMetricExporter: - definitionSource: meter_provider.json#/$defs/ExperimentalOtlpFileMetricExporter - paths: [] - properties: - default_histogram_aggregation: - description: unknown - implementationStatus: {} - output_stream: - description: unknown - implementationStatus: {} - temporality_preference: - description: unknown - implementationStatus: {} -ExperimentalPeerInstrumentation: - definitionSource: instrumentation.json#/$defs/ExperimentalPeerInstrumentation - paths: [] - properties: - service_mapping: - description: unknown - implementationStatus: {} -ExperimentalPrometheusMetricExporter: - definitionSource: meter_provider.json#/$defs/ExperimentalPrometheusMetricExporter - paths: - - .meter_provider.readers[].pull.exporter.prometheus/development - properties: - host: - description: | - Configure host. - If omitted or null, localhost is used. - implementationStatus: {} - port: - description: | - Configure port. - If omitted or null, 9464 is used. - implementationStatus: {} - with_resource_constant_labels: - description: Configure Prometheus Exporter to add resource attributes as metrics attributes. - implementationStatus: {} - without_scope_info: - description: | - Configure Prometheus Exporter to produce metrics without a scope info metric. - If omitted or null, false is used. - implementationStatus: {} - without_type_suffix: - description: | - Configure Prometheus Exporter to produce metrics without a type suffix. - If omitted or null, false is used. - implementationStatus: {} - without_units: - description: | - Configure Prometheus Exporter to produce metrics without a unit suffix or UNIT metadata. - If omitted or null, false is used. - implementationStatus: {} -ExperimentalResourceDetection: - definitionSource: resource.json#/$defs/ExperimentalResourceDetection - paths: - - .resource.detection/development - properties: - attributes: - description: Configure attributes provided by resource detectors. - implementationStatus: {} - detectors: - description: | - Configure resource detectors. - Resource detector names are dependent on the SDK language ecosystem. Please consult documentation for each respective language. - If omitted or null, no resource detectors are enabled. - implementationStatus: {} -ExperimentalResourceDetector: - definitionSource: resource.json#/$defs/ExperimentalResourceDetector - paths: - - .resource.detection/development.detectors[] - properties: {} -ExperimentalTracerConfig: - definitionSource: tracer_provider.json#/$defs/ExperimentalTracerConfig - paths: - - .tracer_provider.tracer_configurator/development.default_config - - .tracer_provider.tracer_configurator/development.tracers[].config - properties: - disabled: - description: Configure if the tracer is enabled or not. - implementationStatus: {} -ExperimentalTracerConfigurator: - definitionSource: tracer_provider.json#/$defs/ExperimentalTracerConfigurator - paths: - - .tracer_provider.tracer_configurator/development - properties: - default_config: - description: Configure the default tracer config used there is no matching entry in .tracer_configurator/development.tracers. - implementationStatus: {} - tracers: - description: Configure tracers. - implementationStatus: {} -ExperimentalTracerMatcherAndConfig: - definitionSource: tracer_provider.json#/$defs/ExperimentalTracerMatcherAndConfig - paths: - - .tracer_provider.tracer_configurator/development.tracers[] - properties: - config: - description: The tracer config. - implementationStatus: {} - name: - description: | - Configure tracer names to match, evaluated as follows: - - * If the tracer name exactly matches. - * If the tracer name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. - implementationStatus: {} -ExplicitBucketHistogramAggregation: - definitionSource: meter_provider.json#/$defs/ExplicitBucketHistogramAggregation - paths: - - .meter_provider.views[].stream.aggregation.explicit_bucket_histogram - properties: - boundaries: - description: | - Configure bucket boundaries. - If omitted, [0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, 7500, 10000] is used. - implementationStatus: {} - record_min_max: - description: | - Configure record min and max. - If omitted or null, true is used. - implementationStatus: {} -ExporterDefaultHistogramAggregation: - definitionSource: meter_provider.json#/$defs/ExporterDefaultHistogramAggregation - paths: [] - properties: {} -ExporterTemporalityPreference: - definitionSource: meter_provider.json#/$defs/ExporterTemporalityPreference - paths: [] - properties: {} -IncludeExclude: - definitionSource: common.json#/$defs/IncludeExclude - paths: - - .resource.detection/development.attributes - properties: - excluded: - description: | - Configure list of attribute key patterns to exclude from resource detectors. Applies after .resource.detectors.attributes.included (i.e. excluded has higher priority than included). - Attribute keys from resource detectors are evaluated to match as follows: - * If the value of the attribute key exactly matches. - * If the value of the attribute key matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. - If omitted, .included attributes are included. - implementationStatus: {} - included: - description: | - Configure list of attribute key patterns to include from resource detectors. - Attribute keys from resource detectors are evaluated to match as follows: - * If the value of the attribute key exactly matches. - * If the value of the attribute key matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. - If omitted, all attributes are included. - implementationStatus: {} -InstrumentType: - definitionSource: meter_provider.json#/$defs/InstrumentType - paths: [] - properties: {} -JaegerPropagator: - definitionSource: propagator.json#/$defs/JaegerPropagator - paths: [] - properties: {} -JaegerRemoteSampler: - definitionSource: tracer_provider.json#/$defs/JaegerRemoteSampler - paths: [] - properties: - endpoint: - description: unknown - implementationStatus: {} - initial_sampler: - description: unknown - implementationStatus: {} - interval: - description: unknown - implementationStatus: {} -LastValueAggregation: - definitionSource: meter_provider.json#/$defs/LastValueAggregation - paths: [] - properties: {} -LogRecordExporter: - definitionSource: logger_provider.json#/$defs/LogRecordExporter - paths: - - .logger_provider.processors[].*.exporter - properties: - console: - description: Configure exporter to be console. - implementationStatus: {} - otlp_file/development: - description: | - Configure exporter to be OTLP with file transport. - This type is in development and subject to breaking changes in minor versions. - implementationStatus: {} - otlp_grpc: - description: Configure exporter to be OTLP with gRPC transport. - implementationStatus: {} - otlp_http: - description: Configure exporter to be OTLP with HTTP transport. - implementationStatus: {} -LogRecordLimits: - definitionSource: logger_provider.json#/$defs/LogRecordLimits - paths: - - .logger_provider.limits - properties: - attribute_count_limit: - description: | - Configure max attribute count. Overrides .attribute_limits.attribute_count_limit. - Value must be non-negative. - If omitted or null, 128 is used. - implementationStatus: {} - attribute_value_length_limit: - description: | - Configure max attribute value size. Overrides .attribute_limits.attribute_value_length_limit. - Value must be non-negative. - If omitted or null, there is no limit. - implementationStatus: {} -LogRecordProcessor: - definitionSource: logger_provider.json#/$defs/LogRecordProcessor - paths: - - .logger_provider.processors[] - properties: - batch: - description: Configure a batch log record processor. - implementationStatus: {} - simple: - description: Configure a simple log record processor. - implementationStatus: {} -LoggerProvider: - definitionSource: opentelemetry_configuration.json#/$defs/LoggerProvider - paths: - - .logger_provider - properties: - limits: - description: Configure log record limits. See also attribute_limits. - implementationStatus: {} - logger_configurator/development: - description: | - Configure loggers. - This type is in development and subject to breaking changes in minor versions. - implementationStatus: {} - processors: - description: Configure log record processors. - implementationStatus: {} -MeterProvider: - definitionSource: opentelemetry_configuration.json#/$defs/MeterProvider - paths: - - .meter_provider - properties: - exemplar_filter: - description: | - Configure the exemplar filter. - Values include: trace_based, always_on, always_off. For behavior of values see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#metrics-sdk-configuration. - If omitted or null, trace_based is used. - implementationStatus: {} - meter_configurator/development: - description: | - Configure meters. - This type is in development and subject to breaking changes in minor versions. - implementationStatus: {} - readers: - description: Configure metric readers. - implementationStatus: {} - views: - description: | - Configure views. - Each view has a selector which determines the instrument(s) it applies to, and a configuration for the resulting stream(s). - implementationStatus: {} -MetricProducer: - definitionSource: meter_provider.json#/$defs/MetricProducer - paths: - - .meter_provider.readers[].pull.producers[] - - .meter_provider.readers[].periodic.producers[] - properties: - opencensus: - description: Configure metric producer to be opencensus. - implementationStatus: {} -MetricReader: - definitionSource: meter_provider.json#/$defs/MetricReader - paths: - - .meter_provider.readers[] - properties: - periodic: - description: Configure a periodic metric reader. - implementationStatus: {} - pull: - description: Configure a pull based metric reader. - implementationStatus: {} -NameStringValuePair: - definitionSource: common.json#/$defs/NameStringValuePair - paths: [] - properties: - name: - description: unknown - implementationStatus: {} - value: - description: unknown - implementationStatus: {} -OpenCensusMetricProducer: - definitionSource: meter_provider.json#/$defs/OpenCensusMetricProducer - paths: [] - properties: {} -OpenTelemetryConfiguration: - definitionSource: opentelemetry_configuration.json. - paths: - - . - properties: - attribute_limits: - description: Configure general attribute limits. See also tracer_provider.limits, logger_provider.limits. - implementationStatus: {} - disabled: - description: | - Configure if the SDK is disabled or not. - If omitted or null, false is used. - implementationStatus: {} - file_format: - description: | - The file format version. - The yaml format is documented at - https://github.com/open-telemetry/opentelemetry-configuration/tree/main/schema - implementationStatus: {} - instrumentation/development: - description: | - Configure instrumentation. - This type is in development and subject to breaking changes in minor versions. - implementationStatus: {} - log_level: - description: | - Configure the log level of the internal logger used by the SDK. - If omitted, info is used. - implementationStatus: {} - logger_provider: - description: | - Configure logger provider. - If omitted, a noop logger provider is used. - implementationStatus: {} - meter_provider: - description: | - Configure meter provider. - If omitted, a noop meter provider is used. - implementationStatus: {} - propagator: - description: | - Configure text map context propagators. - If omitted, a noop propagator is used. - implementationStatus: {} - resource: - description: | - Configure resource for all signals. - If omitted, the default resource is used. - implementationStatus: {} - tracer_provider: - description: | - Configure tracer provider. - If omitted, a noop tracer provider is used. - implementationStatus: {} -OpenTracingPropagator: - definitionSource: propagator.json#/$defs/OpenTracingPropagator - paths: [] - properties: {} -OtlpGrpcExporter: - definitionSource: common.json#/$defs/OtlpGrpcExporter - paths: - - .tracer_provider.processors[].*.exporter.otlp_grpc - - .logger_provider.processors[].*.exporter.otlp_grpc - - .meter_provider.readers[].periodic.exporter.otlp_grpc - properties: - certificate_file: - description: unknown - implementationStatus: {} - client_certificate_file: - description: unknown - implementationStatus: {} - client_key_file: - description: unknown - implementationStatus: {} - compression: - description: unknown - implementationStatus: {} - endpoint: - description: | - Configure endpoint. - If omitted or null, http://localhost:4317 is used. - implementationStatus: {} - headers: - description: unknown - implementationStatus: {} - headers_list: - description: unknown - implementationStatus: {} - insecure: - description: | - Configure client transport security for the exporter's connection. - Only applicable when .endpoint is provided without http or https scheme. Implementations may choose to ignore .insecure. - If omitted or null, false is used. - implementationStatus: {} - timeout: - description: unknown - implementationStatus: {} -OtlpGrpcMetricExporter: - definitionSource: meter_provider.json#/$defs/OtlpGrpcMetricExporter - paths: [] - properties: - certificate_file: - description: unknown - implementationStatus: {} - client_certificate_file: - description: unknown - implementationStatus: {} - client_key_file: - description: unknown - implementationStatus: {} - compression: - description: unknown - implementationStatus: {} - default_histogram_aggregation: - description: unknown - implementationStatus: {} - endpoint: - description: unknown - implementationStatus: {} - headers: - description: unknown - implementationStatus: {} - headers_list: - description: unknown - implementationStatus: {} - insecure: - description: unknown - implementationStatus: {} - temporality_preference: - description: unknown - implementationStatus: {} - timeout: - description: unknown - implementationStatus: {} -OtlpHttpEncoding: - definitionSource: common.json#/$defs/OtlpHttpEncoding - paths: [] - properties: {} -OtlpHttpExporter: - definitionSource: common.json#/$defs/OtlpHttpExporter - paths: - - .tracer_provider.processors[].*.exporter.otlp_http - - .logger_provider.processors[].*.exporter.otlp_http - - .meter_provider.readers[].periodic.exporter.otlp_http - properties: - certificate_file: - description: unknown - implementationStatus: {} - client_certificate_file: - description: unknown - implementationStatus: {} - client_key_file: - description: unknown - implementationStatus: {} - compression: - description: unknown - implementationStatus: {} - encoding: - description: | - Configure the encoding used for messages. - Values include: protobuf, json. Implementations may not support json. - If omitted or null, protobuf is used. - implementationStatus: {} - endpoint: - description: unknown - implementationStatus: {} - headers: - description: unknown - implementationStatus: {} - headers_list: - description: unknown - implementationStatus: {} - timeout: - description: unknown - implementationStatus: {} -OtlpHttpMetricExporter: - definitionSource: meter_provider.json#/$defs/OtlpHttpMetricExporter - paths: - - .meter_provider.readers[].periodic.exporter.otlp_http - properties: - certificate_file: - description: unknown - implementationStatus: {} - client_certificate_file: - description: unknown - implementationStatus: {} - client_key_file: - description: unknown - implementationStatus: {} - compression: - description: unknown - implementationStatus: {} - default_histogram_aggregation: - description: unknown - implementationStatus: {} - encoding: - description: unknown - implementationStatus: {} - endpoint: - description: | - Configure endpoint, including the metric specific path. - If omitted or null, http://localhost:4318/v1/metrics is used. - implementationStatus: {} - headers: - description: unknown - implementationStatus: {} - headers_list: - description: unknown - implementationStatus: {} - temporality_preference: - description: unknown - implementationStatus: {} - timeout: - description: unknown - implementationStatus: {} -ParentBasedSampler: - definitionSource: tracer_provider.json#/$defs/ParentBasedSampler - paths: [] - properties: - local_parent_not_sampled: - description: unknown - implementationStatus: {} - local_parent_sampled: - description: unknown - implementationStatus: {} - remote_parent_not_sampled: - description: unknown - implementationStatus: {} - remote_parent_sampled: - description: unknown - implementationStatus: {} - root: - description: unknown - implementationStatus: {} -PeriodicMetricReader: - definitionSource: meter_provider.json#/$defs/PeriodicMetricReader - paths: - - .meter_provider.readers[].periodic - properties: - cardinality_limits: - description: Configure cardinality limits. - implementationStatus: {} - exporter: - description: Configure exporter. - implementationStatus: {} - interval: - description: | - Configure delay interval (in milliseconds) between start of two consecutive exports. - Value must be non-negative. - If omitted or null, 60000 is used. - implementationStatus: {} - producers: - description: Configure metric producers. - implementationStatus: {} - timeout: - description: | - Configure maximum allowed time (in milliseconds) to export data. - Value must be non-negative. A value of 0 indicates no limit (infinity). - If omitted or null, 30000 is used. - implementationStatus: {} -Propagator: - definitionSource: opentelemetry_configuration.json#/$defs/Propagator - paths: - - .propagator - properties: - composite: - description: | - Configure the propagators in the composite text map propagator. Entries from .composite_list are appended to the list here with duplicates filtered out. - Built-in propagator keys include: tracecontext, baggage, b3, b3multi, jaeger, ottrace. Known third party keys include: xray. - If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used. - implementationStatus: {} - composite_list: - description: | - Configure the propagators in the composite text map propagator. Entries are appended to .composite with duplicates filtered out. - The value is a comma separated list of propagator identifiers matching the format of OTEL_PROPAGATORS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details. - Built-in propagator identifiers include: tracecontext, baggage, b3, b3multi, jaeger, ottrace. Known third party identifiers include: xray. - If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used. - implementationStatus: {} -PullMetricExporter: - definitionSource: meter_provider.json#/$defs/PullMetricExporter - paths: [] - properties: - prometheus/development: - description: unknown - implementationStatus: {} -PullMetricReader: - definitionSource: meter_provider.json#/$defs/PullMetricReader - paths: - - .meter_provider.readers[].pull - properties: - cardinality_limits: - description: Configure cardinality limits. - implementationStatus: {} - exporter: - description: Configure exporter. - implementationStatus: {} - producers: - description: Configure metric producers. - implementationStatus: {} -PushMetricExporter: - definitionSource: meter_provider.json#/$defs/PushMetricExporter - paths: [] - properties: - console: - description: unknown - implementationStatus: {} - otlp_file/development: - description: unknown - implementationStatus: {} - otlp_grpc: - description: unknown - implementationStatus: {} - otlp_http: - description: unknown - implementationStatus: {} -Resource: - definitionSource: opentelemetry_configuration.json#/$defs/Resource - paths: - - .resource - properties: - attributes: - description: | - Configure resource attributes. Entries have higher priority than entries from .resource.attributes_list. - Entries must contain .name and .value, and may optionally include .type. If an entry's .type omitted or null, string is used. - The .value's type must match the .type. Values for .type include: string, bool, int, double, string_array, bool_array, int_array, double_array. - implementationStatus: {} - attributes_list: - description: | - Configure resource attributes. Entries have lower priority than entries from .resource.attributes. - The value is a list of comma separated key-value pairs matching the format of OTEL_RESOURCE_ATTRIBUTES. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details. - If omitted or null, no resource attributes are added. - implementationStatus: {} - detection/development: - description: | - Configure resource detection. - This type is in development and subject to breaking changes in minor versions. - If omitted or null, resource detection is disabled. - implementationStatus: {} - schema_url: - description: | - Configure resource schema URL. - If omitted or null, no schema URL is used. - implementationStatus: {} -Sampler: - definitionSource: tracer_provider.json#/$defs/Sampler - paths: - - .tracer_provider.sampler - - .tracer_provider.sampler.* - properties: - always_off: - description: Configure sampler to be always_off. - implementationStatus: {} - always_on: - description: Configure sampler to be always_on. - implementationStatus: {} - jaeger_remote: - description: unknown - implementationStatus: {} - parent_based: - description: Configure sampler to be parent_based. - implementationStatus: {} - trace_id_ratio_based: - description: Configure sampler to be trace_id_ratio_based. - implementationStatus: {} -SimpleLogRecordProcessor: - definitionSource: logger_provider.json#/$defs/SimpleLogRecordProcessor - paths: - - .logger_provider.processors[].simple - properties: - exporter: - description: Configure exporter. - implementationStatus: {} -SimpleSpanProcessor: - definitionSource: tracer_provider.json#/$defs/SimpleSpanProcessor - paths: - - .tracer_provider.processors[].simple - properties: - exporter: - description: Configure exporter. - implementationStatus: {} -SpanExporter: - definitionSource: tracer_provider.json#/$defs/SpanExporter - paths: - - .tracer_provider.processors[].*.exporter - properties: - console: - description: Configure exporter to be console. - implementationStatus: {} - otlp_file/development: - description: | - Configure exporter to be OTLP with file transport. - This type is in development and subject to breaking changes in minor versions. - implementationStatus: {} - otlp_grpc: - description: Configure exporter to be OTLP with gRPC transport. - implementationStatus: {} - otlp_http: - description: Configure exporter to be OTLP with HTTP transport. - implementationStatus: {} - zipkin: - description: Configure exporter to be zipkin. - implementationStatus: {} -SpanLimits: - definitionSource: tracer_provider.json#/$defs/SpanLimits - paths: - - .tracer_provider.limits - properties: - attribute_count_limit: - description: | - Configure max attribute count. Overrides .attribute_limits.attribute_count_limit. - Value must be non-negative. - If omitted or null, 128 is used. - implementationStatus: {} - attribute_value_length_limit: - description: | - Configure max attribute value size. Overrides .attribute_limits.attribute_value_length_limit. - Value must be non-negative. - If omitted or null, there is no limit. - implementationStatus: {} - event_attribute_count_limit: - description: | - Configure max attributes per span event. - Value must be non-negative. - If omitted or null, 128 is used. - implementationStatus: {} - event_count_limit: - description: | - Configure max span event count. - Value must be non-negative. - If omitted or null, 128 is used. - implementationStatus: {} - link_attribute_count_limit: - description: | - Configure max attributes per span link. - Value must be non-negative. - If omitted or null, 128 is used. - implementationStatus: {} - link_count_limit: - description: | - Configure max span link count. - Value must be non-negative. - If omitted or null, 128 is used. - implementationStatus: {} -SpanProcessor: - definitionSource: tracer_provider.json#/$defs/SpanProcessor - paths: - - .tracer_provider.processors[] - properties: - batch: - description: Configure a batch span processor. - implementationStatus: {} - simple: - description: Configure a simple span processor. - implementationStatus: {} -SumAggregation: - definitionSource: meter_provider.json#/$defs/SumAggregation - paths: [] - properties: {} -TextMapPropagator: - definitionSource: propagator.json#/$defs/TextMapPropagator - paths: - - .propagator.composite[] - properties: - b3: - description: Include the zipkin b3 propagator. - implementationStatus: {} - b3multi: - description: Include the zipkin b3 multi propagator. - implementationStatus: {} - baggage: - description: Include the w3c baggage propagator. - implementationStatus: {} - jaeger: - description: Include the jaeger propagator. - implementationStatus: {} - ottrace: - description: Include the opentracing propagator. - implementationStatus: {} - tracecontext: - description: Include the w3c trace context propagator. - implementationStatus: {} -TraceContextPropagator: - definitionSource: propagator.json#/$defs/TraceContextPropagator - paths: [] - properties: {} -TraceIdRatioBasedSampler: - definitionSource: tracer_provider.json#/$defs/TraceIdRatioBasedSampler - paths: [] - properties: - ratio: - description: unknown - implementationStatus: {} -TracerProvider: - definitionSource: opentelemetry_configuration.json#/$defs/TracerProvider - paths: - - .tracer_provider - properties: - limits: - description: Configure span limits. See also attribute_limits. - implementationStatus: {} - processors: - description: Configure span processors. - implementationStatus: {} - sampler: - description: | - Configure the sampler. - If omitted, parent based sampler with a root of always_on is used. - implementationStatus: {} - tracer_configurator/development: - description: | - Configure tracers. - This type is in development and subject to breaking changes in minor versions. - implementationStatus: {} -View: - definitionSource: meter_provider.json#/$defs/View - paths: - - .meter_provider.views[] - properties: - selector: - description: | - Configure view selector. - Selection criteria is additive as described in https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#instrument-selection-criteria. - implementationStatus: {} - stream: - description: Configure view stream. - implementationStatus: {} -ViewSelector: - definitionSource: meter_provider.json#/$defs/ViewSelector - paths: - - .meter_provider.views[].selector - properties: - instrument_name: - description: | - Configure instrument name selection criteria. - If omitted or null, all instrument names match. - implementationStatus: {} - instrument_type: - description: | - Configure instrument type selection criteria. - Values include: counter, gauge, histogram, observable_counter, observable_gauge, observable_up_down_counter, up_down_counter. - If omitted or null, all instrument types match. - implementationStatus: {} - meter_name: - description: | - Configure meter name selection criteria. - If omitted or null, all meter names match. - implementationStatus: {} - meter_schema_url: - description: | - Configure meter schema url selection criteria. - If omitted or null, all meter schema URLs match. - implementationStatus: {} - meter_version: - description: | - Configure meter version selection criteria. - If omitted or null, all meter versions match. - implementationStatus: {} - unit: - description: | - Configure the instrument unit selection criteria. - If omitted or null, all instrument units match. - implementationStatus: {} -ViewStream: - definitionSource: meter_provider.json#/$defs/ViewStream - paths: - - .meter_provider.views[].stream - properties: - aggregation: - description: | - Configure aggregation of the resulting stream(s). - Values include: default, drop, explicit_bucket_histogram, base2_exponential_bucket_histogram, last_value, sum. For behavior of values see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#aggregation. - If omitted, default is used. - implementationStatus: {} - aggregation_cardinality_limit: - description: | - Configure the aggregation cardinality limit. - If omitted or null, the metric reader's default cardinality limit is used. - implementationStatus: {} - attribute_keys: - description: | - Configure attribute keys retained in the resulting stream(s). - implementationStatus: {} - description: - description: | - Configure metric description of the resulting stream(s). - If omitted or null, the instrument's origin description is used. - implementationStatus: {} - name: - description: | - Configure metric name of the resulting stream(s). - If omitted or null, the instrument's original name is used. - implementationStatus: {} -ZipkinSpanExporter: - definitionSource: tracer_provider.json#/$defs/ZipkinSpanExporter - paths: - - .tracer_provider.processors[].*.exporter.zipkin - properties: - endpoint: - description: | - Configure endpoint. - If omitted or null, http://localhost:9411/api/v2/spans is used. - implementationStatus: {} - timeout: - description: | - Configure max time (in milliseconds) to wait for each export. - Value must be non-negative. A value of 0 indicates indefinite. - If omitted or null, 10000 is used. - implementationStatus: {} diff --git a/schema-docs.md b/schema-docs.md index e51b777f..4e5250f1 100644 --- a/schema-docs.md +++ b/schema-docs.md @@ -1,3 +1,5 @@ + + ### Aggregation | Property | Description | Type | Required? | @@ -9,15 +11,6 @@ | `last_value` | TODO | [`LastValueAggregation`](#LastValueAggregation) | `false` | | `sum` | TODO | [`SumAggregation`](#SumAggregation) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `default` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `drop` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `explicit_bucket_histogram` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `base2_exponential_bucket_histogram` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `last_value` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `sum` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -91,11 +84,6 @@ No properties. | `attribute_value_length_limit` | Configure max attribute value size.
Value must be non-negative.
If omitted or null, there is no limit.
| One of:
* `integer`
* `null`
| `false` | | `attribute_count_limit` | Configure max attribute count.
Value must be non-negative.
If omitted or null, 128 is used.
| One of:
* `integer`
* `null`
| `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `attribute_value_length_limit` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `attribute_count_limit` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -128,12 +116,6 @@ No properties. | `value` | The attribute value.
The type of value must match .type.
| One of:
* [`see JSON schema`](#see JSON schema)
| `true` | | `type` | The attribute type.
Values include: string, bool, int, double, string_array, bool_array, int_array, double_array.
If omitted or null, string is used.
| [`AttributeType`](#AttributeType) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `name` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `value` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `type` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -276,12 +258,6 @@ No properties. | `max_size` | TODO | One of:
* `integer`
* `null`
| `false` | | `record_min_max` | TODO | One of:
* `boolean`
* `null`
| `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `max_scale` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `max_size` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `record_min_max` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -325,14 +301,6 @@ No properties. | `max_export_batch_size` | Configure maximum batch size. Value must be positive.
If omitted or null, 512 is used.
| One of:
* `integer`
* `null`
| `false` | | `exporter` | Configure exporter. | [`LogRecordExporter`](#LogRecordExporter) | `true` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `schedule_delay` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `export_timeout` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `max_queue_size` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `max_export_batch_size` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `exporter` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -389,14 +357,6 @@ No properties. | `max_export_batch_size` | Configure maximum batch size. Value must be positive.
If omitted or null, 512 is used.
| One of:
* `integer`
* `null`
| `false` | | `exporter` | Configure exporter. | [`SpanExporter`](#SpanExporter) | `true` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `schedule_delay` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `export_timeout` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `max_queue_size` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `max_export_batch_size` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `exporter` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -456,17 +416,6 @@ No properties. | `observable_up_down_counter` | Configure default cardinality limit for observable_up_down_counter instruments.
If omitted or null, the value from .default is used.
| One of:
* `integer`
* `null`
| `false` | | `up_down_counter` | Configure default cardinality limit for up_down_counter instruments.
If omitted or null, the value from .default is used.
| One of:
* `integer`
* `null`
| `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `default` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `counter` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `gauge` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `histogram` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `observable_counter` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `observable_gauge` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `observable_up_down_counter` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `up_down_counter` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -614,11 +563,6 @@ No properties. | `peer` | Configure instrumentations following the peer semantic conventions.
See peer semantic conventions: https://opentelemetry.io/docs/specs/semconv/attributes-registry/peer/
| [`ExperimentalPeerInstrumentation`](#ExperimentalPeerInstrumentation) | `false` | | `http` | Configure instrumentations following the http semantic conventions.
See http semantic conventions: https://opentelemetry.io/docs/specs/semconv/http/
| [`ExperimentalHttpInstrumentation`](#ExperimentalHttpInstrumentation) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `peer` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `http` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -644,11 +588,6 @@ No properties. | `request_captured_headers` | Configure headers to capture for outbound http requests.
| `array` of [`string`](#string) | `false` | | `response_captured_headers` | Configure headers to capture for inbound http responses.
| `array` of [`string`](#string) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `request_captured_headers` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `response_captured_headers` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -680,11 +619,6 @@ No properties. | `client` | Configure instrumentations following the http client semantic conventions. | [`ExperimentalHttpClientInstrumentation`](#ExperimentalHttpClientInstrumentation) | `false` | | `server` | Configure instrumentations following the http server semantic conventions. | [`ExperimentalHttpServerInstrumentation`](#ExperimentalHttpServerInstrumentation) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `client` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `server` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -710,11 +644,6 @@ No properties. | `request_captured_headers` | Configure headers to capture for inbound http requests.
| `array` of [`string`](#string) | `false` | | `response_captured_headers` | Configure headers to capture for outbound http responses.
| `array` of [`string`](#string) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `request_captured_headers` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `response_captured_headers` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -756,21 +685,6 @@ No properties. | `rust` | Configure Rust language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | | `swift` | Configure Swift language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `general` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `cpp` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `dotnet` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `erlang` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `go` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `java` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `js` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `php` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `python` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `ruby` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `rust` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `swift` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -950,10 +864,6 @@ No properties. |---|---|---|---| | `disabled` | Configure if the logger is enabled or not. | One of:
* `boolean`
| `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `disabled` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -980,11 +890,6 @@ No properties. | `default_config` | Configure the default logger config used there is no matching entry in .logger_configurator/development.loggers. | [`ExperimentalLoggerConfig`](#ExperimentalLoggerConfig) | `false` | | `loggers` | Configure loggers. | `array` of [`ExperimentalLoggerMatcherAndConfig`](#ExperimentalLoggerMatcherAndConfig) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `default_config` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `loggers` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -1015,11 +920,6 @@ No properties. | `name` | Configure logger names to match, evaluated as follows:

* If the logger name exactly matches.
* If the logger name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
| One of:
* `string`
| `false` | | `config` | The logger config. | [`ExperimentalLoggerConfig`](#ExperimentalLoggerConfig) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `name` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `config` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -1048,10 +948,6 @@ No properties. |---|---|---|---| | `disabled` | Configure if the meter is enabled or not. | One of:
* `boolean`
| `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `disabled` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -1078,11 +974,6 @@ No properties. | `default_config` | Configure the default meter config used there is no matching entry in .meter_configurator/development.meters. | [`ExperimentalMeterConfig`](#ExperimentalMeterConfig) | `false` | | `meters` | Configure meters. | `array` of [`ExperimentalMeterMatcherAndConfig`](#ExperimentalMeterMatcherAndConfig) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `default_config` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `meters` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -1113,11 +1004,6 @@ No properties. | `name` | Configure meter names to match, evaluated as follows:

* If the meter name exactly matches.
* If the meter name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
| One of:
* `string`
| `false` | | `config` | The meter config. | [`ExperimentalMeterConfig`](#ExperimentalMeterConfig) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `name` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `config` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -1146,10 +1032,6 @@ No properties. |---|---|---|---| | `output_stream` | Configure output stream.
Values include stdout, or scheme+destination. For example: file:///path/to/file.jsonl.
If omitted or null, stdout is used.
| One of:
* `string`
* `null`
| `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `output_stream` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -1179,12 +1061,6 @@ No properties. | `temporality_preference` | Configure temporality preference.
Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, cumulative is used.
| [`ExporterTemporalityPreference`](#ExporterTemporalityPreference) | `false` | | `default_histogram_aggregation` | Configure default histogram aggregation.
Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, explicit_bucket_histogram is used.
| [`ExporterDefaultHistogramAggregation`](#ExporterDefaultHistogramAggregation) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `output_stream` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `temporality_preference` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `default_histogram_aggregation` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -1218,10 +1094,6 @@ No properties. |---|---|---|---| | `service_mapping` | Configure the service mapping for instrumentations following peer.service semantic conventions.
See peer.service semantic conventions: https://opentelemetry.io/docs/specs/semconv/general/attributes/#general-remote-service-attributes
| `array` of [`ExperimentalPeerServiceMapping`](#ExperimentalPeerServiceMapping) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `service_mapping` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -1247,11 +1119,6 @@ No properties. | `peer` | The IP address to map.
| `string` | `true` | | `service` | The logical name corresponding to the IP address of .peer.
| `string` | `true` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `peer` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `service` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -1285,15 +1152,6 @@ No properties. | `without_scope_info` | Configure Prometheus Exporter to produce metrics without a scope info metric.
If omitted or null, false is used.
| One of:
* `boolean`
* `null`
| `false` | | `with_resource_constant_labels` | Configure Prometheus Exporter to add resource attributes as metrics attributes, where the resource attribute keys match the patterns. | [`IncludeExclude`](#IncludeExclude) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `host` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `port` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `without_units` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `without_type_suffix` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `without_scope_info` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `with_resource_constant_labels` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -1349,11 +1207,6 @@ No properties. | `attributes` | Configure attributes provided by resource detectors. | [`IncludeExclude`](#IncludeExclude) | `false` | | `detectors` | Configure resource detectors.
Resource detector names are dependent on the SDK language ecosystem. Please consult documentation for each respective language.
If omitted or null, no resource detectors are enabled.
| `array` of [`ExperimentalResourceDetector`](#ExperimentalResourceDetector) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `attributes` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `detectors` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -1405,10 +1258,6 @@ No properties. |---|---|---|---| | `disabled` | Configure if the tracer is enabled or not. | One of:
* `boolean`
| `true` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `disabled` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -1438,11 +1287,6 @@ No properties. | `default_config` | Configure the default tracer config used there is no matching entry in .tracer_configurator/development.tracers. | [`ExperimentalTracerConfig`](#ExperimentalTracerConfig) | `false` | | `tracers` | Configure tracers. | `array` of [`ExperimentalTracerMatcherAndConfig`](#ExperimentalTracerMatcherAndConfig) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `default_config` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `tracers` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -1473,11 +1317,6 @@ No properties. | `name` | Configure tracer names to match, evaluated as follows:

* If the tracer name exactly matches.
* If the tracer name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
| One of:
* `string`
| `true` | | `config` | The tracer config. | [`ExperimentalTracerConfig`](#ExperimentalTracerConfig) | `true` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `name` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `config` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -1511,11 +1350,6 @@ No properties. | `boundaries` | Configure bucket boundaries.
If omitted, [0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, 7500, 10000] is used.
| `array` of [`number`](#number) | `false` | | `record_min_max` | Configure record min and max.
If omitted or null, true is used.
| One of:
* `boolean`
* `null`
| `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `boundaries` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `record_min_max` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -1591,11 +1425,6 @@ No properties. | `included` | Configure list of value patterns to include.
Values are evaluated to match as follows:
* If the value exactly matches.
* If the value matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
If omitted, all values are included.
| `array` of [`string`](#string) | `false` | | `excluded` | Configure list of value patterns to exclude. Applies after .included (i.e. excluded has higher priority than included).
Values are evaluated to match as follows:
* If the value exactly matches.
* If the value matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
If omitted, .included attributes are included.
| `array` of [`string`](#string) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `included` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `excluded` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -1670,12 +1499,6 @@ No properties. | `interval` | TODO | One of:
* `integer`
* `null`
| `false` | | `initial_sampler` | TODO | [`Sampler`](#Sampler) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `endpoint` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `interval` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `initial_sampler` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -1732,12 +1555,6 @@ No properties. | `limits` | Configure log record limits. See also attribute_limits. | [`LogRecordLimits`](#LogRecordLimits) | `false` | | `logger_configurator/development` | Configure loggers.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalLoggerConfigurator`](#ExperimentalLoggerConfigurator) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `processors` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `limits` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `logger_configurator/development` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -1946,13 +1763,6 @@ No properties. | `otlp_file/development` | Configure exporter to be OTLP with file transport.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalOtlpFileExporter`](#ExperimentalOtlpFileExporter) | `false` | | `console` | Configure exporter to be console. | [`ConsoleExporter`](#ConsoleExporter) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `otlp_http` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `otlp_grpc` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `otlp_file/development` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `console` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -1994,11 +1804,6 @@ No properties. | `attribute_value_length_limit` | Configure max attribute value size. Overrides .attribute_limits.attribute_value_length_limit.
Value must be non-negative.
If omitted or null, there is no limit.
| One of:
* `integer`
* `null`
| `false` | | `attribute_count_limit` | Configure max attribute count. Overrides .attribute_limits.attribute_count_limit.
Value must be non-negative.
If omitted or null, 128 is used.
| One of:
* `integer`
* `null`
| `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `attribute_value_length_limit` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `attribute_count_limit` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -2032,11 +1837,6 @@ No properties. | `batch` | Configure a batch log record processor. | [`BatchLogRecordProcessor`](#BatchLogRecordProcessor) | `false` | | `simple` | Configure a simple log record processor. | [`SimpleLogRecordProcessor`](#SimpleLogRecordProcessor) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `batch` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `simple` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -2073,13 +1873,6 @@ No properties. | `exemplar_filter` | Configure the exemplar filter.
Values include: trace_based, always_on, always_off. For behavior of values see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#metrics-sdk-configuration.
If omitted or null, trace_based is used.
| [`ExemplarFilter`](#ExemplarFilter) | `false` | | `meter_configurator/development` | Configure meters.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalMeterConfigurator`](#ExperimentalMeterConfigurator) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `readers` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `views` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `exemplar_filter` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `meter_configurator/development` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -2808,10 +2601,6 @@ No properties. |---|---|---|---| | `opencensus` | Configure metric producer to be opencensus. | [`OpenCensusMetricProducer`](#OpenCensusMetricProducer) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `opencensus` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -2844,11 +2633,6 @@ No properties. | `periodic` | Configure a periodic metric reader. | [`PeriodicMetricReader`](#PeriodicMetricReader) | `false` | | `pull` | Configure a pull based metric reader. | [`PullMetricReader`](#PullMetricReader) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `periodic` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `pull` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -2876,11 +2660,6 @@ No properties. | `name` | The name of the pair. | `string` | `true` | | `value` | The value of the pair. | One of:
* `string`
* `null`
| `true` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `name` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `value` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -2938,19 +2717,6 @@ No properties. | `resource` | Configure resource for all signals.
If omitted, the default resource is used.
| [`Resource`](#Resource) | `false` | | `instrumentation/development` | Configure instrumentation.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalInstrumentation`](#ExperimentalInstrumentation) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `file_format` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `disabled` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `log_level` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `attribute_limits` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `logger_provider` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `meter_provider` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `propagator` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `tracer_provider` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `resource` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `instrumentation/development` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -3074,18 +2840,6 @@ No properties. | `timeout` | Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 10000 is used.
| One of:
* `integer`
* `null`
| `false` | | `insecure` | Configure client transport security for the exporter's connection.
Only applicable when .endpoint is provided without http or https scheme. Implementations may choose to ignore .insecure.
If omitted or null, false is used.
| One of:
* `boolean`
* `null`
| `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `endpoint` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `certificate_file` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `client_key_file` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `client_certificate_file` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `headers` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `headers_list` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `compression` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `timeout` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `insecure` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -3172,20 +2926,6 @@ No properties. | `temporality_preference` | Configure temporality preference.
Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, cumulative is used.
| [`ExporterTemporalityPreference`](#ExporterTemporalityPreference) | `false` | | `default_histogram_aggregation` | Configure default histogram aggregation.
Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, explicit_bucket_histogram is used.
| [`ExporterDefaultHistogramAggregation`](#ExporterDefaultHistogramAggregation) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `endpoint` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `certificate_file` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `client_key_file` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `client_certificate_file` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `headers` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `headers_list` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `compression` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `timeout` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `insecure` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `temporality_preference` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `default_histogram_aggregation` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -3296,18 +3036,6 @@ No properties. | `timeout` | Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 10000 is used.
| One of:
* `integer`
* `null`
| `false` | | `encoding` | Configure the encoding used for messages.
Values include: protobuf, json. Implementations may not support json.
If omitted or null, protobuf is used.
| [`OtlpHttpEncoding`](#OtlpHttpEncoding) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `endpoint` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `certificate_file` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `client_key_file` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `client_certificate_file` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `headers` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `headers_list` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `compression` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `timeout` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `encoding` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -3392,21 +3120,6 @@ No properties. | `temporality_preference` | Configure temporality preference.
Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, cumulative is used.
| [`ExporterTemporalityPreference`](#ExporterTemporalityPreference) | `false` | | `default_histogram_aggregation` | Configure default histogram aggregation.
Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, explicit_bucket_histogram is used.
| [`ExporterDefaultHistogramAggregation`](#ExporterDefaultHistogramAggregation) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `endpoint` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `endpoint` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `certificate_file` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `client_key_file` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `client_certificate_file` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `headers` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `headers_list` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `compression` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `timeout` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `encoding` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `temporality_preference` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `default_histogram_aggregation` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -3490,14 +3203,6 @@ No properties. | `local_parent_sampled` | Configure local_parent_sampled sampler.
If omitted or null, always_on is used.
| [`Sampler`](#Sampler) | `false` | | `local_parent_not_sampled` | Configure local_parent_not_sampled sampler.
If omitted or null, always_off is used.
| [`Sampler`](#Sampler) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `root` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `remote_parent_sampled` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `remote_parent_not_sampled` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `local_parent_sampled` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `local_parent_not_sampled` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -3538,14 +3243,6 @@ No properties. | `producers` | Configure metric producers. | `array` of [`MetricProducer`](#MetricProducer) | `false` | | `cardinality_limits` | Configure cardinality limits. | [`CardinalityLimits`](#CardinalityLimits) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `interval` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `timeout` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `exporter` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `producers` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `cardinality_limits` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -3594,11 +3291,6 @@ No properties. | `composite` | Configure the propagators in the composite text map propagator. Entries from .composite_list are appended to the list here with duplicates filtered out.
Built-in propagator keys include: tracecontext, baggage, b3, b3multi, jaeger, ottrace. Known third party keys include: xray.
If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used.
| `array` of [`TextMapPropagator`](#TextMapPropagator) | `false` | | `composite_list` | Configure the propagators in the composite text map propagator. Entries are appended to .composite with duplicates filtered out.
The value is a comma separated list of propagator identifiers matching the format of OTEL_PROPAGATORS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details.
Built-in propagator identifiers include: tracecontext, baggage, b3, b3multi, jaeger, ottrace. Known third party identifiers include: xray.
If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used.
| One of:
* `string`
* `null`
| `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `composite` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `composite_list` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -3708,10 +3400,6 @@ No properties. |---|---|---|---| | `prometheus/development` | Configure exporter to be prometheus.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalPrometheusMetricExporter`](#ExperimentalPrometheusMetricExporter) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `prometheus/development` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -3747,12 +3435,6 @@ No properties. | `producers` | Configure metric producers. | `array` of [`MetricProducer`](#MetricProducer) | `false` | | `cardinality_limits` | Configure cardinality limits. | [`CardinalityLimits`](#CardinalityLimits) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `exporter` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `producers` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `cardinality_limits` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -3789,13 +3471,6 @@ No properties. | `otlp_file/development` | Configure exporter to be OTLP with file transport.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalOtlpFileMetricExporter`](#ExperimentalOtlpFileMetricExporter) | `false` | | `console` | Configure exporter to be console.
| [`ConsoleExporter`](#ConsoleExporter) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `otlp_http` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `otlp_grpc` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `otlp_file/development` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `console` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -3839,13 +3514,6 @@ No properties. | `schema_url` | Configure resource schema URL.
If omitted or null, no schema URL is used.
| One of:
* `string`
* `null`
| `false` | | `attributes_list` | Configure resource attributes. Entries have lower priority than entries from .resource.attributes.
The value is a list of comma separated key-value pairs matching the format of OTEL_RESOURCE_ATTRIBUTES. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details.
If omitted or null, no resource attributes are added.
| One of:
* `string`
* `null`
| `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `attributes` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `detection/development` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `schema_url` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `attributes_list` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -3989,14 +3657,6 @@ No properties. | `parent_based` | Configure sampler to be parent_based. | [`ParentBasedSampler`](#ParentBasedSampler) | `false` | | `trace_id_ratio_based` | Configure sampler to be trace_id_ratio_based. | [`TraceIdRatioBasedSampler`](#TraceIdRatioBasedSampler) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `always_off` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `always_on` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `jaeger_remote` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `parent_based` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `trace_id_ratio_based` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -4040,10 +3700,6 @@ No properties. |---|---|---|---| | `exporter` | Configure exporter. | [`LogRecordExporter`](#LogRecordExporter) | `true` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `exporter` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -4068,10 +3724,6 @@ No properties. |---|---|---|---| | `exporter` | Configure exporter. | [`SpanExporter`](#SpanExporter) | `true` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `exporter` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -4100,14 +3752,6 @@ No properties. | `console` | Configure exporter to be console. | [`ConsoleExporter`](#ConsoleExporter) | `false` | | `zipkin` | Configure exporter to be zipkin. | [`ZipkinSpanExporter`](#ZipkinSpanExporter) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `otlp_http` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `otlp_grpc` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `otlp_file/development` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `console` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `zipkin` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -4156,15 +3800,6 @@ No properties. | `event_attribute_count_limit` | Configure max attributes per span event.
Value must be non-negative.
If omitted or null, 128 is used.
| One of:
* `integer`
* `null`
| `false` | | `link_attribute_count_limit` | Configure max attributes per span link.
Value must be non-negative.
If omitted or null, 128 is used.
| One of:
* `integer`
* `null`
| `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `attribute_value_length_limit` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `attribute_count_limit` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `event_count_limit` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `link_count_limit` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `event_attribute_count_limit` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `link_attribute_count_limit` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -4226,11 +3861,6 @@ No properties. | `batch` | Configure a batch span processor. | [`BatchSpanProcessor`](#BatchSpanProcessor) | `false` | | `simple` | Configure a simple span processor. | [`SimpleSpanProcessor`](#SimpleSpanProcessor) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `batch` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `simple` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -4287,15 +3917,6 @@ No properties. | `jaeger` | Include the jaeger propagator. | [`JaegerPropagator`](#JaegerPropagator) | `false` | | `ottrace` | Include the opentracing propagator. | [`OpenTracingPropagator`](#OpenTracingPropagator) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `tracecontext` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `baggage` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `b3` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `b3multi` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `jaeger` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `ottrace` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -4359,10 +3980,6 @@ No properties. |---|---|---|---| | `ratio` | Configure trace_id_ratio.
If omitted or null, 1.0 is used.
| One of:
* `number`
* `null`
| `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `ratio` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -4393,13 +4010,6 @@ No properties. | `sampler` | Configure the sampler.
If omitted, parent based sampler with a root of always_on is used.
| [`Sampler`](#Sampler) | `false` | | `tracer_configurator/development` | Configure tracers.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalTracerConfigurator`](#ExperimentalTracerConfigurator) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `processors` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `limits` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `sampler` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `tracer_configurator/development` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -4779,11 +4389,6 @@ No properties. | `selector` | Configure view selector.
Selection criteria is additive as described in https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#instrument-selection-criteria.
| [`ViewSelector`](#ViewSelector) | `false` | | `stream` | Configure view stream. | [`ViewStream`](#ViewStream) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `selector` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `stream` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -4813,15 +4418,6 @@ No properties. | `meter_version` | Configure meter version selection criteria.
If omitted or null, all meter versions match.
| One of:
* `string`
* `null`
| `false` | | `meter_schema_url` | Configure meter schema url selection criteria.
If omitted or null, all meter schema URLs match.
| One of:
* `string`
* `null`
| `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `instrument_name` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `instrument_type` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `unit` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `meter_name` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `meter_version` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `meter_schema_url` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -4877,14 +4473,6 @@ No properties. | `aggregation_cardinality_limit` | Configure the aggregation cardinality limit.
If omitted or null, the metric reader's default cardinality limit is used.
| One of:
* `integer`
* `null`
| `false` | | `attribute_keys` | Configure attribute keys retained in the resulting stream(s).
| [`IncludeExclude`](#IncludeExclude) | `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `name` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `description` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `aggregation` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `aggregation_cardinality_limit` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `attribute_keys` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema @@ -4929,11 +4517,6 @@ No properties. | `endpoint` | Configure endpoint.
If omitted or null, http://localhost:9411/api/v2/spans is used.
| One of:
* `string`
* `null`
| `false` | | `timeout` | Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates indefinite.
If omitted or null, 10000 is used.
| One of:
* `integer`
* `null`
| `false` | -| Property |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---| -| `endpoint` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -| `timeout` | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | -
JSON Schema diff --git a/schema.md b/schema.md deleted file mode 100644 index c7756bc1..00000000 --- a/schema.md +++ /dev/null @@ -1,611 +0,0 @@ -### Aggregation - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| base2_exponential_bucket_histogram | Base2ExponentialBucketHistogramAggregation | unknown | | | | | | | | | | | | -| default | DefaultAggregation | unknown | | | | | | | | | | | | -| drop | DropAggregation | unknown | | | | | | | | | | | | -| explicit_bucket_histogram | ExplicitBucketHistogramAggregation | Configure aggregation to be explicit_bucket_histogram. | | | | | | | | | | | | -| last_value | LastValueAggregation | unknown | | | | | | | | | | | | -| sum | SumAggregation | unknown | | | | | | | | | | | | - -### AlwaysOffSampler - -No properties - -### AlwaysOnSampler - -No properties - -### AttributeLimits - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| attribute_count_limit | integer | Configure max attribute count.
Value must be non-negative.
If omitted or null, 128 is used.
| | | | | | | | | | | | -| attribute_value_length_limit | integer | Configure max attribute value size.
Value must be non-negative.
If omitted or null, there is no limit.
| | | | | | | | | | | | - -### AttributeNameValue - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| name | string | unknown | | | | | | | | | | | | -| type | AttributeType | unknown | | | | | | | | | | | | -| value | unknown | unknown | | | | | | | | | | | | - -### AttributeType - -No properties - -### B3MultiPropagator - -No properties - -### B3Propagator - -No properties - -### BaggagePropagator - -No properties - -### Base2ExponentialBucketHistogramAggregation - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| max_scale | integer | unknown | | | | | | | | | | | | -| max_size | integer | unknown | | | | | | | | | | | | -| record_min_max | boolean | unknown | | | | | | | | | | | | - -### BatchLogRecordProcessor - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| export_timeout | integer | Configure maximum allowed time (in milliseconds) to export data.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 30000 is used.
| | | | | | | | | | | | -| exporter | LogRecordExporter | Configure exporter. | | | | | | | | | | | | -| max_export_batch_size | integer | Configure maximum batch size. Value must be positive.
If omitted or null, 512 is used.
| | | | | | | | | | | | -| max_queue_size | integer | Configure maximum queue size. Value must be positive.
If omitted or null, 2048 is used.
| | | | | | | | | | | | -| schedule_delay | integer | Configure delay interval (in milliseconds) between two consecutive exports.
Value must be non-negative.
If omitted or null, 1000 is used.
| | | | | | | | | | | | - -### BatchSpanProcessor - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| export_timeout | integer | Configure maximum allowed time (in milliseconds) to export data.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 30000 is used.
| | | | | | | | | | | | -| exporter | SpanExporter | Configure exporter. | | | | | | | | | | | | -| max_export_batch_size | integer | Configure maximum batch size. Value must be positive.
If omitted or null, 512 is used.
| | | | | | | | | | | | -| max_queue_size | integer | Configure maximum queue size. Value must be positive.
If omitted or null, 2048 is used.
| | | | | | | | | | | | -| schedule_delay | integer | Configure delay interval (in milliseconds) between two consecutive exports.
Value must be non-negative.
If omitted or null, 5000 is used.
| | | | | | | | | | | | - -### CardinalityLimits - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| counter | integer | Configure default cardinality limit for counter instruments.
If omitted or null, the value from .default is used.
| | | | | | | | | | | | -| default | integer | Configure default cardinality limit for all instrument types.
Instrument-specific cardinality limits take priority.
If omitted or null, 2000 is used.
| | | | | | | | | | | | -| gauge | integer | Configure default cardinality limit for gauge instruments.
If omitted or null, the value from .default is used.
| | | | | | | | | | | | -| histogram | integer | Configure default cardinality limit for histogram instruments.
If omitted or null, the value from .default is used.
| | | | | | | | | | | | -| observable_counter | integer | Configure default cardinality limit for observable_counter instruments.
If omitted or null, the value from .default is used.
| | | | | | | | | | | | -| observable_gauge | integer | Configure default cardinality limit for observable_gauge instruments.
If omitted or null, the value from .default is used.
| | | | | | | | | | | | -| observable_up_down_counter | integer | Configure default cardinality limit for observable_up_down_counter instruments.
If omitted or null, the value from .default is used.
| | | | | | | | | | | | -| up_down_counter | integer | Configure default cardinality limit for up_down_counter instruments.
If omitted or null, the value from .default is used.
| | | | | | | | | | | | - -### ConsoleExporter - -No properties - -### DefaultAggregation - -No properties - -### DropAggregation - -No properties - -### ExemplarFilter - -No properties - -### ExperimentalGeneralInstrumentation - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| http | ExperimentalHttpInstrumentation | Configure instrumentations following the http semantic conventions.
See http semantic conventions: https://opentelemetry.io/docs/specs/semconv/http/
| | | | | | | | | | | | -| peer | ExperimentalPeerInstrumentation | Configure instrumentations following the peer semantic conventions.
See peer semantic conventions: https://opentelemetry.io/docs/specs/semconv/attributes-registry/peer/
| | | | | | | | | | | | - -### ExperimentalHttpInstrumentation - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| client | object | Configure instrumentations following the http client semantic conventions. | | | | | | | | | | | | -| server | object | Configure instrumentations following the http server semantic conventions. | | | | | | | | | | | | - -### ExperimentalInstrumentation - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| cpp | ExperimentalLanguageSpecificInstrumentation | Configure C++ language-specific instrumentation libraries. | | | | | | | | | | | | -| dotnet | ExperimentalLanguageSpecificInstrumentation | Configure .NET language-specific instrumentation libraries. | | | | | | | | | | | | -| erlang | ExperimentalLanguageSpecificInstrumentation | Configure Erlang language-specific instrumentation libraries. | | | | | | | | | | | | -| general | ExperimentalGeneralInstrumentation | Configure general SemConv options that may apply to multiple languages and instrumentations.
Instrumenation may merge general config options with the language specific configuration at .instrumentation..
| | | | | | | | | | | | -| go | ExperimentalLanguageSpecificInstrumentation | Configure Go language-specific instrumentation libraries. | | | | | | | | | | | | -| java | ExperimentalLanguageSpecificInstrumentation | Configure Java language-specific instrumentation libraries. | | | | | | | | | | | | -| js | ExperimentalLanguageSpecificInstrumentation | Configure JavaScript language-specific instrumentation libraries. | | | | | | | | | | | | -| php | ExperimentalLanguageSpecificInstrumentation | Configure PHP language-specific instrumentation libraries. | | | | | | | | | | | | -| python | ExperimentalLanguageSpecificInstrumentation | Configure Python language-specific instrumentation libraries. | | | | | | | | | | | | -| ruby | ExperimentalLanguageSpecificInstrumentation | Configure Ruby language-specific instrumentation libraries. | | | | | | | | | | | | -| rust | ExperimentalLanguageSpecificInstrumentation | Configure Rust language-specific instrumentation libraries. | | | | | | | | | | | | -| swift | ExperimentalLanguageSpecificInstrumentation | Configure Swift language-specific instrumentation libraries. | | | | | | | | | | | | - -### ExperimentalLanguageSpecificInstrumentation - -No properties - -### ExperimentalLoggerConfig - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| disabled | boolean | Configure if the logger is enabled or not. | | | | | | | | | | | | - -### ExperimentalLoggerConfigurator - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| default_config | ExperimentalLoggerConfig | Configure the default logger config used there is no matching entry in .logger_configurator/development.loggers. | | | | | | | | | | | | -| loggers | ExperimentalLoggerMatcherAndConfig[] | Configure loggers. | | | | | | | | | | | | - -### ExperimentalLoggerMatcherAndConfig - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| config | ExperimentalLoggerConfig | The logger config. | | | | | | | | | | | | -| name | string | Configure logger names to match, evaluated as follows:

* If the logger name exactly matches.
* If the logger name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
| | | | | | | | | | | | - -### ExperimentalMeterConfig - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| disabled | boolean | Configure if the meter is enabled or not. | | | | | | | | | | | | - -### ExperimentalMeterConfigurator - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| default_config | ExperimentalMeterConfig | Configure the default meter config used there is no matching entry in .meter_configurator/development.meters. | | | | | | | | | | | | -| meters | ExperimentalMeterMatcherAndConfig[] | Configure meters. | | | | | | | | | | | | - -### ExperimentalMeterMatcherAndConfig - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| config | ExperimentalMeterConfig | The meter config. | | | | | | | | | | | | -| name | string | Configure meter names to match, evaluated as follows:

* If the meter name exactly matches.
* If the meter name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
| | | | | | | | | | | | - -### ExperimentalOtlpFileExporter - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| output_stream | string | unknown | | | | | | | | | | | | - -### ExperimentalOtlpFileMetricExporter - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| default_histogram_aggregation | ExporterDefaultHistogramAggregation | unknown | | | | | | | | | | | | -| output_stream | string | unknown | | | | | | | | | | | | -| temporality_preference | ExporterTemporalityPreference | unknown | | | | | | | | | | | | - -### ExperimentalPeerInstrumentation - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| service_mapping | object[] | unknown | | | | | | | | | | | | - -### ExperimentalPrometheusMetricExporter - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| host | string | Configure host.
If omitted or null, localhost is used.
| | | | | | | | | | | | -| port | integer | Configure port.
If omitted or null, 9464 is used.
| | | | | | | | | | | | -| with_resource_constant_labels | IncludeExclude | Configure Prometheus Exporter to add resource attributes as metrics attributes. | | | | | | | | | | | | -| without_scope_info | boolean | Configure Prometheus Exporter to produce metrics without a scope info metric.
If omitted or null, false is used.
| | | | | | | | | | | | -| without_type_suffix | boolean | Configure Prometheus Exporter to produce metrics without a type suffix.
If omitted or null, false is used.
| | | | | | | | | | | | -| without_units | boolean | Configure Prometheus Exporter to produce metrics without a unit suffix or UNIT metadata.
If omitted or null, false is used.
| | | | | | | | | | | | - -### ExperimentalResourceDetection - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| attributes | IncludeExclude | Configure attributes provided by resource detectors. | | | | | | | | | | | | -| detectors | ExperimentalResourceDetector[] | Configure resource detectors.
Resource detector names are dependent on the SDK language ecosystem. Please consult documentation for each respective language.
If omitted or null, no resource detectors are enabled.
| | | | | | | | | | | | - -### ExperimentalResourceDetector - -No properties - -### ExperimentalTracerConfig - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| disabled | boolean | Configure if the tracer is enabled or not. | | | | | | | | | | | | - -### ExperimentalTracerConfigurator - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| default_config | ExperimentalTracerConfig | Configure the default tracer config used there is no matching entry in .tracer_configurator/development.tracers. | | | | | | | | | | | | -| tracers | ExperimentalTracerMatcherAndConfig[] | Configure tracers. | | | | | | | | | | | | - -### ExperimentalTracerMatcherAndConfig - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| config | ExperimentalTracerConfig | The tracer config. | | | | | | | | | | | | -| name | string | Configure tracer names to match, evaluated as follows:

* If the tracer name exactly matches.
* If the tracer name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
| | | | | | | | | | | | - -### ExplicitBucketHistogramAggregation - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| boundaries | number[] | Configure bucket boundaries.
If omitted, [0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, 7500, 10000] is used.
| | | | | | | | | | | | -| record_min_max | boolean | Configure record min and max.
If omitted or null, true is used.
| | | | | | | | | | | | - -### ExporterDefaultHistogramAggregation - -No properties - -### ExporterTemporalityPreference - -No properties - -### IncludeExclude - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| excluded | string[] | Configure list of attribute key patterns to exclude from resource detectors. Applies after .resource.detectors.attributes.included (i.e. excluded has higher priority than included).
Attribute keys from resource detectors are evaluated to match as follows:
* If the value of the attribute key exactly matches.
* If the value of the attribute key matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
If omitted, .included attributes are included.
| | | | | | | | | | | | -| included | string[] | Configure list of attribute key patterns to include from resource detectors.
Attribute keys from resource detectors are evaluated to match as follows:
* If the value of the attribute key exactly matches.
* If the value of the attribute key matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
If omitted, all attributes are included.
| | | | | | | | | | | | - -### InstrumentType - -No properties - -### JaegerPropagator - -No properties - -### JaegerRemoteSampler - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| endpoint | string | unknown | | | | | | | | | | | | -| initial_sampler | Sampler | unknown | | | | | | | | | | | | -| interval | integer | unknown | | | | | | | | | | | | - -### LastValueAggregation - -No properties - -### LogRecordExporter - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| console | ConsoleExporter | Configure exporter to be console. | | | | | | | | | | | | -| otlp_file/development | ExperimentalOtlpFileExporter | Configure exporter to be OTLP with file transport.
This type is in development and subject to breaking changes in minor versions.
| | | | | | | | | | | | -| otlp_grpc | OtlpGrpcExporter | Configure exporter to be OTLP with gRPC transport. | | | | | | | | | | | | -| otlp_http | OtlpHttpExporter | Configure exporter to be OTLP with HTTP transport. | | | | | | | | | | | | - -### LogRecordLimits - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| attribute_count_limit | integer | Configure max attribute count. Overrides .attribute_limits.attribute_count_limit.
Value must be non-negative.
If omitted or null, 128 is used.
| | | | | | | | | | | | -| attribute_value_length_limit | integer | Configure max attribute value size. Overrides .attribute_limits.attribute_value_length_limit.
Value must be non-negative.
If omitted or null, there is no limit.
| | | | | | | | | | | | - -### LogRecordProcessor - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| batch | BatchLogRecordProcessor | Configure a batch log record processor. | | | | | | | | | | | | -| simple | SimpleLogRecordProcessor | Configure a simple log record processor. | | | | | | | | | | | | - -### LoggerProvider - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| limits | LogRecordLimits | Configure log record limits. See also attribute_limits. | | | | | | | | | | | | -| logger_configurator/development | ExperimentalLoggerConfigurator | Configure loggers.
This type is in development and subject to breaking changes in minor versions.
| | | | | | | | | | | | -| processors | LogRecordProcessor[] | Configure log record processors. | | | | | | | | | | | | - -### MeterProvider - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| exemplar_filter | ExemplarFilter | Configure the exemplar filter.
Values include: trace_based, always_on, always_off. For behavior of values see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#metrics-sdk-configuration.
If omitted or null, trace_based is used.
| | | | | | | | | | | | -| meter_configurator/development | ExperimentalMeterConfigurator | Configure meters.
This type is in development and subject to breaking changes in minor versions.
| | | | | | | | | | | | -| readers | MetricReader[] | Configure metric readers. | | | | | | | | | | | | -| views | View[] | Configure views.
Each view has a selector which determines the instrument(s) it applies to, and a configuration for the resulting stream(s).
| | | | | | | | | | | | - -### MetricProducer - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| opencensus | OpenCensusMetricProducer | Configure metric producer to be opencensus. | | | | | | | | | | | | - -### MetricReader - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| periodic | PeriodicMetricReader | Configure a periodic metric reader. | | | | | | | | | | | | -| pull | PullMetricReader | Configure a pull based metric reader. | | | | | | | | | | | | - -### NameStringValuePair - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| name | string | unknown | | | | | | | | | | | | -| value | string | unknown | | | | | | | | | | | | - -### OpenCensusMetricProducer - -No properties - -### OpenTelemetryConfiguration - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| attribute_limits | AttributeLimits | Configure general attribute limits. See also tracer_provider.limits, logger_provider.limits. | | | | | | | | | | | | -| disabled | boolean | Configure if the SDK is disabled or not.
If omitted or null, false is used.
| | | | | | | | | | | | -| file_format | string | The file format version.
The yaml format is documented at
https://github.com/open-telemetry/opentelemetry-configuration/tree/main/schema
| | | | | | | | | | | | -| instrumentation/development | ExperimentalInstrumentation | Configure instrumentation.
This type is in development and subject to breaking changes in minor versions.
| | | | | | | | | | | | -| log_level | string | Configure the log level of the internal logger used by the SDK.
If omitted, info is used.
| | | | | | | | | | | | -| logger_provider | LoggerProvider | Configure logger provider.
If omitted, a noop logger provider is used.
| | | | | | | | | | | | -| meter_provider | MeterProvider | Configure meter provider.
If omitted, a noop meter provider is used.
| | | | | | | | | | | | -| propagator | Propagator | Configure text map context propagators.
If omitted, a noop propagator is used.
| | | | | | | | | | | | -| resource | Resource | Configure resource for all signals.
If omitted, the default resource is used.
| | | | | | | | | | | | -| tracer_provider | TracerProvider | Configure tracer provider.
If omitted, a noop tracer provider is used.
| | | | | | | | | | | | - -### OpenTracingPropagator - -No properties - -### OtlpGrpcExporter - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| certificate_file | string | unknown | | | | | | | | | | | | -| client_certificate_file | string | unknown | | | | | | | | | | | | -| client_key_file | string | unknown | | | | | | | | | | | | -| compression | string | unknown | | | | | | | | | | | | -| endpoint | string | Configure endpoint.
If omitted or null, http://localhost:4317 is used.
| | | | | | | | | | | | -| headers | NameStringValuePair[] | unknown | | | | | | | | | | | | -| headers_list | string | unknown | | | | | | | | | | | | -| insecure | boolean | Configure client transport security for the exporter's connection.
Only applicable when .endpoint is provided without http or https scheme. Implementations may choose to ignore .insecure.
If omitted or null, false is used.
| | | | | | | | | | | | -| timeout | integer | unknown | | | | | | | | | | | | - -### OtlpGrpcMetricExporter - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| certificate_file | string | unknown | | | | | | | | | | | | -| client_certificate_file | string | unknown | | | | | | | | | | | | -| client_key_file | string | unknown | | | | | | | | | | | | -| compression | string | unknown | | | | | | | | | | | | -| default_histogram_aggregation | ExporterDefaultHistogramAggregation | unknown | | | | | | | | | | | | -| endpoint | string | unknown | | | | | | | | | | | | -| headers | NameStringValuePair[] | unknown | | | | | | | | | | | | -| headers_list | string | unknown | | | | | | | | | | | | -| insecure | boolean | unknown | | | | | | | | | | | | -| temporality_preference | ExporterTemporalityPreference | unknown | | | | | | | | | | | | -| timeout | integer | unknown | | | | | | | | | | | | - -### OtlpHttpEncoding - -No properties - -### OtlpHttpExporter - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| certificate_file | string | unknown | | | | | | | | | | | | -| client_certificate_file | string | unknown | | | | | | | | | | | | -| client_key_file | string | unknown | | | | | | | | | | | | -| compression | string | unknown | | | | | | | | | | | | -| encoding | OtlpHttpEncoding | Configure the encoding used for messages.
Values include: protobuf, json. Implementations may not support json.
If omitted or null, protobuf is used.
| | | | | | | | | | | | -| endpoint | string | unknown | | | | | | | | | | | | -| headers | NameStringValuePair[] | unknown | | | | | | | | | | | | -| headers_list | string | unknown | | | | | | | | | | | | -| timeout | integer | unknown | | | | | | | | | | | | - -### OtlpHttpMetricExporter - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| certificate_file | string | unknown | | | | | | | | | | | | -| client_certificate_file | string | unknown | | | | | | | | | | | | -| client_key_file | string | unknown | | | | | | | | | | | | -| compression | string | unknown | | | | | | | | | | | | -| default_histogram_aggregation | ExporterDefaultHistogramAggregation | unknown | | | | | | | | | | | | -| encoding | OtlpHttpEncoding | unknown | | | | | | | | | | | | -| endpoint | string | Configure endpoint, including the metric specific path.
If omitted or null, http://localhost:4318/v1/metrics is used.
| | | | | | | | | | | | -| headers | NameStringValuePair[] | unknown | | | | | | | | | | | | -| headers_list | string | unknown | | | | | | | | | | | | -| temporality_preference | ExporterTemporalityPreference | unknown | | | | | | | | | | | | -| timeout | integer | unknown | | | | | | | | | | | | - -### ParentBasedSampler - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| local_parent_not_sampled | Sampler | unknown | | | | | | | | | | | | -| local_parent_sampled | Sampler | unknown | | | | | | | | | | | | -| remote_parent_not_sampled | Sampler | unknown | | | | | | | | | | | | -| remote_parent_sampled | Sampler | unknown | | | | | | | | | | | | -| root | Sampler | unknown | | | | | | | | | | | | - -### PeriodicMetricReader - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| cardinality_limits | CardinalityLimits | Configure cardinality limits. | | | | | | | | | | | | -| exporter | PushMetricExporter | Configure exporter. | | | | | | | | | | | | -| interval | integer | Configure delay interval (in milliseconds) between start of two consecutive exports.
Value must be non-negative.
If omitted or null, 60000 is used.
| | | | | | | | | | | | -| producers | MetricProducer[] | Configure metric producers. | | | | | | | | | | | | -| timeout | integer | Configure maximum allowed time (in milliseconds) to export data.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 30000 is used.
| | | | | | | | | | | | - -### Propagator - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| composite | TextMapPropagator[] | Configure the propagators in the composite text map propagator. Entries from .composite_list are appended to the list here with duplicates filtered out.
Built-in propagator keys include: tracecontext, baggage, b3, b3multi, jaeger, ottrace. Known third party keys include: xray.
If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used.
| | | | | | | | | | | | -| composite_list | string | Configure the propagators in the composite text map propagator. Entries are appended to .composite with duplicates filtered out.
The value is a comma separated list of propagator identifiers matching the format of OTEL_PROPAGATORS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details.
Built-in propagator identifiers include: tracecontext, baggage, b3, b3multi, jaeger, ottrace. Known third party identifiers include: xray.
If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used.
| | | | | | | | | | | | - -### PullMetricExporter - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| prometheus/development | ExperimentalPrometheusMetricExporter | unknown | | | | | | | | | | | | - -### PullMetricReader - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| cardinality_limits | CardinalityLimits | Configure cardinality limits. | | | | | | | | | | | | -| exporter | PullMetricExporter | Configure exporter. | | | | | | | | | | | | -| producers | MetricProducer[] | Configure metric producers. | | | | | | | | | | | | - -### PushMetricExporter - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| console | ConsoleExporter | unknown | | | | | | | | | | | | -| otlp_file/development | ExperimentalOtlpFileMetricExporter | unknown | | | | | | | | | | | | -| otlp_grpc | OtlpGrpcMetricExporter | unknown | | | | | | | | | | | | -| otlp_http | OtlpHttpMetricExporter | unknown | | | | | | | | | | | | - -### Resource - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| attributes | AttributeNameValue[] | Configure resource attributes. Entries have higher priority than entries from .resource.attributes_list.
Entries must contain .name and .value, and may optionally include .type. If an entry's .type omitted or null, string is used.
The .value's type must match the .type. Values for .type include: string, bool, int, double, string_array, bool_array, int_array, double_array.
| | | | | | | | | | | | -| attributes_list | string | Configure resource attributes. Entries have lower priority than entries from .resource.attributes.
The value is a list of comma separated key-value pairs matching the format of OTEL_RESOURCE_ATTRIBUTES. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details.
If omitted or null, no resource attributes are added.
| | | | | | | | | | | | -| detection/development | ExperimentalResourceDetection | Configure resource detection.
This type is in development and subject to breaking changes in minor versions.
If omitted or null, resource detection is disabled.
| | | | | | | | | | | | -| schema_url | string | Configure resource schema URL.
If omitted or null, no schema URL is used.
| | | | | | | | | | | | - -### Sampler - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| always_off | AlwaysOffSampler | Configure sampler to be always_off. | | | | | | | | | | | | -| always_on | AlwaysOnSampler | Configure sampler to be always_on. | | | | | | | | | | | | -| jaeger_remote | JaegerRemoteSampler | unknown | | | | | | | | | | | | -| parent_based | ParentBasedSampler | Configure sampler to be parent_based. | | | | | | | | | | | | -| trace_id_ratio_based | TraceIdRatioBasedSampler | Configure sampler to be trace_id_ratio_based. | | | | | | | | | | | | - -### SimpleLogRecordProcessor - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| exporter | LogRecordExporter | Configure exporter. | | | | | | | | | | | | - -### SimpleSpanProcessor - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| exporter | SpanExporter | Configure exporter. | | | | | | | | | | | | - -### SpanExporter - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| console | ConsoleExporter | Configure exporter to be console. | | | | | | | | | | | | -| otlp_file/development | ExperimentalOtlpFileExporter | Configure exporter to be OTLP with file transport.
This type is in development and subject to breaking changes in minor versions.
| | | | | | | | | | | | -| otlp_grpc | OtlpGrpcExporter | Configure exporter to be OTLP with gRPC transport. | | | | | | | | | | | | -| otlp_http | OtlpHttpExporter | Configure exporter to be OTLP with HTTP transport. | | | | | | | | | | | | -| zipkin | ZipkinSpanExporter | Configure exporter to be zipkin. | | | | | | | | | | | | - -### SpanLimits - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| attribute_count_limit | integer | Configure max attribute count. Overrides .attribute_limits.attribute_count_limit.
Value must be non-negative.
If omitted or null, 128 is used.
| | | | | | | | | | | | -| attribute_value_length_limit | integer | Configure max attribute value size. Overrides .attribute_limits.attribute_value_length_limit.
Value must be non-negative.
If omitted or null, there is no limit.
| | | | | | | | | | | | -| event_attribute_count_limit | integer | Configure max attributes per span event.
Value must be non-negative.
If omitted or null, 128 is used.
| | | | | | | | | | | | -| event_count_limit | integer | Configure max span event count.
Value must be non-negative.
If omitted or null, 128 is used.
| | | | | | | | | | | | -| link_attribute_count_limit | integer | Configure max attributes per span link.
Value must be non-negative.
If omitted or null, 128 is used.
| | | | | | | | | | | | -| link_count_limit | integer | Configure max span link count.
Value must be non-negative.
If omitted or null, 128 is used.
| | | | | | | | | | | | - -### SpanProcessor - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| batch | BatchSpanProcessor | Configure a batch span processor. | | | | | | | | | | | | -| simple | SimpleSpanProcessor | Configure a simple span processor. | | | | | | | | | | | | - -### SumAggregation - -No properties - -### TextMapPropagator - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| b3 | B3Propagator | Include the zipkin b3 propagator. | | | | | | | | | | | | -| b3multi | B3MultiPropagator | Include the zipkin b3 multi propagator. | | | | | | | | | | | | -| baggage | BaggagePropagator | Include the w3c baggage propagator. | | | | | | | | | | | | -| jaeger | JaegerPropagator | Include the jaeger propagator. | | | | | | | | | | | | -| ottrace | OpenTracingPropagator | Include the opentracing propagator. | | | | | | | | | | | | -| tracecontext | TraceContextPropagator | Include the w3c trace context propagator. | | | | | | | | | | | | - -### TraceContextPropagator - -No properties - -### TraceIdRatioBasedSampler - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| ratio | number | unknown | | | | | | | | | | | | - -### TracerProvider - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| limits | SpanLimits | Configure span limits. See also attribute_limits. | | | | | | | | | | | | -| processors | SpanProcessor[] | Configure span processors. | | | | | | | | | | | | -| sampler | Sampler | Configure the sampler.
If omitted, parent based sampler with a root of always_on is used.
| | | | | | | | | | | | -| tracer_configurator/development | ExperimentalTracerConfigurator | Configure tracers.
This type is in development and subject to breaking changes in minor versions.
| | | | | | | | | | | | - -### View - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| selector | ViewSelector | Configure view selector.
Selection criteria is additive as described in https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#instrument-selection-criteria.
| | | | | | | | | | | | -| stream | ViewStream | Configure view stream. | | | | | | | | | | | | - -### ViewSelector - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| instrument_name | string | Configure instrument name selection criteria.
If omitted or null, all instrument names match.
| | | | | | | | | | | | -| instrument_type | InstrumentType | Configure instrument type selection criteria.
Values include: counter, gauge, histogram, observable_counter, observable_gauge, observable_up_down_counter, up_down_counter.
If omitted or null, all instrument types match.
| | | | | | | | | | | | -| meter_name | string | Configure meter name selection criteria.
If omitted or null, all meter names match.
| | | | | | | | | | | | -| meter_schema_url | string | Configure meter schema url selection criteria.
If omitted or null, all meter schema URLs match.
| | | | | | | | | | | | -| meter_version | string | Configure meter version selection criteria.
If omitted or null, all meter versions match.
| | | | | | | | | | | | -| unit | string | Configure the instrument unit selection criteria.
If omitted or null, all instrument units match.
| | | | | | | | | | | | - -### ViewStream - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| aggregation | Aggregation | Configure aggregation of the resulting stream(s).
Values include: default, drop, explicit_bucket_histogram, base2_exponential_bucket_histogram, last_value, sum. For behavior of values see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#aggregation.
If omitted, default is used.
| | | | | | | | | | | | -| aggregation_cardinality_limit | integer | Configure the aggregation cardinality limit.
If omitted or null, the metric reader's default cardinality limit is used.
| | | | | | | | | | | | -| attribute_keys | IncludeExclude | Configure attribute keys retained in the resulting stream(s).
| | | | | | | | | | | | -| description | string | Configure metric description of the resulting stream(s).
If omitted or null, the instrument's origin description is used.
| | | | | | | | | | | | -| name | string | Configure metric name of the resulting stream(s).
If omitted or null, the instrument's original name is used.
| | | | | | | | | | | | - -### ZipkinSpanExporter - -| Property | Type | Description |c++ |c# |erlang |go |java |js |php |python |ruby |rust |swift | -|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| endpoint | string | Configure endpoint.
If omitted or null, http://localhost:9411/api/v2/spans is used.
| | | | | | | | | | | | -| timeout | integer | Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates indefinite.
If omitted or null, 10000 is used.
| | | | | | | | | | | | - diff --git a/scripts/generate-markdown.js b/scripts/generate-markdown.js index 4fe08bd8..344a474f 100644 --- a/scripts/generate-markdown.js +++ b/scripts/generate-markdown.js @@ -1,5 +1,5 @@ import { - readJsonSchemaTypes, resolveJsonSchemaPropertyType, resolveRef + readJsonSchemaTypes, resolveJsonSchemaPropertyType } from "./json-schema.js"; import {readAndFixMetaSchemaTypes} from "./meta-schema.js"; import fs from "node:fs"; @@ -15,29 +15,8 @@ const jsonSchemaTypesByType = {}; readJsonSchemaTypes().forEach(type => jsonSchemaTypesByType[type.type] = type); const output = []; -const languages = ['c++', 'c#', 'erlang', 'go', 'java', 'js', 'php', 'python', 'ruby', 'rust', 'swift'] -function formatJsonSchemaPropertyType(type, prefix, suffix) { - const output = []; - output.push(prefix); - if (type.isOneOf) { - output.push('One of:
'); - type.oneOfTypes.forEach(item => { - output.push(formatJsonSchemaPropertyType(item, '* ', '
')); - }); - return output.join(''); - } - if (type.isSeq) { - output.push('`array` of '); - } - if (type.isScalar) { - output.push(`\`${type.type}\``); - } else { - output.push(`[\`${type.type}\`](#${type.type})`); - } - output.push(suffix); - return output.join(''); -} +output.push('\n\n') types.sort((a, b) => a.type.localeCompare(b.type)); types.forEach(metaSchemaType => { @@ -67,19 +46,7 @@ types.forEach(metaSchemaType => { }); output.push('\n'); - // Property language support table - output.push('| Property |') - languages.forEach(language => output.push(`${language} |`)); - output.push('\n'); - output.push('|---|'); - languages.forEach(language => output.push(`---|`)); - output.push('\n'); - metaSchemaType.properties.forEach(property => { - output.push(`| \`${property.property}\` |`); - languages.forEach(language => output.push(` unknown |`)); - output.push('\n'); - }); - output.push('\n'); + // TODO: print language implementation status } // JSON schema collapsible section @@ -92,3 +59,26 @@ types.forEach(metaSchemaType => { }); fs.writeFileSync(markdownDocPath, output.join("")); + +// Helper functions +function formatJsonSchemaPropertyType(type, prefix, suffix) { + const output = []; + output.push(prefix); + if (type.isOneOf) { + output.push('One of:
'); + type.oneOfTypes.forEach(item => { + output.push(formatJsonSchemaPropertyType(item, '* ', '
')); + }); + return output.join(''); + } + if (type.isSeq) { + output.push('`array` of '); + } + if (type.isScalar) { + output.push(`\`${type.type}\``); + } else { + output.push(`[\`${type.type}\`](#${type.type})`); + } + output.push(suffix); + return output.join(''); +} diff --git a/scripts/json-schema.js b/scripts/json-schema.js index 94231bfc..37f2a2cc 100644 --- a/scripts/json-schema.js +++ b/scripts/json-schema.js @@ -109,8 +109,6 @@ export function resolveJsonSchemaPropertyType(jsonSchemaType, property, jsonSche throw new Error(`Unable to resolve types of property ${property}: ${JSON.stringify(jsonSchemaType)}.`) } -const scalarTypes = ['boolean', 'string', 'null', 'integer', 'number']; - export class JsonSchemaPropertyType { type; isScalar; diff --git a/scripts/meta-schema.js b/scripts/meta-schema.js index e6788e00..b44d7dd8 100644 --- a/scripts/meta-schema.js +++ b/scripts/meta-schema.js @@ -133,6 +133,7 @@ export class MetaSchemaProperty { export class MetaSchemaType { type; properties; + // TODO: track language implementation status constructor(type, properties) { this.type = type; From 6710343445ca498873d4d91dfa0a1c6f8e4e0df0 Mon Sep 17 00:00:00 2001 From: Jack Berg <34418638+jack-berg@users.noreply.github.com> Date: Sat, 4 Oct 2025 12:09:34 -0400 Subject: [PATCH 15/23] Improve JSON schema representation in meta schema scripts --- schema-docs.md | 204 +++++++++++++++---------------- scripts/generate-descriptions.js | 31 +++-- scripts/generate-markdown.js | 44 +++---- scripts/json-schema.js | 126 ++++++++++--------- 4 files changed, 212 insertions(+), 193 deletions(-) diff --git a/schema-docs.md b/schema-docs.md index 33d1ada5..ad759078 100644 --- a/schema-docs.md +++ b/schema-docs.md @@ -81,8 +81,8 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `attribute_value_length_limit` | Configure max attribute value size.
Value must be non-negative.
If omitted or null, there is no limit.
| One of:
* `integer`
* `null`
| `false` | -| `attribute_count_limit` | Configure max attribute count.
Value must be non-negative.
If omitted or null, 128 is used.
| One of:
* `integer`
* `null`
| `false` | +| `attribute_value_length_limit` | Configure max attribute value size.
Value must be non-negative.
If omitted or null, there is no limit.
| one of:
* `integer`
* `null`
| `false` | +| `attribute_count_limit` | Configure max attribute count.
Value must be non-negative.
If omitted or null, 128 is used.
| one of:
* `integer`
* `null`
| `false` |
JSON Schema @@ -113,7 +113,7 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| | `name` | The attribute name.
| `string` | `true` | -| `value` | The attribute value.
The type of value must match .type.
| One of:
* [`see JSON schema`](#see JSON schema)
| `true` | +| `value` | The attribute value.
The type of value must match .type.
| `oneOf` | `true` | | `type` | The attribute type.
Values include: string, bool, int, double, string_array, bool_array, int_array, double_array.
If omitted or null, string is used.
| [`AttributeType`](#AttributeType) | `false` |
@@ -254,9 +254,9 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `max_scale` | TODO | One of:
* `integer`
* `null`
| `false` | -| `max_size` | TODO | One of:
* `integer`
* `null`
| `false` | -| `record_min_max` | TODO | One of:
* `boolean`
* `null`
| `false` | +| `max_scale` | TODO | one of:
* `integer`
* `null`
| `false` | +| `max_size` | TODO | one of:
* `integer`
* `null`
| `false` | +| `record_min_max` | TODO | one of:
* `boolean`
* `null`
| `false` |
JSON Schema @@ -295,10 +295,10 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `schedule_delay` | Configure delay interval (in milliseconds) between two consecutive exports.
Value must be non-negative.
If omitted or null, 1000 is used.
| One of:
* `integer`
* `null`
| `false` | -| `export_timeout` | Configure maximum allowed time (in milliseconds) to export data.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 30000 is used.
| One of:
* `integer`
* `null`
| `false` | -| `max_queue_size` | Configure maximum queue size. Value must be positive.
If omitted or null, 2048 is used.
| One of:
* `integer`
* `null`
| `false` | -| `max_export_batch_size` | Configure maximum batch size. Value must be positive.
If omitted or null, 512 is used.
| One of:
* `integer`
* `null`
| `false` | +| `schedule_delay` | Configure delay interval (in milliseconds) between two consecutive exports.
Value must be non-negative.
If omitted or null, 1000 is used.
| one of:
* `integer`
* `null`
| `false` | +| `export_timeout` | Configure maximum allowed time (in milliseconds) to export data.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 30000 is used.
| one of:
* `integer`
* `null`
| `false` | +| `max_queue_size` | Configure maximum queue size. Value must be positive.
If omitted or null, 2048 is used.
| one of:
* `integer`
* `null`
| `false` | +| `max_export_batch_size` | Configure maximum batch size. Value must be positive.
If omitted or null, 512 is used.
| one of:
* `integer`
* `null`
| `false` | | `exporter` | Configure exporter. | [`LogRecordExporter`](#LogRecordExporter) | `true` |
@@ -351,10 +351,10 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `schedule_delay` | Configure delay interval (in milliseconds) between two consecutive exports.
Value must be non-negative.
If omitted or null, 5000 is used.
| One of:
* `integer`
* `null`
| `false` | -| `export_timeout` | Configure maximum allowed time (in milliseconds) to export data.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 30000 is used.
| One of:
* `integer`
* `null`
| `false` | -| `max_queue_size` | Configure maximum queue size. Value must be positive.
If omitted or null, 2048 is used.
| One of:
* `integer`
* `null`
| `false` | -| `max_export_batch_size` | Configure maximum batch size. Value must be positive.
If omitted or null, 512 is used.
| One of:
* `integer`
* `null`
| `false` | +| `schedule_delay` | Configure delay interval (in milliseconds) between two consecutive exports.
Value must be non-negative.
If omitted or null, 5000 is used.
| one of:
* `integer`
* `null`
| `false` | +| `export_timeout` | Configure maximum allowed time (in milliseconds) to export data.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 30000 is used.
| one of:
* `integer`
* `null`
| `false` | +| `max_queue_size` | Configure maximum queue size. Value must be positive.
If omitted or null, 2048 is used.
| one of:
* `integer`
* `null`
| `false` | +| `max_export_batch_size` | Configure maximum batch size. Value must be positive.
If omitted or null, 512 is used.
| one of:
* `integer`
* `null`
| `false` | | `exporter` | Configure exporter. | [`SpanExporter`](#SpanExporter) | `true` |
@@ -407,14 +407,14 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `default` | Configure default cardinality limit for all instrument types.
Instrument-specific cardinality limits take priority.
If omitted or null, 2000 is used.
| One of:
* `integer`
* `null`
| `false` | -| `counter` | Configure default cardinality limit for counter instruments.
If omitted or null, the value from .default is used.
| One of:
* `integer`
* `null`
| `false` | -| `gauge` | Configure default cardinality limit for gauge instruments.
If omitted or null, the value from .default is used.
| One of:
* `integer`
* `null`
| `false` | -| `histogram` | Configure default cardinality limit for histogram instruments.
If omitted or null, the value from .default is used.
| One of:
* `integer`
* `null`
| `false` | -| `observable_counter` | Configure default cardinality limit for observable_counter instruments.
If omitted or null, the value from .default is used.
| One of:
* `integer`
* `null`
| `false` | -| `observable_gauge` | Configure default cardinality limit for observable_gauge instruments.
If omitted or null, the value from .default is used.
| One of:
* `integer`
* `null`
| `false` | -| `observable_up_down_counter` | Configure default cardinality limit for observable_up_down_counter instruments.
If omitted or null, the value from .default is used.
| One of:
* `integer`
* `null`
| `false` | -| `up_down_counter` | Configure default cardinality limit for up_down_counter instruments.
If omitted or null, the value from .default is used.
| One of:
* `integer`
* `null`
| `false` | +| `default` | Configure default cardinality limit for all instrument types.
Instrument-specific cardinality limits take priority.
If omitted or null, 2000 is used.
| one of:
* `integer`
* `null`
| `false` | +| `counter` | Configure default cardinality limit for counter instruments.
If omitted or null, the value from .default is used.
| one of:
* `integer`
* `null`
| `false` | +| `gauge` | Configure default cardinality limit for gauge instruments.
If omitted or null, the value from .default is used.
| one of:
* `integer`
* `null`
| `false` | +| `histogram` | Configure default cardinality limit for histogram instruments.
If omitted or null, the value from .default is used.
| one of:
* `integer`
* `null`
| `false` | +| `observable_counter` | Configure default cardinality limit for observable_counter instruments.
If omitted or null, the value from .default is used.
| one of:
* `integer`
* `null`
| `false` | +| `observable_gauge` | Configure default cardinality limit for observable_gauge instruments.
If omitted or null, the value from .default is used.
| one of:
* `integer`
* `null`
| `false` | +| `observable_up_down_counter` | Configure default cardinality limit for observable_up_down_counter instruments.
If omitted or null, the value from .default is used.
| one of:
* `integer`
* `null`
| `false` | +| `up_down_counter` | Configure default cardinality limit for up_down_counter instruments.
If omitted or null, the value from .default is used.
| one of:
* `integer`
* `null`
| `false` |
JSON Schema @@ -619,8 +619,8 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `request_captured_headers` | Configure headers to capture for outbound http requests.
| `array` of [`string`](#string) | `false` | -| `response_captured_headers` | Configure headers to capture for inbound http responses.
| `array` of [`string`](#string) | `false` | +| `request_captured_headers` | Configure headers to capture for outbound http requests.
| `array` of `string` | `false` | +| `response_captured_headers` | Configure headers to capture for inbound http responses.
| `array` of `string` | `false` |
JSON Schema @@ -675,8 +675,8 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `request_captured_headers` | Configure headers to capture for inbound http requests.
| `array` of [`string`](#string) | `false` | -| `response_captured_headers` | Configure headers to capture for outbound http responses.
| `array` of [`string`](#string) | `false` | +| `request_captured_headers` | Configure headers to capture for inbound http requests.
| `array` of `string` | `false` | +| `response_captured_headers` | Configure headers to capture for outbound http responses.
| `array` of `string` | `false` |
JSON Schema @@ -896,7 +896,7 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `disabled` | Configure if the logger is enabled or not. | One of:
* `boolean`
| `false` | +| `disabled` | Configure if the logger is enabled or not. | `boolean` | `false` |
JSON Schema @@ -951,7 +951,7 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `name` | Configure logger names to match, evaluated as follows:

* If the logger name exactly matches.
* If the logger name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
| One of:
* `string`
| `false` | +| `name` | Configure logger names to match, evaluated as follows:

* If the logger name exactly matches.
* If the logger name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
| `string` | `false` | | `config` | The logger config. | [`ExperimentalLoggerConfig`](#ExperimentalLoggerConfig) | `false` |
@@ -980,7 +980,7 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `disabled` | Configure if the meter is enabled or not. | One of:
* `boolean`
| `false` | +| `disabled` | Configure if the meter is enabled or not. | `boolean` | `false` |
JSON Schema @@ -1035,7 +1035,7 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `name` | Configure meter names to match, evaluated as follows:

* If the meter name exactly matches.
* If the meter name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
| One of:
* `string`
| `false` | +| `name` | Configure meter names to match, evaluated as follows:

* If the meter name exactly matches.
* If the meter name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
| `string` | `false` | | `config` | The meter config. | [`ExperimentalMeterConfig`](#ExperimentalMeterConfig) | `false` |
@@ -1064,7 +1064,7 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `output_stream` | Configure output stream.
Values include stdout, or scheme+destination. For example: file:///path/to/file.jsonl.
If omitted or null, stdout is used.
| One of:
* `string`
* `null`
| `false` | +| `output_stream` | Configure output stream.
Values include stdout, or scheme+destination. For example: file:///path/to/file.jsonl.
If omitted or null, stdout is used.
| one of:
* `string`
* `null`
| `false` |
JSON Schema @@ -1091,7 +1091,7 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `output_stream` | Configure output stream.
Values include stdout, or scheme+destination. For example: file:///path/to/file.jsonl.
If omitted or null, stdout is used.
| One of:
* `string`
* `null`
| `false` | +| `output_stream` | Configure output stream.
Values include stdout, or scheme+destination. For example: file:///path/to/file.jsonl.
If omitted or null, stdout is used.
| one of:
* `string`
* `null`
| `false` | | `temporality_preference` | Configure temporality preference.
Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, cumulative is used.
| [`ExporterTemporalityPreference`](#ExporterTemporalityPreference) | `false` | | `default_histogram_aggregation` | Configure default histogram aggregation.
Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, explicit_bucket_histogram is used.
| [`ExporterDefaultHistogramAggregation`](#ExporterDefaultHistogramAggregation) | `false` | @@ -1196,11 +1196,11 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `host` | Configure host.
If omitted or null, localhost is used.
| One of:
* `string`
* `null`
| `false` | -| `port` | Configure port.
If omitted or null, 9464 is used.
| One of:
* `integer`
* `null`
| `false` | -| `without_scope_info` | Configure Prometheus Exporter to produce metrics without a scope info metric.
If omitted or null, false is used.
| One of:
* `boolean`
* `null`
| `false` | +| `host` | Configure host.
If omitted or null, localhost is used.
| one of:
* `string`
* `null`
| `false` | +| `port` | Configure port.
If omitted or null, 9464 is used.
| one of:
* `integer`
* `null`
| `false` | +| `without_scope_info` | Configure Prometheus Exporter to produce metrics without a scope info metric.
If omitted or null, false is used.
| one of:
* `boolean`
* `null`
| `false` | | `with_resource_constant_labels` | Configure Prometheus Exporter to add resource attributes as metrics attributes, where the resource attribute keys match the patterns. | [`IncludeExclude`](#IncludeExclude) | `false` | -| `translation_strategy` | Configure how Prometheus metrics are exposed. Values include:

* UnderscoreEscapingWithSuffixes, the default. This fully escapes metric names for classic Prometheus metric name compatibility, and includes appending type and unit suffixes.
* UnderscoreEscapingWithoutSuffixes, metric names will continue to escape special characters to _, but suffixes won't be attached.
* NoUTF8EscapingWithSuffixes will disable changing special characters to _. Special suffixes like units and _total for counters will be attached.
* NoTranslation. This strategy bypasses all metric and label name translation, passing them through unaltered.

If omitted or null, UnderscoreEscapingWithSuffixes is used.
| One of:
* `string`
* `null`
| `false` | +| `translation_strategy` | Configure how Prometheus metrics are exposed. Values include:

* UnderscoreEscapingWithSuffixes, the default. This fully escapes metric names for classic Prometheus metric name compatibility, and includes appending type and unit suffixes.
* UnderscoreEscapingWithoutSuffixes, metric names will continue to escape special characters to _, but suffixes won't be attached.
* NoUTF8EscapingWithSuffixes will disable changing special characters to _. Special suffixes like units and _total for counters will be attached.
* NoTranslation. This strategy bypasses all metric and label name translation, passing them through unaltered.

If omitted or null, UnderscoreEscapingWithSuffixes is used.
| one of:
* `string`
* `null`
| `false` |
JSON Schema @@ -1342,7 +1342,7 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `disabled` | Configure if the tracer is enabled or not. | One of:
* `boolean`
| `false` | +| `disabled` | Configure if the tracer is enabled or not. | `boolean` | `false` |
JSON Schema @@ -1397,7 +1397,7 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `name` | Configure tracer names to match, evaluated as follows:

* If the tracer name exactly matches.
* If the tracer name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
| One of:
* `string`
| `false` | +| `name` | Configure tracer names to match, evaluated as follows:

* If the tracer name exactly matches.
* If the tracer name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
| `string` | `false` | | `config` | The tracer config. | [`ExperimentalTracerConfig`](#ExperimentalTracerConfig) | `false` |
@@ -1426,8 +1426,8 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `boundaries` | Configure bucket boundaries.
If omitted, [0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, 7500, 10000] is used.
| `array` of [`number`](#number) | `false` | -| `record_min_max` | Configure record min and max.
If omitted or null, true is used.
| One of:
* `boolean`
* `null`
| `false` | +| `boundaries` | Configure bucket boundaries.
If omitted, [0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, 7500, 10000] is used.
| `array` of `number` | `false` | +| `record_min_max` | Configure record min and max.
If omitted or null, true is used.
| one of:
* `boolean`
* `null`
| `false` |
JSON Schema @@ -1501,8 +1501,8 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `included` | Configure list of value patterns to include.
Values are evaluated to match as follows:
* If the value exactly matches.
* If the value matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
If omitted, all values are included.
| `array` of [`string`](#string) | `false` | -| `excluded` | Configure list of value patterns to exclude. Applies after .included (i.e. excluded has higher priority than included).
Values are evaluated to match as follows:
* If the value exactly matches.
* If the value matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
If omitted, .included attributes are included.
| `array` of [`string`](#string) | `false` | +| `included` | Configure list of value patterns to include.
Values are evaluated to match as follows:
* If the value exactly matches.
* If the value matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
If omitted, all values are included.
| `array` of `string` | `false` | +| `excluded` | Configure list of value patterns to exclude. Applies after .included (i.e. excluded has higher priority than included).
Values are evaluated to match as follows:
* If the value exactly matches.
* If the value matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
If omitted, .included attributes are included.
| `array` of `string` | `false` |
JSON Schema @@ -1574,8 +1574,8 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `endpoint` | TODO | One of:
* `string`
* `null`
| `false` | -| `interval` | TODO | One of:
* `integer`
* `null`
| `false` | +| `endpoint` | TODO | one of:
* `string`
* `null`
| `false` | +| `interval` | TODO | one of:
* `integer`
* `null`
| `false` | | `initial_sampler` | TODO | [`Sampler`](#Sampler) | `false` |
@@ -1880,8 +1880,8 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `attribute_value_length_limit` | Configure max attribute value size. Overrides .attribute_limits.attribute_value_length_limit.
Value must be non-negative.
If omitted or null, there is no limit.
| One of:
* `integer`
* `null`
| `false` | -| `attribute_count_limit` | Configure max attribute count. Overrides .attribute_limits.attribute_count_limit.
Value must be non-negative.
If omitted or null, 128 is used.
| One of:
* `integer`
* `null`
| `false` | +| `attribute_value_length_limit` | Configure max attribute value size. Overrides .attribute_limits.attribute_value_length_limit.
Value must be non-negative.
If omitted or null, there is no limit.
| one of:
* `integer`
* `null`
| `false` | +| `attribute_count_limit` | Configure max attribute count. Overrides .attribute_limits.attribute_count_limit.
Value must be non-negative.
If omitted or null, 128 is used.
| one of:
* `integer`
* `null`
| `false` |
JSON Schema @@ -2737,7 +2737,7 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| | `name` | The name of the pair. | `string` | `true` | -| `value` | The value of the pair. | One of:
* `string`
* `null`
| `true` | +| `value` | The value of the pair. | one of:
* `string`
* `null`
| `true` |
JSON Schema @@ -2786,8 +2786,8 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| | `file_format` | The file format version.
The yaml format is documented at
https://github.com/open-telemetry/opentelemetry-configuration/tree/main/schema
| `string` | `true` | -| `disabled` | Configure if the SDK is disabled or not.
If omitted or null, false is used.
| One of:
* `boolean`
* `null`
| `false` | -| `log_level` | Configure the log level of the internal logger used by the SDK.
If omitted, info is used.
| One of:
* `string`
* `null`
| `false` | +| `disabled` | Configure if the SDK is disabled or not.
If omitted or null, false is used.
| one of:
* `boolean`
* `null`
| `false` | +| `log_level` | Configure the log level of the internal logger used by the SDK.
If omitted, info is used.
| one of:
* `string`
* `null`
| `false` | | `attribute_limits` | Configure general attribute limits. See also tracer_provider.limits, logger_provider.limits.
| [`AttributeLimits`](#AttributeLimits) | `false` | | `logger_provider` | Configure logger provider.
If omitted, a noop logger provider is used.
| [`LoggerProvider`](#LoggerProvider) | `false` | | `meter_provider` | Configure meter provider.
If omitted, a noop meter provider is used.
| [`MeterProvider`](#MeterProvider) | `false` | @@ -2909,15 +2909,15 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `endpoint` | Configure endpoint.
If omitted or null, http://localhost:4317 is used.
| One of:
* `string`
* `null`
| `false` | -| `certificate_file` | Configure certificate used to verify a server's TLS credentials.
Absolute path to certificate file in PEM format.
If omitted or null, system default certificate verification is used for secure connections.
| One of:
* `string`
* `null`
| `false` | -| `client_key_file` | Configure mTLS private client key.
Absolute path to client key file in PEM format. If set, .client_certificate must also be set.
If omitted or null, mTLS is not used.
| One of:
* `string`
* `null`
| `false` | -| `client_certificate_file` | Configure mTLS client certificate.
Absolute path to client certificate file in PEM format. If set, .client_key must also be set.
If omitted or null, mTLS is not used.
| One of:
* `string`
* `null`
| `false` | +| `endpoint` | Configure endpoint.
If omitted or null, http://localhost:4317 is used.
| one of:
* `string`
* `null`
| `false` | +| `certificate_file` | Configure certificate used to verify a server's TLS credentials.
Absolute path to certificate file in PEM format.
If omitted or null, system default certificate verification is used for secure connections.
| one of:
* `string`
* `null`
| `false` | +| `client_key_file` | Configure mTLS private client key.
Absolute path to client key file in PEM format. If set, .client_certificate must also be set.
If omitted or null, mTLS is not used.
| one of:
* `string`
* `null`
| `false` | +| `client_certificate_file` | Configure mTLS client certificate.
Absolute path to client certificate file in PEM format. If set, .client_key must also be set.
If omitted or null, mTLS is not used.
| one of:
* `string`
* `null`
| `false` | | `headers` | Configure headers. Entries have higher priority than entries from .headers_list.
If an entry's .value is null, the entry is ignored.
| `array` of [`NameStringValuePair`](#NameStringValuePair) | `false` | -| `headers_list` | Configure headers. Entries have lower priority than entries from .headers.
The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details.
If omitted or null, no headers are added.
| One of:
* `string`
* `null`
| `false` | -| `compression` | Configure compression.
Values include: gzip, none. Implementations may support other compression algorithms.
If omitted or null, none is used.
| One of:
* `string`
* `null`
| `false` | -| `timeout` | Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 10000 is used.
| One of:
* `integer`
* `null`
| `false` | -| `insecure` | Configure client transport security for the exporter's connection.
Only applicable when .endpoint is provided without http or https scheme. Implementations may choose to ignore .insecure.
If omitted or null, false is used.
| One of:
* `boolean`
* `null`
| `false` | +| `headers_list` | Configure headers. Entries have lower priority than entries from .headers.
The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details.
If omitted or null, no headers are added.
| one of:
* `string`
* `null`
| `false` | +| `compression` | Configure compression.
Values include: gzip, none. Implementations may support other compression algorithms.
If omitted or null, none is used.
| one of:
* `string`
* `null`
| `false` | +| `timeout` | Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 10000 is used.
| one of:
* `integer`
* `null`
| `false` | +| `insecure` | Configure client transport security for the exporter's connection.
Only applicable when .endpoint is provided without http or https scheme. Implementations may choose to ignore .insecure.
If omitted or null, false is used.
| one of:
* `boolean`
* `null`
| `false` |
JSON Schema @@ -2993,15 +2993,15 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `endpoint` | Configure endpoint.
If omitted or null, http://localhost:4317 is used.
| One of:
* `string`
* `null`
| `false` | -| `certificate_file` | Configure certificate used to verify a server's TLS credentials.
Absolute path to certificate file in PEM format.
If omitted or null, system default certificate verification is used for secure connections.
| One of:
* `string`
* `null`
| `false` | -| `client_key_file` | Configure mTLS private client key.
Absolute path to client key file in PEM format. If set, .client_certificate must also be set.
If omitted or null, mTLS is not used.
| One of:
* `string`
* `null`
| `false` | -| `client_certificate_file` | Configure mTLS client certificate.
Absolute path to client certificate file in PEM format. If set, .client_key must also be set.
If omitted or null, mTLS is not used.
| One of:
* `string`
* `null`
| `false` | +| `endpoint` | Configure endpoint.
If omitted or null, http://localhost:4317 is used.
| one of:
* `string`
* `null`
| `false` | +| `certificate_file` | Configure certificate used to verify a server's TLS credentials.
Absolute path to certificate file in PEM format.
If omitted or null, system default certificate verification is used for secure connections.
| one of:
* `string`
* `null`
| `false` | +| `client_key_file` | Configure mTLS private client key.
Absolute path to client key file in PEM format. If set, .client_certificate must also be set.
If omitted or null, mTLS is not used.
| one of:
* `string`
* `null`
| `false` | +| `client_certificate_file` | Configure mTLS client certificate.
Absolute path to client certificate file in PEM format. If set, .client_key must also be set.
If omitted or null, mTLS is not used.
| one of:
* `string`
* `null`
| `false` | | `headers` | Configure headers. Entries have higher priority than entries from .headers_list.
If an entry's .value is null, the entry is ignored.
| `array` of [`NameStringValuePair`](#NameStringValuePair) | `false` | -| `headers_list` | Configure headers. Entries have lower priority than entries from .headers.
The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details.
If omitted or null, no headers are added.
| One of:
* `string`
* `null`
| `false` | -| `compression` | Configure compression.
Values include: gzip, none. Implementations may support other compression algorithms.
If omitted or null, none is used.
| One of:
* `string`
* `null`
| `false` | -| `timeout` | Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 10000 is used.
| One of:
* `integer`
* `null`
| `false` | -| `insecure` | Configure client transport security for the exporter's connection.
Only applicable when .endpoint is provided without http or https scheme. Implementations may choose to ignore .insecure.
If omitted or null, false is used.
| One of:
* `boolean`
* `null`
| `false` | +| `headers_list` | Configure headers. Entries have lower priority than entries from .headers.
The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details.
If omitted or null, no headers are added.
| one of:
* `string`
* `null`
| `false` | +| `compression` | Configure compression.
Values include: gzip, none. Implementations may support other compression algorithms.
If omitted or null, none is used.
| one of:
* `string`
* `null`
| `false` | +| `timeout` | Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 10000 is used.
| one of:
* `integer`
* `null`
| `false` | +| `insecure` | Configure client transport security for the exporter's connection.
Only applicable when .endpoint is provided without http or https scheme. Implementations may choose to ignore .insecure.
If omitted or null, false is used.
| one of:
* `boolean`
* `null`
| `false` | | `temporality_preference` | Configure temporality preference.
Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, cumulative is used.
| [`ExporterTemporalityPreference`](#ExporterTemporalityPreference) | `false` | | `default_histogram_aggregation` | Configure default histogram aggregation.
Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, explicit_bucket_histogram is used.
| [`ExporterDefaultHistogramAggregation`](#ExporterDefaultHistogramAggregation) | `false` | @@ -3105,14 +3105,14 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `endpoint` | Configure endpoint, including the signal specific path.
If omitted or null, the http://localhost:4318/v1/{signal} (where signal is 'traces', 'logs', or 'metrics') is used.
| One of:
* `string`
* `null`
| `false` | -| `certificate_file` | Configure certificate used to verify a server's TLS credentials.
Absolute path to certificate file in PEM format.
If omitted or null, system default certificate verification is used for secure connections.
| One of:
* `string`
* `null`
| `false` | -| `client_key_file` | Configure mTLS private client key.
Absolute path to client key file in PEM format. If set, .client_certificate must also be set.
If omitted or null, mTLS is not used.
| One of:
* `string`
* `null`
| `false` | -| `client_certificate_file` | Configure mTLS client certificate.
Absolute path to client certificate file in PEM format. If set, .client_key must also be set.
If omitted or null, mTLS is not used.
| One of:
* `string`
* `null`
| `false` | +| `endpoint` | Configure endpoint, including the signal specific path.
If omitted or null, the http://localhost:4318/v1/{signal} (where signal is 'traces', 'logs', or 'metrics') is used.
| one of:
* `string`
* `null`
| `false` | +| `certificate_file` | Configure certificate used to verify a server's TLS credentials.
Absolute path to certificate file in PEM format.
If omitted or null, system default certificate verification is used for secure connections.
| one of:
* `string`
* `null`
| `false` | +| `client_key_file` | Configure mTLS private client key.
Absolute path to client key file in PEM format. If set, .client_certificate must also be set.
If omitted or null, mTLS is not used.
| one of:
* `string`
* `null`
| `false` | +| `client_certificate_file` | Configure mTLS client certificate.
Absolute path to client certificate file in PEM format. If set, .client_key must also be set.
If omitted or null, mTLS is not used.
| one of:
* `string`
* `null`
| `false` | | `headers` | Configure headers. Entries have higher priority than entries from .headers_list.
If an entry's .value is null, the entry is ignored.
| `array` of [`NameStringValuePair`](#NameStringValuePair) | `false` | -| `headers_list` | Configure headers. Entries have lower priority than entries from .headers.
The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details.
If omitted or null, no headers are added.
| One of:
* `string`
* `null`
| `false` | -| `compression` | Configure compression.
Values include: gzip, none. Implementations may support other compression algorithms.
If omitted or null, none is used.
| One of:
* `string`
* `null`
| `false` | -| `timeout` | Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 10000 is used.
| One of:
* `integer`
* `null`
| `false` | +| `headers_list` | Configure headers. Entries have lower priority than entries from .headers.
The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details.
If omitted or null, no headers are added.
| one of:
* `string`
* `null`
| `false` | +| `compression` | Configure compression.
Values include: gzip, none. Implementations may support other compression algorithms.
If omitted or null, none is used.
| one of:
* `string`
* `null`
| `false` | +| `timeout` | Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 10000 is used.
| one of:
* `integer`
* `null`
| `false` | | `encoding` | Configure the encoding used for messages.
Values include: protobuf, json. Implementations may not support json.
If omitted or null, protobuf is used.
| [`OtlpHttpEncoding`](#OtlpHttpEncoding) | `false` |
@@ -3186,15 +3186,15 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `endpoint` | Configure endpoint, including the signal specific path.
If omitted or null, the http://localhost:4318/v1/{signal} (where signal is 'traces', 'logs', or 'metrics') is used.
| One of:
* `string`
* `null`
| `false` | -| `endpoint` | Configure endpoint.
If omitted or null, http://localhost:4317 is used.
| One of:
* `string`
* `null`
| `false` | -| `certificate_file` | Configure certificate used to verify a server's TLS credentials.
Absolute path to certificate file in PEM format.
If omitted or null, system default certificate verification is used for secure connections.
| One of:
* `string`
* `null`
| `false` | -| `client_key_file` | Configure mTLS private client key.
Absolute path to client key file in PEM format. If set, .client_certificate must also be set.
If omitted or null, mTLS is not used.
| One of:
* `string`
* `null`
| `false` | -| `client_certificate_file` | Configure mTLS client certificate.
Absolute path to client certificate file in PEM format. If set, .client_key must also be set.
If omitted or null, mTLS is not used.
| One of:
* `string`
* `null`
| `false` | +| `endpoint` | Configure endpoint, including the signal specific path.
If omitted or null, the http://localhost:4318/v1/{signal} (where signal is 'traces', 'logs', or 'metrics') is used.
| one of:
* `string`
* `null`
| `false` | +| `endpoint` | Configure endpoint.
If omitted or null, http://localhost:4317 is used.
| one of:
* `string`
* `null`
| `false` | +| `certificate_file` | Configure certificate used to verify a server's TLS credentials.
Absolute path to certificate file in PEM format.
If omitted or null, system default certificate verification is used for secure connections.
| one of:
* `string`
* `null`
| `false` | +| `client_key_file` | Configure mTLS private client key.
Absolute path to client key file in PEM format. If set, .client_certificate must also be set.
If omitted or null, mTLS is not used.
| one of:
* `string`
* `null`
| `false` | +| `client_certificate_file` | Configure mTLS client certificate.
Absolute path to client certificate file in PEM format. If set, .client_key must also be set.
If omitted or null, mTLS is not used.
| one of:
* `string`
* `null`
| `false` | | `headers` | Configure headers. Entries have higher priority than entries from .headers_list.
If an entry's .value is null, the entry is ignored.
| `array` of [`NameStringValuePair`](#NameStringValuePair) | `false` | -| `headers_list` | Configure headers. Entries have lower priority than entries from .headers.
The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details.
If omitted or null, no headers are added.
| One of:
* `string`
* `null`
| `false` | -| `compression` | Configure compression.
Values include: gzip, none. Implementations may support other compression algorithms.
If omitted or null, none is used.
| One of:
* `string`
* `null`
| `false` | -| `timeout` | Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 10000 is used.
| One of:
* `integer`
* `null`
| `false` | +| `headers_list` | Configure headers. Entries have lower priority than entries from .headers.
The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details.
If omitted or null, no headers are added.
| one of:
* `string`
* `null`
| `false` | +| `compression` | Configure compression.
Values include: gzip, none. Implementations may support other compression algorithms.
If omitted or null, none is used.
| one of:
* `string`
* `null`
| `false` | +| `timeout` | Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 10000 is used.
| one of:
* `integer`
* `null`
| `false` | | `encoding` | Configure the encoding used for messages.
Values include: protobuf, json. Implementations may not support json.
If omitted or null, protobuf is used.
| [`OtlpHttpEncoding`](#OtlpHttpEncoding) | `false` | | `temporality_preference` | Configure temporality preference.
Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, cumulative is used.
| [`ExporterTemporalityPreference`](#ExporterTemporalityPreference) | `false` | | `default_histogram_aggregation` | Configure default histogram aggregation.
Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, explicit_bucket_histogram is used.
| [`ExporterDefaultHistogramAggregation`](#ExporterDefaultHistogramAggregation) | `false` | @@ -3316,8 +3316,8 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `interval` | Configure delay interval (in milliseconds) between start of two consecutive exports.
Value must be non-negative.
If omitted or null, 60000 is used.
| One of:
* `integer`
* `null`
| `false` | -| `timeout` | Configure maximum allowed time (in milliseconds) to export data.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 30000 is used.
| One of:
* `integer`
* `null`
| `false` | +| `interval` | Configure delay interval (in milliseconds) between start of two consecutive exports.
Value must be non-negative.
If omitted or null, 60000 is used.
| one of:
* `integer`
* `null`
| `false` | +| `timeout` | Configure maximum allowed time (in milliseconds) to export data.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 30000 is used.
| one of:
* `integer`
* `null`
| `false` | | `exporter` | Configure exporter. | [`PushMetricExporter`](#PushMetricExporter) | `true` | | `producers` | Configure metric producers. | `array` of [`MetricProducer`](#MetricProducer) | `false` | | `cardinality_limits` | Configure cardinality limits. | [`CardinalityLimits`](#CardinalityLimits) | `false` | @@ -3368,7 +3368,7 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| | `composite` | Configure the propagators in the composite text map propagator. Entries from .composite_list are appended to the list here with duplicates filtered out.
Built-in propagator keys include: tracecontext, baggage, b3, b3multi, jaeger, ottrace. Known third party keys include: xray.
If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used.
| `array` of [`TextMapPropagator`](#TextMapPropagator) | `false` | -| `composite_list` | Configure the propagators in the composite text map propagator. Entries are appended to .composite with duplicates filtered out.
The value is a comma separated list of propagator identifiers matching the format of OTEL_PROPAGATORS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details.
Built-in propagator identifiers include: tracecontext, baggage, b3, b3multi, jaeger, ottrace. Known third party identifiers include: xray.
If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used.
| One of:
* `string`
* `null`
| `false` | +| `composite_list` | Configure the propagators in the composite text map propagator. Entries are appended to .composite with duplicates filtered out.
The value is a comma separated list of propagator identifiers matching the format of OTEL_PROPAGATORS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details.
Built-in propagator identifiers include: tracecontext, baggage, b3, b3multi, jaeger, ottrace. Known third party identifiers include: xray.
If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used.
| one of:
* `string`
* `null`
| `false` |
JSON Schema @@ -3590,8 +3590,8 @@ No properties. |---|---|---|---| | `attributes` | Configure resource attributes. Entries have higher priority than entries from .resource.attributes_list.
| `array` of [`AttributeNameValue`](#AttributeNameValue) | `false` | | `detection/development` | Configure resource detection.
This type is in development and subject to breaking changes in minor versions.
If omitted or null, resource detection is disabled.
| [`ExperimentalResourceDetection`](#ExperimentalResourceDetection) | `false` | -| `schema_url` | Configure resource schema URL.
If omitted or null, no schema URL is used.
| One of:
* `string`
* `null`
| `false` | -| `attributes_list` | Configure resource attributes. Entries have lower priority than entries from .resource.attributes.
The value is a list of comma separated key-value pairs matching the format of OTEL_RESOURCE_ATTRIBUTES. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details.
If omitted or null, no resource attributes are added.
| One of:
* `string`
* `null`
| `false` | +| `schema_url` | Configure resource schema URL.
If omitted or null, no schema URL is used.
| one of:
* `string`
* `null`
| `false` | +| `attributes_list` | Configure resource attributes. Entries have lower priority than entries from .resource.attributes.
The value is a list of comma separated key-value pairs matching the format of OTEL_RESOURCE_ATTRIBUTES. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details.
If omitted or null, no resource attributes are added.
| one of:
* `string`
* `null`
| `false` |
JSON Schema @@ -3914,12 +3914,12 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `attribute_value_length_limit` | Configure max attribute value size. Overrides .attribute_limits.attribute_value_length_limit.
Value must be non-negative.
If omitted or null, there is no limit.
| One of:
* `integer`
* `null`
| `false` | -| `attribute_count_limit` | Configure max attribute count. Overrides .attribute_limits.attribute_count_limit.
Value must be non-negative.
If omitted or null, 128 is used.
| One of:
* `integer`
* `null`
| `false` | -| `event_count_limit` | Configure max span event count.
Value must be non-negative.
If omitted or null, 128 is used.
| One of:
* `integer`
* `null`
| `false` | -| `link_count_limit` | Configure max span link count.
Value must be non-negative.
If omitted or null, 128 is used.
| One of:
* `integer`
* `null`
| `false` | -| `event_attribute_count_limit` | Configure max attributes per span event.
Value must be non-negative.
If omitted or null, 128 is used.
| One of:
* `integer`
* `null`
| `false` | -| `link_attribute_count_limit` | Configure max attributes per span link.
Value must be non-negative.
If omitted or null, 128 is used.
| One of:
* `integer`
* `null`
| `false` | +| `attribute_value_length_limit` | Configure max attribute value size. Overrides .attribute_limits.attribute_value_length_limit.
Value must be non-negative.
If omitted or null, there is no limit.
| one of:
* `integer`
* `null`
| `false` | +| `attribute_count_limit` | Configure max attribute count. Overrides .attribute_limits.attribute_count_limit.
Value must be non-negative.
If omitted or null, 128 is used.
| one of:
* `integer`
* `null`
| `false` | +| `event_count_limit` | Configure max span event count.
Value must be non-negative.
If omitted or null, 128 is used.
| one of:
* `integer`
* `null`
| `false` | +| `link_count_limit` | Configure max span link count.
Value must be non-negative.
If omitted or null, 128 is used.
| one of:
* `integer`
* `null`
| `false` | +| `event_attribute_count_limit` | Configure max attributes per span event.
Value must be non-negative.
If omitted or null, 128 is used.
| one of:
* `integer`
* `null`
| `false` | +| `link_attribute_count_limit` | Configure max attributes per span link.
Value must be non-negative.
If omitted or null, 128 is used.
| one of:
* `integer`
* `null`
| `false` |
JSON Schema @@ -4099,7 +4099,7 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `ratio` | Configure trace_id_ratio.
If omitted or null, 1.0 is used.
| One of:
* `number`
* `null`
| `false` | +| `ratio` | Configure trace_id_ratio.
If omitted or null, 1.0 is used.
| one of:
* `number`
* `null`
| `false` |
JSON Schema @@ -4525,12 +4525,12 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `instrument_name` | Configure instrument name selection criteria.
If omitted or null, all instrument names match.
| One of:
* `string`
* `null`
| `false` | +| `instrument_name` | Configure instrument name selection criteria.
If omitted or null, all instrument names match.
| one of:
* `string`
* `null`
| `false` | | `instrument_type` | Configure instrument type selection criteria.
Values include: counter, gauge, histogram, observable_counter, observable_gauge, observable_up_down_counter, up_down_counter.
If omitted or null, all instrument types match.
| [`InstrumentType`](#InstrumentType) | `false` | -| `unit` | Configure the instrument unit selection criteria.
If omitted or null, all instrument units match.
| One of:
* `string`
* `null`
| `false` | -| `meter_name` | Configure meter name selection criteria.
If omitted or null, all meter names match.
| One of:
* `string`
* `null`
| `false` | -| `meter_version` | Configure meter version selection criteria.
If omitted or null, all meter versions match.
| One of:
* `string`
* `null`
| `false` | -| `meter_schema_url` | Configure meter schema url selection criteria.
If omitted or null, all meter schema URLs match.
| One of:
* `string`
* `null`
| `false` | +| `unit` | Configure the instrument unit selection criteria.
If omitted or null, all instrument units match.
| one of:
* `string`
* `null`
| `false` | +| `meter_name` | Configure meter name selection criteria.
If omitted or null, all meter names match.
| one of:
* `string`
* `null`
| `false` | +| `meter_version` | Configure meter version selection criteria.
If omitted or null, all meter versions match.
| one of:
* `string`
* `null`
| `false` | +| `meter_schema_url` | Configure meter schema url selection criteria.
If omitted or null, all meter schema URLs match.
| one of:
* `string`
* `null`
| `false` |
JSON Schema @@ -4581,10 +4581,10 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `name` | Configure metric name of the resulting stream(s).
If omitted or null, the instrument's original name is used.
| One of:
* `string`
* `null`
| `false` | -| `description` | Configure metric description of the resulting stream(s).
If omitted or null, the instrument's origin description is used.
| One of:
* `string`
* `null`
| `false` | +| `name` | Configure metric name of the resulting stream(s).
If omitted or null, the instrument's original name is used.
| one of:
* `string`
* `null`
| `false` | +| `description` | Configure metric description of the resulting stream(s).
If omitted or null, the instrument's origin description is used.
| one of:
* `string`
* `null`
| `false` | | `aggregation` | Configure aggregation of the resulting stream(s).
Values include: default, drop, explicit_bucket_histogram, base2_exponential_bucket_histogram, last_value, sum. For behavior of values see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#aggregation.
If omitted, default is used.
| [`Aggregation`](#Aggregation) | `false` | -| `aggregation_cardinality_limit` | Configure the aggregation cardinality limit.
If omitted or null, the metric reader's default cardinality limit is used.
| One of:
* `integer`
* `null`
| `false` | +| `aggregation_cardinality_limit` | Configure the aggregation cardinality limit.
If omitted or null, the metric reader's default cardinality limit is used.
| one of:
* `integer`
* `null`
| `false` | | `attribute_keys` | Configure attribute keys retained in the resulting stream(s).
| [`IncludeExclude`](#IncludeExclude) | `false` |
@@ -4628,8 +4628,8 @@ No properties. | Property | Description | Type | Required? | |---|---|---|---| -| `endpoint` | Configure endpoint.
If omitted or null, http://localhost:9411/api/v2/spans is used.
| One of:
* `string`
* `null`
| `false` | -| `timeout` | Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates indefinite.
If omitted or null, 10000 is used.
| One of:
* `integer`
* `null`
| `false` | +| `endpoint` | Configure endpoint.
If omitted or null, http://localhost:9411/api/v2/spans is used.
| one of:
* `string`
* `null`
| `false` | +| `timeout` | Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates indefinite.
If omitted or null, 10000 is used.
| one of:
* `integer`
* `null`
| `false` |
JSON Schema diff --git a/scripts/generate-descriptions.js b/scripts/generate-descriptions.js index 0eb5dc66..1170a8f1 100644 --- a/scripts/generate-descriptions.js +++ b/scripts/generate-descriptions.js @@ -1,12 +1,12 @@ import fs from 'fs'; import yaml from 'yaml'; import {readAndFixMetaSchemaTypes} from "./meta-schema.js"; -import {readJsonSchemaTypes, resolveJsonSchemaPropertyType} from "./json-schema.js"; +import {readJsonSchemaTypes} from "./json-schema.js"; // Extract input file arg or throw -const usageString = "Usage: \n npm run-script generate-comments -- /absolute/path/to/input/file.yaml /absolute/path/to/output/file.yaml"; +const usageString = "Usage: \n npm run-script generate-descriptions -- /absolute/path/to/input/file.yaml /absolute/path/to/output/file.yaml [--debug]"; if (process.argv.length < 3) { - throw new Error("Missing file to generate comments for. " + usageString); + throw new Error("Missing file to generate descriptions for. " + usageString); } const inputFile = process.argv[2]; if (!fs.existsSync(inputFile)) { @@ -62,7 +62,7 @@ yaml.visit(fileDoc, { debug(`Resolving description for ${jsonPath}`); let jsonSchemaType; try { - jsonSchemaType =resolveJsonSchemaType(jsonSchemaTypesByType, path); + jsonSchemaType = resolveJsonSchemaType(jsonSchemaTypesByType, path); } catch (error) { debug(`Unable to resolve JSON schema type: ${error.message}`); return; @@ -108,7 +108,7 @@ if (outputFile === null) { console.log("No output file arg set, logging to console."); console.log(String(fileDoc)) } else { - console.log("Writing output to \"" + outputFile + "\""); + console.log(`Writing output to ${outputFile}`); fs.writeFileSync(outputFile, String(fileDoc)) } @@ -131,7 +131,12 @@ function yamlPathToJsonPath(yamlPath, propertyKey) { elements.push(entry.key.value); } }); - return (elements.length === 0 ? "." : elements.join("")) + propertyKey; + let jsonPath = elements.join(''); + if (!jsonPath.endsWith('.')) { + jsonPath += '.'; + } + jsonPath += propertyKey; + return jsonPath; } function resolveJsonSchemaType(jsonSchemaTypesByType, yamlPath) { @@ -142,10 +147,16 @@ function resolveJsonSchemaType(jsonSchemaTypesByType, yamlPath) { for (let i = 0; i < yamlPath.length; i++) { const entry = yamlPath[i]; if (yaml.isPair(entry)) { - const jsonSchemaPropertyType = resolveJsonSchemaPropertyType(last, entry.key.value, jsonSchemaTypesByType); - last = jsonSchemaTypesByType[jsonSchemaPropertyType.type]; - if (!last) { - throw new Error(`No JSON schema type for ${jsonSchemaPropertyType.type}`); + const jsonSchemaProperty = last.properties.find(property => property.property === entry.key.value); + if (!jsonSchemaProperty) { + throw new Error(`Unknown property ${entry.key.value} in type ${last.type}.`); + } + // A property may have multiple types. Naively, resolve the type to be the first one that exists in jsonSchemaTypesByType. + const resolvedTypes = jsonSchemaProperty.types.map(type => jsonSchemaTypesByType[type]).filter(Boolean); + if (resolvedTypes.length > 0) { + last = resolvedTypes[0]; + } else { + throw new Error(`Unable to resolve JSON schema type for property ${entry.key.value} in type ${last.type}.`); } } } diff --git a/scripts/generate-markdown.js b/scripts/generate-markdown.js index 344a474f..c91b530c 100644 --- a/scripts/generate-markdown.js +++ b/scripts/generate-markdown.js @@ -1,6 +1,4 @@ -import { - readJsonSchemaTypes, resolveJsonSchemaPropertyType -} from "./json-schema.js"; +import {readJsonSchemaTypes} from "./json-schema.js"; import {readAndFixMetaSchemaTypes} from "./meta-schema.js"; import fs from "node:fs"; import {markdownDocPath} from "./util.js"; @@ -38,8 +36,11 @@ types.forEach(metaSchemaType => { output.push(`| Property | Description | Type | Required? |\n`); output.push("|---|---|---|---|\n"); metaSchemaType.properties.forEach(property => { - const propertyType = resolveJsonSchemaPropertyType(jsonSchemaType, property.property, jsonSchemaTypesByType); - const formattedPropertyType = formatJsonSchemaPropertyType(propertyType, '', ''); + const jsonSchemaProperty = jsonSchemaType.properties.find(item => item.property === property.property); + if (!jsonSchemaProperty) { + throw new Error(`JSON schema property not found for property ${property.property} and type ${type}.`); + } + const formattedPropertyType = formatJsonSchemaPropertyType(jsonSchemaProperty, jsonSchemaTypesByType); const isRequired = required !== undefined && required.includes(property.property); output.push(`| \`${property.property}\` | ${property.description.split("\n").join("
")} | ${formattedPropertyType} | \`${isRequired}\` |\n`); @@ -61,24 +62,25 @@ types.forEach(metaSchemaType => { fs.writeFileSync(markdownDocPath, output.join("")); // Helper functions -function formatJsonSchemaPropertyType(type, prefix, suffix) { +function formatJsonSchemaPropertyType(jsonSchemaProperty, jsonSchemaTypesByType) { const output = []; - output.push(prefix); - if (type.isOneOf) { - output.push('One of:
'); - type.oneOfTypes.forEach(item => { - output.push(formatJsonSchemaPropertyType(item, '* ', '
')); - }); - return output.join(''); - } - if (type.isSeq) { - output.push('`array` of '); + if (jsonSchemaProperty.isSeq) { + if (jsonSchemaProperty.isSeq) { + output.push('`array` of '); + } } - if (type.isScalar) { - output.push(`\`${type.type}\``); - } else { - output.push(`[\`${type.type}\`](#${type.type})`); + let prefix = ''; + let suffix = ''; + if (jsonSchemaProperty.types.length > 1) { + output.push('one of:
'); + prefix = '* '; + suffix = '
'; } - output.push(suffix); + jsonSchemaProperty.types.forEach(type => { + let resolvedType = jsonSchemaTypesByType[type]; + output.push(prefix); + output.push(resolvedType ? `[\`${resolvedType.type}\`](#${resolvedType.type})` : `\`${type}\``) + output.push(suffix); + }); return output.join(''); } diff --git a/scripts/json-schema.js b/scripts/json-schema.js index 37f2a2cc..85f67561 100644 --- a/scripts/json-schema.js +++ b/scripts/json-schema.js @@ -43,9 +43,61 @@ export function readJsonSchemaTypes() { jsonSchemaType.schema = topLevelSchema; }); + // Resolve properties + Object.values(typesByType).forEach(jsonSchemaType => { + jsonSchemaType.properties = resolveJsonSchemaProperties(jsonSchemaType.schema, typesByType); + }); + return Object.values(typesByType); } +function resolveJsonSchemaProperties(jsonSchema, typesByType) { + const properties = jsonSchema['properties']; + if (!properties) { + return []; + } + const requiredProperties = jsonSchema['required'] || []; + const resolvedProperties = []; + Object.entries(properties).forEach(([propertyKey, propertySchema]) => { + const type = propertySchema['type']; + const items = propertySchema['items']; + const ref = propertySchema['$ref']; + const oneOf = propertySchema['oneOf']; + + let isSeq = false; + const isRequired = requiredProperties.includes(propertyKey); + const types = []; + + if (type === 'array' && items) { + isSeq = true; + const itemsType = items['type']; + const itemsRef = items['$ref']; + if (itemsType) { + if (Array.isArray(itemsType)) { + types.push(...itemsType); + } else { + types.push(itemsType); + } + } else if (itemsRef) { + types.push(resolveRef(itemsRef, typesByType).type); + } + } else if (type) { + if (Array.isArray(type)) { + types.push(...type); + } else { + types.push(type); + } + } else if (ref) { + types.push(resolveRef(ref, typesByType).type); + } else if (oneOf) { + types.push('oneOf'); + } + resolvedProperties.push(new JsonSchemaProperty(propertyKey, types, isSeq, isRequired)); + }); + + return resolvedProperties; +} + export function resolveRef(ref, typesByType) { let response; if (ref.startsWith(localDefPrefix)) { @@ -68,60 +120,17 @@ function getDefs(jsonSchema) { return defs; } -export function resolveJsonSchemaPropertyType(jsonSchemaType, property, jsonSchemaTypesByType) { - const properties = jsonSchemaType.schema['properties']; - if (!properties) { - throw new Error(`Unable to resolve property ${property} for ${jsonSchemaType.type}. Type doesn't have properties.`) - } - const jsonSchemaProperty = properties[property]; - if (!jsonSchemaProperty) { - throw new Error(`Unable to resolve property ${property} for ${jsonSchemaType.type}. Type doesn't have ${property}.`); - } - const type = jsonSchemaProperty['type']; - const ref = jsonSchemaProperty['$ref']; - const items = jsonSchemaProperty['items']; - const oneOf = jsonSchemaProperty['oneOf']; - if (type === 'array' && items) { - const itemsType = items['type']; - const itemsRef = items['$ref']; - if (itemsType) { - return Array.isArray(itemsType) - ? new JsonSchemaPropertyType('oneOf', false, true, itemsType.map(item => new JsonSchemaPropertyType(item, true, false, []))) - : new JsonSchemaPropertyType(itemsType, false, true, []); - } - if (itemsRef) { - const resolvedRef = resolveRef(itemsRef, jsonSchemaTypesByType); - return new JsonSchemaPropertyType(resolvedRef.type, false, true, []); - } - } - if (type) { - return Array.isArray(type) - ? new JsonSchemaPropertyType('oneOf', true, false, type.map(item => new JsonSchemaPropertyType(item, true, false, []))) - : new JsonSchemaPropertyType(type, true, false, []); - } - if (ref) { - const resolvedRef = resolveRef(ref, jsonSchemaTypesByType); - return new JsonSchemaPropertyType(resolvedRef.type, false, false, []); - } - if (oneOf) { - return new JsonSchemaPropertyType('oneOf', false, false, [new JsonSchemaPropertyType('see JSON schema', false, false, [])]); - } - throw new Error(`Unable to resolve types of property ${property}: ${JSON.stringify(jsonSchemaType)}.`) -} - -export class JsonSchemaPropertyType { - type; - isScalar; +export class JsonSchemaProperty { + property; + types; isSeq; - isOneOf; - oneOfTypes; + isRequired; - constructor(type, isScalar, isSeq, oneOfTypes) { - this.type = type; - this.isScalar = isScalar; + constructor(property, types, isSeq, isRequired) { + this.property = property; + this.types = types; this.isSeq = isSeq; - this.isOneOf = oneOfTypes.length !== 0; - this.oneOfTypes = oneOfTypes; + this.isRequired = isRequired; } } @@ -131,7 +140,7 @@ export class JsonSchemaType { fileContent; jsonSchemaPath; schema; - pathPatterns; + properties; constructor(type, file, fileContent, jsonSchemaPath, schema) { this.type = type; @@ -139,7 +148,7 @@ export class JsonSchemaType { this.fileContent = fileContent; this.jsonSchemaPath = jsonSchemaPath; this.schema = schema; - this.pathPatterns = []; + this.properties = []; } jsonSchemaRef() { @@ -151,12 +160,9 @@ export class JsonSchemaType { } toMetaSchemaType() { - const properties = []; - if (this.schema.properties) { - Object.entries(this.schema.properties).forEach(([propertyName, schema]) => { - properties.push(new MetaSchemaProperty(propertyName, "TODO")); - }); - } - return new MetaSchemaType(this.type, properties); + return new MetaSchemaType( + this.type, + this.properties.map(jsonSchemaProperty => new MetaSchemaProperty(jsonSchemaProperty.property, "TODO")) + ); } } From 4b25ccfbdb24919a4ed8b1799b4182b75ff1aa7a Mon Sep 17 00:00:00 2001 From: Jack Berg <34418638+jack-berg@users.noreply.github.com> Date: Sat, 4 Oct 2025 12:47:29 -0400 Subject: [PATCH 16/23] Track SDK extension plugins --- CONTRIBUTING.md | 1 + schema-docs.md | 297 ++++++++++++++++++++++++----------- schema/meta_schema.yaml | 89 +++++++++++ scripts/generate-markdown.js | 37 ++++- scripts/json-schema.js | 3 +- scripts/meta-schema.js | 10 +- 6 files changed, 341 insertions(+), 96 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b76a7322..773f0f48 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -252,6 +252,7 @@ make all [meta_schema.yaml](./schema/meta_schema.yaml) tracks schema details that don't fit neatly into the JSON schema including: * Property descriptions and semantics +* Track which types are SDK extension plugins * Implementation support status (TODO) There are variety of tasks which intersect with the meta schema: diff --git a/schema-docs.md b/schema-docs.md index ad759078..2d5fa8b2 100644 --- a/schema-docs.md +++ b/schema-docs.md @@ -1,6 +1,105 @@ -### Aggregation +* [Overview](#overview) +* [Types](#types) + * [Aggregation](#Aggregation) + * [AlwaysOffSampler](#AlwaysOffSampler) + * [AlwaysOnSampler](#AlwaysOnSampler) + * [AttributeLimits](#AttributeLimits) + * [AttributeNameValue](#AttributeNameValue) + * [AttributeType](#AttributeType) + * [B3MultiPropagator](#B3MultiPropagator) + * [B3Propagator](#B3Propagator) + * [BaggagePropagator](#BaggagePropagator) + * [Base2ExponentialBucketHistogramAggregation](#Base2ExponentialBucketHistogramAggregation) + * [BatchLogRecordProcessor](#BatchLogRecordProcessor) + * [BatchSpanProcessor](#BatchSpanProcessor) + * [CardinalityLimits](#CardinalityLimits) + * [ConsoleExporter](#ConsoleExporter) + * [DefaultAggregation](#DefaultAggregation) + * [DropAggregation](#DropAggregation) + * [ExemplarFilter](#ExemplarFilter) + * [ExperimentalContainerResourceDetector](#ExperimentalContainerResourceDetector) + * [ExperimentalGeneralInstrumentation](#ExperimentalGeneralInstrumentation) + * [ExperimentalHostResourceDetector](#ExperimentalHostResourceDetector) + * [ExperimentalHttpClientInstrumentation](#ExperimentalHttpClientInstrumentation) + * [ExperimentalHttpInstrumentation](#ExperimentalHttpInstrumentation) + * [ExperimentalHttpServerInstrumentation](#ExperimentalHttpServerInstrumentation) + * [ExperimentalInstrumentation](#ExperimentalInstrumentation) + * [ExperimentalLanguageSpecificInstrumentation](#ExperimentalLanguageSpecificInstrumentation) + * [ExperimentalLoggerConfig](#ExperimentalLoggerConfig) + * [ExperimentalLoggerConfigurator](#ExperimentalLoggerConfigurator) + * [ExperimentalLoggerMatcherAndConfig](#ExperimentalLoggerMatcherAndConfig) + * [ExperimentalMeterConfig](#ExperimentalMeterConfig) + * [ExperimentalMeterConfigurator](#ExperimentalMeterConfigurator) + * [ExperimentalMeterMatcherAndConfig](#ExperimentalMeterMatcherAndConfig) + * [ExperimentalOtlpFileExporter](#ExperimentalOtlpFileExporter) + * [ExperimentalOtlpFileMetricExporter](#ExperimentalOtlpFileMetricExporter) + * [ExperimentalPeerInstrumentation](#ExperimentalPeerInstrumentation) + * [ExperimentalPeerServiceMapping](#ExperimentalPeerServiceMapping) + * [ExperimentalProcessResourceDetector](#ExperimentalProcessResourceDetector) + * [ExperimentalPrometheusMetricExporter](#ExperimentalPrometheusMetricExporter) + * [ExperimentalResourceDetection](#ExperimentalResourceDetection) + * [ExperimentalResourceDetector](#ExperimentalResourceDetector) + * [ExperimentalServiceResourceDetector](#ExperimentalServiceResourceDetector) + * [ExperimentalTracerConfig](#ExperimentalTracerConfig) + * [ExperimentalTracerConfigurator](#ExperimentalTracerConfigurator) + * [ExperimentalTracerMatcherAndConfig](#ExperimentalTracerMatcherAndConfig) + * [ExplicitBucketHistogramAggregation](#ExplicitBucketHistogramAggregation) + * [ExporterDefaultHistogramAggregation](#ExporterDefaultHistogramAggregation) + * [ExporterTemporalityPreference](#ExporterTemporalityPreference) + * [IncludeExclude](#IncludeExclude) + * [InstrumentType](#InstrumentType) + * [JaegerPropagator](#JaegerPropagator) + * [JaegerRemoteSampler](#JaegerRemoteSampler) + * [LastValueAggregation](#LastValueAggregation) + * [LoggerProvider](#LoggerProvider) + * [LogRecordExporter](#LogRecordExporter) + * [LogRecordLimits](#LogRecordLimits) + * [LogRecordProcessor](#LogRecordProcessor) + * [MeterProvider](#MeterProvider) + * [MetricProducer](#MetricProducer) + * [MetricReader](#MetricReader) + * [NameStringValuePair](#NameStringValuePair) + * [OpenCensusMetricProducer](#OpenCensusMetricProducer) + * [OpentelemetryConfiguration](#OpentelemetryConfiguration) + * [OpenTracingPropagator](#OpenTracingPropagator) + * [OtlpGrpcExporter](#OtlpGrpcExporter) + * [OtlpGrpcMetricExporter](#OtlpGrpcMetricExporter) + * [OtlpHttpEncoding](#OtlpHttpEncoding) + * [OtlpHttpExporter](#OtlpHttpExporter) + * [OtlpHttpMetricExporter](#OtlpHttpMetricExporter) + * [ParentBasedSampler](#ParentBasedSampler) + * [PeriodicMetricReader](#PeriodicMetricReader) + * [Propagator](#Propagator) + * [PullMetricExporter](#PullMetricExporter) + * [PullMetricReader](#PullMetricReader) + * [PushMetricExporter](#PushMetricExporter) + * [Resource](#Resource) + * [Sampler](#Sampler) + * [SimpleLogRecordProcessor](#SimpleLogRecordProcessor) + * [SimpleSpanProcessor](#SimpleSpanProcessor) + * [SpanExporter](#SpanExporter) + * [SpanLimits](#SpanLimits) + * [SpanProcessor](#SpanProcessor) + * [SumAggregation](#SumAggregation) + * [TextMapPropagator](#TextMapPropagator) + * [TraceContextPropagator](#TraceContextPropagator) + * [TraceIdRatioBasedSampler](#TraceIdRatioBasedSampler) + * [TracerProvider](#TracerProvider) + * [View](#View) + * [ViewSelector](#ViewSelector) + * [ViewStream](#ViewStream) + * [ZipkinSpanExporter](#ZipkinSpanExporter) +* [SDK Extension Plugins](#sdk-extension-plugins) + + +# Overview + +TODO +# Types + +## Aggregation | Property | Description | Type | Required? | |---|---|---|---| @@ -43,7 +142,7 @@ }
-### AlwaysOffSampler +## AlwaysOffSampler No properties. @@ -60,7 +159,7 @@ No properties. }
-### AlwaysOnSampler +## AlwaysOnSampler No properties. @@ -77,7 +176,7 @@ No properties. }
-### AttributeLimits +## AttributeLimits | Property | Description | Type | Required? | |---|---|---|---| @@ -108,7 +207,7 @@ No properties. }
-### AttributeNameValue +## AttributeNameValue | Property | Description | Type | Required? | |---|---|---|---| @@ -172,7 +271,7 @@ No properties. }
-### AttributeType +## AttributeType No properties. @@ -199,7 +298,7 @@ No properties. }
-### B3MultiPropagator +## B3MultiPropagator No properties. @@ -216,7 +315,7 @@ No properties. }
-### B3Propagator +## B3Propagator No properties. @@ -233,7 +332,7 @@ No properties. }
-### BaggagePropagator +## BaggagePropagator No properties. @@ -250,7 +349,7 @@ No properties. }
-### Base2ExponentialBucketHistogramAggregation +## Base2ExponentialBucketHistogramAggregation | Property | Description | Type | Required? | |---|---|---|---| @@ -291,7 +390,7 @@ No properties. }
-### BatchLogRecordProcessor +## BatchLogRecordProcessor | Property | Description | Type | Required? | |---|---|---|---| @@ -347,7 +446,7 @@ No properties. }
-### BatchSpanProcessor +## BatchSpanProcessor | Property | Description | Type | Required? | |---|---|---|---| @@ -403,7 +502,7 @@ No properties. }
-### CardinalityLimits +## CardinalityLimits | Property | Description | Type | Required? | |---|---|---|---| @@ -484,7 +583,7 @@ No properties. }
-### ConsoleExporter +## ConsoleExporter No properties. @@ -501,7 +600,7 @@ No properties. }
-### DefaultAggregation +## DefaultAggregation No properties. @@ -518,7 +617,7 @@ No properties. }
-### DropAggregation +## DropAggregation No properties. @@ -535,7 +634,7 @@ No properties. }
-### ExemplarFilter +## ExemplarFilter No properties. @@ -556,7 +655,7 @@ No properties. }
-### ExperimentalContainerResourceDetector +## ExperimentalContainerResourceDetector No properties. @@ -573,7 +672,7 @@ No properties. }
-### ExperimentalGeneralInstrumentation +## ExperimentalGeneralInstrumentation | Property | Description | Type | Required? | |---|---|---|---| @@ -598,7 +697,7 @@ No properties. }
-### ExperimentalHostResourceDetector +## ExperimentalHostResourceDetector No properties. @@ -615,7 +714,7 @@ No properties. }
-### ExperimentalHttpClientInstrumentation +## ExperimentalHttpClientInstrumentation | Property | Description | Type | Required? | |---|---|---|---| @@ -646,7 +745,7 @@ No properties. }
-### ExperimentalHttpInstrumentation +## ExperimentalHttpInstrumentation | Property | Description | Type | Required? | |---|---|---|---| @@ -671,7 +770,7 @@ No properties. }
-### ExperimentalHttpServerInstrumentation +## ExperimentalHttpServerInstrumentation | Property | Description | Type | Required? | |---|---|---|---| @@ -702,7 +801,7 @@ No properties. }
-### ExperimentalInstrumentation +## ExperimentalInstrumentation | Property | Description | Type | Required? | |---|---|---|---| @@ -873,7 +972,7 @@ No properties. }
-### ExperimentalLanguageSpecificInstrumentation +## ExperimentalLanguageSpecificInstrumentation No properties. @@ -892,7 +991,7 @@ No properties. }
-### ExperimentalLoggerConfig +## ExperimentalLoggerConfig | Property | Description | Type | Required? | |---|---|---|---| @@ -917,7 +1016,7 @@ No properties. }
-### ExperimentalLoggerConfigurator +## ExperimentalLoggerConfigurator | Property | Description | Type | Required? | |---|---|---|---| @@ -947,7 +1046,7 @@ No properties. }
-### ExperimentalLoggerMatcherAndConfig +## ExperimentalLoggerMatcherAndConfig | Property | Description | Type | Required? | |---|---|---|---| @@ -976,7 +1075,7 @@ No properties. }
-### ExperimentalMeterConfig +## ExperimentalMeterConfig | Property | Description | Type | Required? | |---|---|---|---| @@ -1001,7 +1100,7 @@ No properties. }
-### ExperimentalMeterConfigurator +## ExperimentalMeterConfigurator | Property | Description | Type | Required? | |---|---|---|---| @@ -1031,7 +1130,7 @@ No properties. }
-### ExperimentalMeterMatcherAndConfig +## ExperimentalMeterMatcherAndConfig | Property | Description | Type | Required? | |---|---|---|---| @@ -1060,7 +1159,7 @@ No properties. }
-### ExperimentalOtlpFileExporter +## ExperimentalOtlpFileExporter | Property | Description | Type | Required? | |---|---|---|---| @@ -1087,7 +1186,7 @@ No properties. }
-### ExperimentalOtlpFileMetricExporter +## ExperimentalOtlpFileMetricExporter | Property | Description | Type | Required? | |---|---|---|---| @@ -1122,7 +1221,7 @@ No properties. }
-### ExperimentalPeerInstrumentation +## ExperimentalPeerInstrumentation | Property | Description | Type | Required? | |---|---|---|---| @@ -1146,7 +1245,7 @@ No properties. }
-### ExperimentalPeerServiceMapping +## ExperimentalPeerServiceMapping | Property | Description | Type | Required? | |---|---|---|---| @@ -1175,7 +1274,7 @@ No properties. }
-### ExperimentalProcessResourceDetector +## ExperimentalProcessResourceDetector No properties. @@ -1192,7 +1291,7 @@ No properties. }
-### ExperimentalPrometheusMetricExporter +## ExperimentalPrometheusMetricExporter | Property | Description | Type | Required? | |---|---|---|---| @@ -1250,7 +1349,7 @@ No properties. }
-### ExperimentalResourceDetection +## ExperimentalResourceDetection | Property | Description | Type | Required? | |---|---|---|---| @@ -1278,7 +1377,7 @@ No properties. }
-### ExperimentalResourceDetector +## ExperimentalResourceDetector | Property | Description | Type | Required? | |---|---|---|---| @@ -1321,7 +1420,7 @@ No properties. }
-### ExperimentalServiceResourceDetector +## ExperimentalServiceResourceDetector No properties. @@ -1338,7 +1437,7 @@ No properties. }
-### ExperimentalTracerConfig +## ExperimentalTracerConfig | Property | Description | Type | Required? | |---|---|---|---| @@ -1363,7 +1462,7 @@ No properties. }
-### ExperimentalTracerConfigurator +## ExperimentalTracerConfigurator | Property | Description | Type | Required? | |---|---|---|---| @@ -1393,7 +1492,7 @@ No properties. }
-### ExperimentalTracerMatcherAndConfig +## ExperimentalTracerMatcherAndConfig | Property | Description | Type | Required? | |---|---|---|---| @@ -1422,7 +1521,7 @@ No properties. }
-### ExplicitBucketHistogramAggregation +## ExplicitBucketHistogramAggregation | Property | Description | Type | Required? | |---|---|---|---| @@ -1456,7 +1555,7 @@ No properties. }
-### ExporterDefaultHistogramAggregation +## ExporterDefaultHistogramAggregation No properties. @@ -1476,7 +1575,7 @@ No properties. }
-### ExporterTemporalityPreference +## ExporterTemporalityPreference No properties. @@ -1497,7 +1596,7 @@ No properties. }
-### IncludeExclude +## IncludeExclude | Property | Description | Type | Required? | |---|---|---|---| @@ -1528,7 +1627,7 @@ No properties. }
-### InstrumentType +## InstrumentType No properties. @@ -1553,7 +1652,7 @@ No properties. }
-### JaegerPropagator +## JaegerPropagator No properties. @@ -1570,7 +1669,7 @@ No properties. }
-### JaegerRemoteSampler +## JaegerRemoteSampler | Property | Description | Type | Required? | |---|---|---|---| @@ -1609,7 +1708,7 @@ No properties. }
-### LastValueAggregation +## LastValueAggregation No properties. @@ -1626,7 +1725,7 @@ No properties. }
-### LoggerProvider +## LoggerProvider | Property | Description | Type | Required? | |---|---|---|---| @@ -1833,7 +1932,7 @@ No properties. }
-### LogRecordExporter +## LogRecordExporter | Property | Description | Type | Required? | |---|---|---|---| @@ -1876,7 +1975,7 @@ No properties. }
-### LogRecordLimits +## LogRecordLimits | Property | Description | Type | Required? | |---|---|---|---| @@ -1909,7 +2008,7 @@ No properties. }
-### LogRecordProcessor +## LogRecordProcessor | Property | Description | Type | Required? | |---|---|---|---| @@ -1943,7 +2042,7 @@ No properties. }
-### MeterProvider +## MeterProvider | Property | Description | Type | Required? | |---|---|---|---| @@ -2674,7 +2773,7 @@ No properties. }
-### MetricProducer +## MetricProducer | Property | Description | Type | Required? | |---|---|---|---| @@ -2705,7 +2804,7 @@ No properties. }
-### MetricReader +## MetricReader | Property | Description | Type | Required? | |---|---|---|---| @@ -2732,7 +2831,7 @@ No properties. }
-### NameStringValuePair +## NameStringValuePair | Property | Description | Type | Required? | |---|---|---|---| @@ -2764,7 +2863,7 @@ No properties. }
-### OpenCensusMetricProducer +## OpenCensusMetricProducer No properties. @@ -2781,7 +2880,7 @@ No properties. }
-### OpentelemetryConfiguration +## OpentelemetryConfiguration | Property | Description | Type | Required? | |---|---|---|---| @@ -2888,7 +2987,7 @@ No properties. }
-### OpenTracingPropagator +## OpenTracingPropagator No properties. @@ -2905,7 +3004,7 @@ No properties. }
-### OtlpGrpcExporter +## OtlpGrpcExporter | Property | Description | Type | Required? | |---|---|---|---| @@ -2989,7 +3088,7 @@ No properties. }
-### OtlpGrpcMetricExporter +## OtlpGrpcMetricExporter | Property | Description | Type | Required? | |---|---|---|---| @@ -3081,7 +3180,7 @@ No properties. }
-### OtlpHttpEncoding +## OtlpHttpEncoding No properties. @@ -3101,7 +3200,7 @@ No properties. }
-### OtlpHttpExporter +## OtlpHttpExporter | Property | Description | Type | Required? | |---|---|---|---| @@ -3182,7 +3281,7 @@ No properties. }
-### OtlpHttpMetricExporter +## OtlpHttpMetricExporter | Property | Description | Type | Required? | |---|---|---|---| @@ -3272,7 +3371,7 @@ No properties. }
-### ParentBasedSampler +## ParentBasedSampler | Property | Description | Type | Required? | |---|---|---|---| @@ -3312,7 +3411,7 @@ No properties. }
-### PeriodicMetricReader +## PeriodicMetricReader | Property | Description | Type | Required? | |---|---|---|---| @@ -3363,7 +3462,7 @@ No properties. }
-### Propagator +## Propagator | Property | Description | Type | Required? | |---|---|---|---| @@ -3473,7 +3572,7 @@ No properties. }
-### PullMetricExporter +## PullMetricExporter | Property | Description | Type | Required? | |---|---|---|---| @@ -3506,7 +3605,7 @@ No properties. }
-### PullMetricReader +## PullMetricReader | Property | Description | Type | Required? | |---|---|---|---| @@ -3541,7 +3640,7 @@ No properties. }
-### PushMetricExporter +## PushMetricExporter | Property | Description | Type | Required? | |---|---|---|---| @@ -3584,7 +3683,7 @@ No properties. }
-### Resource +## Resource | Property | Description | Type | Required? | |---|---|---|---| @@ -3768,7 +3867,7 @@ No properties. }
-### Sampler +## Sampler | Property | Description | Type | Required? | |---|---|---|---| @@ -3815,7 +3914,7 @@ No properties. }
-### SimpleLogRecordProcessor +## SimpleLogRecordProcessor | Property | Description | Type | Required? | |---|---|---|---| @@ -3839,7 +3938,7 @@ No properties. }
-### SimpleSpanProcessor +## SimpleSpanProcessor | Property | Description | Type | Required? | |---|---|---|---| @@ -3863,7 +3962,7 @@ No properties. }
-### SpanExporter +## SpanExporter | Property | Description | Type | Required? | |---|---|---|---| @@ -3910,7 +4009,7 @@ No properties. }
-### SpanLimits +## SpanLimits | Property | Description | Type | Required? | |---|---|---|---| @@ -3975,7 +4074,7 @@ No properties. }
-### SpanProcessor +## SpanProcessor | Property | Description | Type | Required? | |---|---|---|---| @@ -4010,7 +4109,7 @@ No properties. }
-### SumAggregation +## SumAggregation No properties. @@ -4027,7 +4126,7 @@ No properties. }
-### TextMapPropagator +## TextMapPropagator | Property | Description | Type | Required? | |---|---|---|---| @@ -4078,7 +4177,7 @@ No properties. }
-### TraceContextPropagator +## TraceContextPropagator No properties. @@ -4095,7 +4194,7 @@ No properties. }
-### TraceIdRatioBasedSampler +## TraceIdRatioBasedSampler | Property | Description | Type | Required? | |---|---|---|---| @@ -4122,7 +4221,7 @@ No properties. }
-### TracerProvider +## TracerProvider | Property | Description | Type | Required? | |---|---|---|---| @@ -4496,7 +4595,7 @@ No properties. }
-### View +## View | Property | Description | Type | Required? | |---|---|---|---| @@ -4521,7 +4620,7 @@ No properties. }
-### ViewSelector +## ViewSelector | Property | Description | Type | Required? | |---|---|---|---| @@ -4577,7 +4676,7 @@ No properties. }
-### ViewStream +## ViewStream | Property | Description | Type | Required? | |---|---|---|---| @@ -4624,7 +4723,7 @@ No properties. }
-### ZipkinSpanExporter +## ZipkinSpanExporter | Property | Description | Type | Required? | |---|---|---|---| @@ -4659,3 +4758,23 @@ No properties. }
+# SDK Extension Plugins + +[SDK extension plugins](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk.md#supported-sdk-extension-plugins) are places where custom interface implementations can be referenced and configured. + +For example, you could write a custom `SpanExporter`, and indicate that it should be paired with a `BatchSpanProcessor`. + +Each of the following types support referencing custom interface implementations. Each type is an object type containing exactly one property whose value is type `object` or `null`. The property key refers to the name of the custom implementation, and must be the same as the `name` of a corresponding registered [ComponentProvider](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk.md#register-componentprovider). The value passed as configuration when the [ComponentProvider.create](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk.md#create) is called. + +SDK extension plugin types may have properties defined corresponding to built-in implementations of the interface. For example, the `otlp_http` property of `SpanExporter` defines the OTLP http/protobuf exporter. + +* [ExperimentalResourceDetector](#ExperimentalResourceDetector) +* [LogRecordExporter](#LogRecordExporter) +* [LogRecordProcessor](#LogRecordProcessor) +* [MetricProducer](#MetricProducer) +* [PullMetricExporter](#PullMetricExporter) +* [PushMetricExporter](#PushMetricExporter) +* [Sampler](#Sampler) +* [SpanExporter](#SpanExporter) +* [SpanProcessor](#SpanProcessor) +* [TextMapPropagator](#TextMapPropagator) diff --git a/schema/meta_schema.yaml b/schema/meta_schema.yaml index d7cf64c8..2cbcef83 100644 --- a/schema/meta_schema.yaml +++ b/schema/meta_schema.yaml @@ -12,10 +12,13 @@ description: TODO - property: sum description: TODO + isSdkExtensionPlugin: false - type: AlwaysOffSampler properties: [] + isSdkExtensionPlugin: false - type: AlwaysOnSampler properties: [] + isSdkExtensionPlugin: false - type: AttributeLimits properties: - property: attribute_value_length_limit @@ -28,6 +31,7 @@ Configure max attribute count. Value must be non-negative. If omitted or null, 128 is used. + isSdkExtensionPlugin: false - type: AttributeNameValue properties: - property: name @@ -42,14 +46,19 @@ The attribute type. Values include: string, bool, int, double, string_array, bool_array, int_array, double_array. If omitted or null, string is used. + isSdkExtensionPlugin: false - type: AttributeType properties: [] + isSdkExtensionPlugin: false - type: B3MultiPropagator properties: [] + isSdkExtensionPlugin: false - type: B3Propagator properties: [] + isSdkExtensionPlugin: false - type: BaggagePropagator properties: [] + isSdkExtensionPlugin: false - type: Base2ExponentialBucketHistogramAggregation properties: - property: max_scale @@ -58,6 +67,7 @@ description: TODO - property: record_min_max description: TODO + isSdkExtensionPlugin: false - type: BatchLogRecordProcessor properties: - property: schedule_delay @@ -80,6 +90,7 @@ If omitted or null, 512 is used. - property: exporter description: Configure exporter. + isSdkExtensionPlugin: false - type: BatchSpanProcessor properties: - property: schedule_delay @@ -102,6 +113,7 @@ If omitted or null, 512 is used. - property: exporter description: Configure exporter. + isSdkExtensionPlugin: false - type: CardinalityLimits properties: - property: default @@ -137,16 +149,22 @@ description: | Configure default cardinality limit for up_down_counter instruments. If omitted or null, the value from .default is used. + isSdkExtensionPlugin: false - type: ConsoleExporter properties: [] + isSdkExtensionPlugin: false - type: DefaultAggregation properties: [] + isSdkExtensionPlugin: false - type: DropAggregation properties: [] + isSdkExtensionPlugin: false - type: ExemplarFilter properties: [] + isSdkExtensionPlugin: false - type: ExperimentalContainerResourceDetector properties: [] + isSdkExtensionPlugin: false - type: ExperimentalGeneralInstrumentation properties: - property: peer @@ -157,8 +175,10 @@ description: | Configure instrumentations following the http semantic conventions. See http semantic conventions: https://opentelemetry.io/docs/specs/semconv/http/ + isSdkExtensionPlugin: false - type: ExperimentalHostResourceDetector properties: [] + isSdkExtensionPlugin: false - type: ExperimentalHttpClientInstrumentation properties: - property: request_captured_headers @@ -167,12 +187,14 @@ - property: response_captured_headers description: | Configure headers to capture for inbound http responses. + isSdkExtensionPlugin: false - type: ExperimentalHttpInstrumentation properties: - property: client description: Configure instrumentations following the http client semantic conventions. - property: server description: Configure instrumentations following the http server semantic conventions. + isSdkExtensionPlugin: false - type: ExperimentalHttpServerInstrumentation properties: - property: request_captured_headers @@ -181,6 +203,7 @@ - property: response_captured_headers description: | Configure headers to capture for outbound http responses. + isSdkExtensionPlugin: false - type: ExperimentalInstrumentation properties: - property: general @@ -229,18 +252,22 @@ description: | Configure Swift language-specific instrumentation libraries. Each entry's key identifies a particular instrumentation library. The corresponding value configures it. + isSdkExtensionPlugin: false - type: ExperimentalLanguageSpecificInstrumentation properties: [] + isSdkExtensionPlugin: false - type: ExperimentalLoggerConfig properties: - property: disabled description: Configure if the logger is enabled or not. + isSdkExtensionPlugin: false - type: ExperimentalLoggerConfigurator properties: - property: default_config description: Configure the default logger config used there is no matching entry in .logger_configurator/development.loggers. - property: loggers description: Configure loggers. + isSdkExtensionPlugin: false - type: ExperimentalLoggerMatcherAndConfig properties: - property: name @@ -251,16 +278,19 @@ * If the logger name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. - property: config description: The logger config. + isSdkExtensionPlugin: false - type: ExperimentalMeterConfig properties: - property: disabled description: Configure if the meter is enabled or not. + isSdkExtensionPlugin: false - type: ExperimentalMeterConfigurator properties: - property: default_config description: Configure the default meter config used there is no matching entry in .meter_configurator/development.meters. - property: meters description: Configure meters. + isSdkExtensionPlugin: false - type: ExperimentalMeterMatcherAndConfig properties: - property: name @@ -271,6 +301,7 @@ * If the meter name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. - property: config description: The meter config. + isSdkExtensionPlugin: false - type: ExperimentalOtlpFileExporter properties: - property: output_stream @@ -278,6 +309,7 @@ Configure output stream. Values include stdout, or scheme+destination. For example: file:///path/to/file.jsonl. If omitted or null, stdout is used. + isSdkExtensionPlugin: false - type: ExperimentalOtlpFileMetricExporter properties: - property: output_stream @@ -295,12 +327,14 @@ Configure default histogram aggregation. Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md. If omitted or null, explicit_bucket_histogram is used. + isSdkExtensionPlugin: false - type: ExperimentalPeerInstrumentation properties: - property: service_mapping description: | Configure the service mapping for instrumentations following peer.service semantic conventions. See peer.service semantic conventions: https://opentelemetry.io/docs/specs/semconv/general/attributes/#general-remote-service-attributes + isSdkExtensionPlugin: false - type: ExperimentalPeerServiceMapping properties: - property: peer @@ -309,8 +343,10 @@ - property: service description: | The logical name corresponding to the IP address of .peer. + isSdkExtensionPlugin: false - type: ExperimentalProcessResourceDetector properties: [] + isSdkExtensionPlugin: false - type: ExperimentalPrometheusMetricExporter properties: - property: host @@ -337,6 +373,7 @@ * NoTranslation. This strategy bypasses all metric and label name translation, passing them through unaltered. If omitted or null, UnderscoreEscapingWithSuffixes is used. + isSdkExtensionPlugin: false - type: ExperimentalResourceDetection properties: - property: attributes @@ -346,6 +383,7 @@ Configure resource detectors. Resource detector names are dependent on the SDK language ecosystem. Please consult documentation for each respective language. If omitted or null, no resource detectors are enabled. + isSdkExtensionPlugin: false - type: ExperimentalResourceDetector properties: - property: container @@ -360,18 +398,22 @@ - property: service description: | Enable the service detector, which populates service.name based on the OTEL_SERVICE_NAME environment variable and service.instance.id. + isSdkExtensionPlugin: true - type: ExperimentalServiceResourceDetector properties: [] + isSdkExtensionPlugin: false - type: ExperimentalTracerConfig properties: - property: disabled description: Configure if the tracer is enabled or not. + isSdkExtensionPlugin: false - type: ExperimentalTracerConfigurator properties: - property: default_config description: Configure the default tracer config used there is no matching entry in .tracer_configurator/development.tracers. - property: tracers description: Configure tracers. + isSdkExtensionPlugin: false - type: ExperimentalTracerMatcherAndConfig properties: - property: name @@ -382,6 +424,7 @@ * If the tracer name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. - property: config description: The tracer config. + isSdkExtensionPlugin: false - type: ExplicitBucketHistogramAggregation properties: - property: boundaries @@ -392,10 +435,13 @@ description: | Configure record min and max. If omitted or null, true is used. + isSdkExtensionPlugin: false - type: ExporterDefaultHistogramAggregation properties: [] + isSdkExtensionPlugin: false - type: ExporterTemporalityPreference properties: [] + isSdkExtensionPlugin: false - type: IncludeExclude properties: - property: included @@ -412,10 +458,13 @@ * If the value exactly matches. * If the value matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none. If omitted, .included attributes are included. + isSdkExtensionPlugin: false - type: InstrumentType properties: [] + isSdkExtensionPlugin: false - type: JaegerPropagator properties: [] + isSdkExtensionPlugin: false - type: JaegerRemoteSampler properties: - property: endpoint @@ -424,8 +473,10 @@ description: TODO - property: initial_sampler description: TODO + isSdkExtensionPlugin: false - type: LastValueAggregation properties: [] + isSdkExtensionPlugin: false - type: LoggerProvider properties: - property: processors @@ -436,6 +487,7 @@ description: | Configure loggers. This type is in development and subject to breaking changes in minor versions. + isSdkExtensionPlugin: false - type: LogRecordExporter properties: - property: otlp_http @@ -448,6 +500,7 @@ This type is in development and subject to breaking changes in minor versions. - property: console description: Configure exporter to be console. + isSdkExtensionPlugin: true - type: LogRecordLimits properties: - property: attribute_value_length_limit @@ -460,12 +513,14 @@ Configure max attribute count. Overrides .attribute_limits.attribute_count_limit. Value must be non-negative. If omitted or null, 128 is used. + isSdkExtensionPlugin: false - type: LogRecordProcessor properties: - property: batch description: Configure a batch log record processor. - property: simple description: Configure a simple log record processor. + isSdkExtensionPlugin: true - type: MeterProvider properties: - property: readers @@ -483,24 +538,29 @@ description: | Configure meters. This type is in development and subject to breaking changes in minor versions. + isSdkExtensionPlugin: false - type: MetricProducer properties: - property: opencensus description: Configure metric producer to be opencensus. + isSdkExtensionPlugin: true - type: MetricReader properties: - property: periodic description: Configure a periodic metric reader. - property: pull description: Configure a pull based metric reader. + isSdkExtensionPlugin: false - type: NameStringValuePair properties: - property: name description: The name of the pair. - property: value description: The value of the pair. + isSdkExtensionPlugin: false - type: OpenCensusMetricProducer properties: [] + isSdkExtensionPlugin: false - type: OpentelemetryConfiguration properties: - property: file_format @@ -543,8 +603,10 @@ description: | Configure instrumentation. This type is in development and subject to breaking changes in minor versions. + isSdkExtensionPlugin: false - type: OpenTracingPropagator properties: [] + isSdkExtensionPlugin: false - type: OtlpGrpcExporter properties: - property: endpoint @@ -590,6 +652,7 @@ Configure client transport security for the exporter's connection. Only applicable when .endpoint is provided without http or https scheme. Implementations may choose to ignore .insecure. If omitted or null, false is used. + isSdkExtensionPlugin: false - type: OtlpGrpcMetricExporter properties: - property: endpoint @@ -645,8 +708,10 @@ Configure default histogram aggregation. Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md. If omitted or null, explicit_bucket_histogram is used. + isSdkExtensionPlugin: false - type: OtlpHttpEncoding properties: [] + isSdkExtensionPlugin: false - type: OtlpHttpExporter properties: - property: endpoint @@ -692,6 +757,7 @@ Configure the encoding used for messages. Values include: protobuf, json. Implementations may not support json. If omitted or null, protobuf is used. + isSdkExtensionPlugin: false - type: OtlpHttpMetricExporter properties: - property: endpoint @@ -751,6 +817,7 @@ Configure default histogram aggregation. Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md. If omitted or null, explicit_bucket_histogram is used. + isSdkExtensionPlugin: false - type: ParentBasedSampler properties: - property: root @@ -773,6 +840,7 @@ description: | Configure local_parent_not_sampled sampler. If omitted or null, always_off is used. + isSdkExtensionPlugin: false - type: PeriodicMetricReader properties: - property: interval @@ -791,6 +859,7 @@ description: Configure metric producers. - property: cardinality_limits description: Configure cardinality limits. + isSdkExtensionPlugin: false - type: Propagator properties: - property: composite @@ -804,12 +873,14 @@ The value is a comma separated list of propagator identifiers matching the format of OTEL_PROPAGATORS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details. Built-in propagator identifiers include: tracecontext, baggage, b3, b3multi, jaeger, ottrace. Known third party identifiers include: xray. If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used. + isSdkExtensionPlugin: false - type: PullMetricExporter properties: - property: prometheus/development description: | Configure exporter to be prometheus. This type is in development and subject to breaking changes in minor versions. + isSdkExtensionPlugin: true - type: PullMetricReader properties: - property: exporter @@ -818,6 +889,7 @@ description: Configure metric producers. - property: cardinality_limits description: Configure cardinality limits. + isSdkExtensionPlugin: false - type: PushMetricExporter properties: - property: otlp_http @@ -833,6 +905,7 @@ - property: console description: | Configure exporter to be console. + isSdkExtensionPlugin: true - type: Resource properties: - property: attributes @@ -852,6 +925,7 @@ Configure resource attributes. Entries have lower priority than entries from .resource.attributes. The value is a list of comma separated key-value pairs matching the format of OTEL_RESOURCE_ATTRIBUTES. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details. If omitted or null, no resource attributes are added. + isSdkExtensionPlugin: false - type: Sampler properties: - property: always_off @@ -864,14 +938,17 @@ description: Configure sampler to be parent_based. - property: trace_id_ratio_based description: Configure sampler to be trace_id_ratio_based. + isSdkExtensionPlugin: true - type: SimpleLogRecordProcessor properties: - property: exporter description: Configure exporter. + isSdkExtensionPlugin: false - type: SimpleSpanProcessor properties: - property: exporter description: Configure exporter. + isSdkExtensionPlugin: false - type: SpanExporter properties: - property: otlp_http @@ -886,6 +963,7 @@ description: Configure exporter to be console. - property: zipkin description: Configure exporter to be zipkin. + isSdkExtensionPlugin: true - type: SpanLimits properties: - property: attribute_value_length_limit @@ -918,14 +996,17 @@ Configure max attributes per span link. Value must be non-negative. If omitted or null, 128 is used. + isSdkExtensionPlugin: false - type: SpanProcessor properties: - property: batch description: Configure a batch span processor. - property: simple description: Configure a simple span processor. + isSdkExtensionPlugin: true - type: SumAggregation properties: [] + isSdkExtensionPlugin: false - type: TextMapPropagator properties: - property: tracecontext @@ -940,14 +1021,17 @@ description: Include the jaeger propagator. - property: ottrace description: Include the opentracing propagator. + isSdkExtensionPlugin: true - type: TraceContextPropagator properties: [] + isSdkExtensionPlugin: false - type: TraceIdRatioBasedSampler properties: - property: ratio description: | Configure trace_id_ratio. If omitted or null, 1.0 is used. + isSdkExtensionPlugin: false - type: TracerProvider properties: - property: processors @@ -962,6 +1046,7 @@ description: | Configure tracers. This type is in development and subject to breaking changes in minor versions. + isSdkExtensionPlugin: false - type: View properties: - property: selector @@ -970,6 +1055,7 @@ Selection criteria is additive as described in https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#instrument-selection-criteria. - property: stream description: Configure view stream. + isSdkExtensionPlugin: false - type: ViewSelector properties: - property: instrument_name @@ -997,6 +1083,7 @@ description: | Configure meter schema url selection criteria. If omitted or null, all meter schema URLs match. + isSdkExtensionPlugin: false - type: ViewStream properties: - property: name @@ -1019,6 +1106,7 @@ - property: attribute_keys description: | Configure attribute keys retained in the resulting stream(s). + isSdkExtensionPlugin: false - type: ZipkinSpanExporter properties: - property: endpoint @@ -1030,3 +1118,4 @@ Configure max time (in milliseconds) to wait for each export. Value must be non-negative. A value of 0 indicates indefinite. If omitted or null, 10000 is used. + isSdkExtensionPlugin: false diff --git a/scripts/generate-markdown.js b/scripts/generate-markdown.js index c91b530c..3aeca0f5 100644 --- a/scripts/generate-markdown.js +++ b/scripts/generate-markdown.js @@ -13,10 +13,15 @@ const jsonSchemaTypesByType = {}; readJsonSchemaTypes().forEach(type => jsonSchemaTypesByType[type.type] = type); const output = []; - -output.push('\n\n') +const headers = []; types.sort((a, b) => a.type.localeCompare(b.type)); + +addHeader('Overview', 'overview', 1); +output.push('TODO\n'); + +// Write types +addHeader('Types', 'types', 1); types.forEach(metaSchemaType => { const type = metaSchemaType.type; const jsonSchemaType = jsonSchemaTypesByType[type]; @@ -26,7 +31,7 @@ types.forEach(metaSchemaType => { const required = jsonSchemaType.schema['required']; // Heading - output.push(`### ${type} \n\n`); + addHeader(type, type, 2); // Properties if (metaSchemaType.properties.length === 0) { @@ -59,6 +64,26 @@ types.forEach(metaSchemaType => { output.push('\n'); }); +// Write SDK extension plugins +addHeader('SDK Extension Plugins', 'sdk-extension-plugins', 1); +output.push( +`[SDK extension plugins](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk.md#supported-sdk-extension-plugins) are places where custom interface implementations can be referenced and configured. + +For example, you could write a custom \`SpanExporter\`, and indicate that it should be paired with a \`BatchSpanProcessor\`. + +Each of the following types support referencing custom interface implementations. Each type is an object type containing exactly one property whose value is type \`object\` or \`null\`. The property key refers to the name of the custom implementation, and must be the same as the \`name\` of a corresponding registered [ComponentProvider](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk.md#register-componentprovider). The value passed as configuration when the [ComponentProvider.create](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk.md#create) is called. + +SDK extension plugin types may have properties defined corresponding to built-in implementations of the interface. For example, the \`otlp_http\` property of \`SpanExporter\` defines the OTLP http/protobuf exporter. + +`); +types.filter(metaSchemaType => metaSchemaType.isSdkExtensionPlugin) + .forEach(metaSchemaType => { + output.push(`* [${metaSchemaType.type}](#${metaSchemaType.type})\n`) + }); + +headers.push('\n\n'); +output.unshift(...headers); +output.unshift('\n\n') fs.writeFileSync(markdownDocPath, output.join("")); // Helper functions @@ -84,3 +109,9 @@ function formatJsonSchemaPropertyType(jsonSchemaProperty, jsonSchemaTypesByType) }); return output.join(''); } + +function addHeader(title, id, level) { + headers.push(`${' '.repeat(level - 1)}* [${title}](#${id})\n`); + output.push(`${'#'.repeat(level)} ${title} \n\n`); +} + diff --git a/scripts/json-schema.js b/scripts/json-schema.js index 85f67561..f872ad70 100644 --- a/scripts/json-schema.js +++ b/scripts/json-schema.js @@ -162,7 +162,8 @@ export class JsonSchemaType { toMetaSchemaType() { return new MetaSchemaType( this.type, - this.properties.map(jsonSchemaProperty => new MetaSchemaProperty(jsonSchemaProperty.property, "TODO")) + this.properties.map(jsonSchemaProperty => new MetaSchemaProperty(jsonSchemaProperty.property, "TODO")), + false ); } } diff --git a/scripts/meta-schema.js b/scripts/meta-schema.js index b44d7dd8..e2c44924 100644 --- a/scripts/meta-schema.js +++ b/scripts/meta-schema.js @@ -27,6 +27,7 @@ export function readAndFixMetaSchemaTypes() { } const rawProperties = rawMetaSchemaType['properties']; + const isSdkExtensionPlugin = Boolean(rawMetaSchemaType['isSdkExtensionPlugin']); const metaSchemaProperties = []; if (Array.isArray(rawProperties)) { @@ -49,7 +50,7 @@ export function readAndFixMetaSchemaTypes() { messages.push(`${metaSchemaFileName} contains entry ${JSON.stringify(rawMetaSchemaType)} with invalid properties. Ignoring properties.`); } - metaSchemaTypes.push(new MetaSchemaType(type, metaSchemaProperties)); + metaSchemaTypes.push(new MetaSchemaType(type, metaSchemaProperties, isSdkExtensionPlugin)); }); } else { messages.push(`${metaSchemaFileName} must be array of types.`); @@ -133,17 +134,20 @@ export class MetaSchemaProperty { export class MetaSchemaType { type; properties; + isSdkExtensionPlugin; // TODO: track language implementation status - constructor(type, properties) { + constructor(type, properties, isSdkExtensionPlugin) { this.type = type; this.properties = properties; + this.isSdkExtensionPlugin = isSdkExtensionPlugin; + } toJson() { const properties = this.properties.map(property => property.toJson()); properties.sort((a, b) => a.property.localeCompare(b.property)); - return { type: this.type, properties: this.properties }; + return { type: this.type, properties: this.properties, isSdkExtensionPlugin: this.isSdkExtensionPlugin }; } } From 692cf2e60f45ab2a7307c1338f1ffc381ce94c59 Mon Sep 17 00:00:00 2001 From: Jack Berg <34418638+jack-berg@users.noreply.github.com> Date: Sat, 4 Oct 2025 12:51:53 -0400 Subject: [PATCH 17/23] Fix schema-docs.md links --- schema-docs.md | 608 +++++++++++++++++------------------ scripts/generate-markdown.js | 4 +- 2 files changed, 306 insertions(+), 306 deletions(-) diff --git a/schema-docs.md b/schema-docs.md index 2d5fa8b2..98063a25 100644 --- a/schema-docs.md +++ b/schema-docs.md @@ -2,95 +2,95 @@ * [Overview](#overview) * [Types](#types) - * [Aggregation](#Aggregation) - * [AlwaysOffSampler](#AlwaysOffSampler) - * [AlwaysOnSampler](#AlwaysOnSampler) - * [AttributeLimits](#AttributeLimits) - * [AttributeNameValue](#AttributeNameValue) - * [AttributeType](#AttributeType) - * [B3MultiPropagator](#B3MultiPropagator) - * [B3Propagator](#B3Propagator) - * [BaggagePropagator](#BaggagePropagator) - * [Base2ExponentialBucketHistogramAggregation](#Base2ExponentialBucketHistogramAggregation) - * [BatchLogRecordProcessor](#BatchLogRecordProcessor) - * [BatchSpanProcessor](#BatchSpanProcessor) - * [CardinalityLimits](#CardinalityLimits) - * [ConsoleExporter](#ConsoleExporter) - * [DefaultAggregation](#DefaultAggregation) - * [DropAggregation](#DropAggregation) - * [ExemplarFilter](#ExemplarFilter) - * [ExperimentalContainerResourceDetector](#ExperimentalContainerResourceDetector) - * [ExperimentalGeneralInstrumentation](#ExperimentalGeneralInstrumentation) - * [ExperimentalHostResourceDetector](#ExperimentalHostResourceDetector) - * [ExperimentalHttpClientInstrumentation](#ExperimentalHttpClientInstrumentation) - * [ExperimentalHttpInstrumentation](#ExperimentalHttpInstrumentation) - * [ExperimentalHttpServerInstrumentation](#ExperimentalHttpServerInstrumentation) - * [ExperimentalInstrumentation](#ExperimentalInstrumentation) - * [ExperimentalLanguageSpecificInstrumentation](#ExperimentalLanguageSpecificInstrumentation) - * [ExperimentalLoggerConfig](#ExperimentalLoggerConfig) - * [ExperimentalLoggerConfigurator](#ExperimentalLoggerConfigurator) - * [ExperimentalLoggerMatcherAndConfig](#ExperimentalLoggerMatcherAndConfig) - * [ExperimentalMeterConfig](#ExperimentalMeterConfig) - * [ExperimentalMeterConfigurator](#ExperimentalMeterConfigurator) - * [ExperimentalMeterMatcherAndConfig](#ExperimentalMeterMatcherAndConfig) - * [ExperimentalOtlpFileExporter](#ExperimentalOtlpFileExporter) - * [ExperimentalOtlpFileMetricExporter](#ExperimentalOtlpFileMetricExporter) - * [ExperimentalPeerInstrumentation](#ExperimentalPeerInstrumentation) - * [ExperimentalPeerServiceMapping](#ExperimentalPeerServiceMapping) - * [ExperimentalProcessResourceDetector](#ExperimentalProcessResourceDetector) - * [ExperimentalPrometheusMetricExporter](#ExperimentalPrometheusMetricExporter) - * [ExperimentalResourceDetection](#ExperimentalResourceDetection) - * [ExperimentalResourceDetector](#ExperimentalResourceDetector) - * [ExperimentalServiceResourceDetector](#ExperimentalServiceResourceDetector) - * [ExperimentalTracerConfig](#ExperimentalTracerConfig) - * [ExperimentalTracerConfigurator](#ExperimentalTracerConfigurator) - * [ExperimentalTracerMatcherAndConfig](#ExperimentalTracerMatcherAndConfig) - * [ExplicitBucketHistogramAggregation](#ExplicitBucketHistogramAggregation) - * [ExporterDefaultHistogramAggregation](#ExporterDefaultHistogramAggregation) - * [ExporterTemporalityPreference](#ExporterTemporalityPreference) - * [IncludeExclude](#IncludeExclude) - * [InstrumentType](#InstrumentType) - * [JaegerPropagator](#JaegerPropagator) - * [JaegerRemoteSampler](#JaegerRemoteSampler) - * [LastValueAggregation](#LastValueAggregation) - * [LoggerProvider](#LoggerProvider) - * [LogRecordExporter](#LogRecordExporter) - * [LogRecordLimits](#LogRecordLimits) - * [LogRecordProcessor](#LogRecordProcessor) - * [MeterProvider](#MeterProvider) - * [MetricProducer](#MetricProducer) - * [MetricReader](#MetricReader) - * [NameStringValuePair](#NameStringValuePair) - * [OpenCensusMetricProducer](#OpenCensusMetricProducer) - * [OpentelemetryConfiguration](#OpentelemetryConfiguration) - * [OpenTracingPropagator](#OpenTracingPropagator) - * [OtlpGrpcExporter](#OtlpGrpcExporter) - * [OtlpGrpcMetricExporter](#OtlpGrpcMetricExporter) - * [OtlpHttpEncoding](#OtlpHttpEncoding) - * [OtlpHttpExporter](#OtlpHttpExporter) - * [OtlpHttpMetricExporter](#OtlpHttpMetricExporter) - * [ParentBasedSampler](#ParentBasedSampler) - * [PeriodicMetricReader](#PeriodicMetricReader) - * [Propagator](#Propagator) - * [PullMetricExporter](#PullMetricExporter) - * [PullMetricReader](#PullMetricReader) - * [PushMetricExporter](#PushMetricExporter) - * [Resource](#Resource) - * [Sampler](#Sampler) - * [SimpleLogRecordProcessor](#SimpleLogRecordProcessor) - * [SimpleSpanProcessor](#SimpleSpanProcessor) - * [SpanExporter](#SpanExporter) - * [SpanLimits](#SpanLimits) - * [SpanProcessor](#SpanProcessor) - * [SumAggregation](#SumAggregation) - * [TextMapPropagator](#TextMapPropagator) - * [TraceContextPropagator](#TraceContextPropagator) - * [TraceIdRatioBasedSampler](#TraceIdRatioBasedSampler) - * [TracerProvider](#TracerProvider) - * [View](#View) - * [ViewSelector](#ViewSelector) - * [ViewStream](#ViewStream) - * [ZipkinSpanExporter](#ZipkinSpanExporter) + * [Aggregation](#aggregation) + * [AlwaysOffSampler](#alwaysoffsampler) + * [AlwaysOnSampler](#alwaysonsampler) + * [AttributeLimits](#attributelimits) + * [AttributeNameValue](#attributenamevalue) + * [AttributeType](#attributetype) + * [B3MultiPropagator](#b3multipropagator) + * [B3Propagator](#b3propagator) + * [BaggagePropagator](#baggagepropagator) + * [Base2ExponentialBucketHistogramAggregation](#base2exponentialbuckethistogramaggregation) + * [BatchLogRecordProcessor](#batchlogrecordprocessor) + * [BatchSpanProcessor](#batchspanprocessor) + * [CardinalityLimits](#cardinalitylimits) + * [ConsoleExporter](#consoleexporter) + * [DefaultAggregation](#defaultaggregation) + * [DropAggregation](#dropaggregation) + * [ExemplarFilter](#exemplarfilter) + * [ExperimentalContainerResourceDetector](#experimentalcontainerresourcedetector) + * [ExperimentalGeneralInstrumentation](#experimentalgeneralinstrumentation) + * [ExperimentalHostResourceDetector](#experimentalhostresourcedetector) + * [ExperimentalHttpClientInstrumentation](#experimentalhttpclientinstrumentation) + * [ExperimentalHttpInstrumentation](#experimentalhttpinstrumentation) + * [ExperimentalHttpServerInstrumentation](#experimentalhttpserverinstrumentation) + * [ExperimentalInstrumentation](#experimentalinstrumentation) + * [ExperimentalLanguageSpecificInstrumentation](#experimentallanguagespecificinstrumentation) + * [ExperimentalLoggerConfig](#experimentalloggerconfig) + * [ExperimentalLoggerConfigurator](#experimentalloggerconfigurator) + * [ExperimentalLoggerMatcherAndConfig](#experimentalloggermatcherandconfig) + * [ExperimentalMeterConfig](#experimentalmeterconfig) + * [ExperimentalMeterConfigurator](#experimentalmeterconfigurator) + * [ExperimentalMeterMatcherAndConfig](#experimentalmetermatcherandconfig) + * [ExperimentalOtlpFileExporter](#experimentalotlpfileexporter) + * [ExperimentalOtlpFileMetricExporter](#experimentalotlpfilemetricexporter) + * [ExperimentalPeerInstrumentation](#experimentalpeerinstrumentation) + * [ExperimentalPeerServiceMapping](#experimentalpeerservicemapping) + * [ExperimentalProcessResourceDetector](#experimentalprocessresourcedetector) + * [ExperimentalPrometheusMetricExporter](#experimentalprometheusmetricexporter) + * [ExperimentalResourceDetection](#experimentalresourcedetection) + * [ExperimentalResourceDetector](#experimentalresourcedetector) + * [ExperimentalServiceResourceDetector](#experimentalserviceresourcedetector) + * [ExperimentalTracerConfig](#experimentaltracerconfig) + * [ExperimentalTracerConfigurator](#experimentaltracerconfigurator) + * [ExperimentalTracerMatcherAndConfig](#experimentaltracermatcherandconfig) + * [ExplicitBucketHistogramAggregation](#explicitbuckethistogramaggregation) + * [ExporterDefaultHistogramAggregation](#exporterdefaulthistogramaggregation) + * [ExporterTemporalityPreference](#exportertemporalitypreference) + * [IncludeExclude](#includeexclude) + * [InstrumentType](#instrumenttype) + * [JaegerPropagator](#jaegerpropagator) + * [JaegerRemoteSampler](#jaegerremotesampler) + * [LastValueAggregation](#lastvalueaggregation) + * [LoggerProvider](#loggerprovider) + * [LogRecordExporter](#logrecordexporter) + * [LogRecordLimits](#logrecordlimits) + * [LogRecordProcessor](#logrecordprocessor) + * [MeterProvider](#meterprovider) + * [MetricProducer](#metricproducer) + * [MetricReader](#metricreader) + * [NameStringValuePair](#namestringvaluepair) + * [OpenCensusMetricProducer](#opencensusmetricproducer) + * [OpentelemetryConfiguration](#opentelemetryconfiguration) + * [OpenTracingPropagator](#opentracingpropagator) + * [OtlpGrpcExporter](#otlpgrpcexporter) + * [OtlpGrpcMetricExporter](#otlpgrpcmetricexporter) + * [OtlpHttpEncoding](#otlphttpencoding) + * [OtlpHttpExporter](#otlphttpexporter) + * [OtlpHttpMetricExporter](#otlphttpmetricexporter) + * [ParentBasedSampler](#parentbasedsampler) + * [PeriodicMetricReader](#periodicmetricreader) + * [Propagator](#propagator) + * [PullMetricExporter](#pullmetricexporter) + * [PullMetricReader](#pullmetricreader) + * [PushMetricExporter](#pushmetricexporter) + * [Resource](#resource) + * [Sampler](#sampler) + * [SimpleLogRecordProcessor](#simplelogrecordprocessor) + * [SimpleSpanProcessor](#simplespanprocessor) + * [SpanExporter](#spanexporter) + * [SpanLimits](#spanlimits) + * [SpanProcessor](#spanprocessor) + * [SumAggregation](#sumaggregation) + * [TextMapPropagator](#textmappropagator) + * [TraceContextPropagator](#tracecontextpropagator) + * [TraceIdRatioBasedSampler](#traceidratiobasedsampler) + * [TracerProvider](#tracerprovider) + * [View](#view) + * [ViewSelector](#viewselector) + * [ViewStream](#viewstream) + * [ZipkinSpanExporter](#zipkinspanexporter) * [SDK Extension Plugins](#sdk-extension-plugins) @@ -99,16 +99,16 @@ TODO # Types -## Aggregation +## Aggregation | Property | Description | Type | Required? | |---|---|---|---| -| `default` | TODO | [`DefaultAggregation`](#DefaultAggregation) | `false` | -| `drop` | TODO | [`DropAggregation`](#DropAggregation) | `false` | -| `explicit_bucket_histogram` | Configure aggregation to be explicit_bucket_histogram. | [`ExplicitBucketHistogramAggregation`](#ExplicitBucketHistogramAggregation) | `false` | -| `base2_exponential_bucket_histogram` | TODO | [`Base2ExponentialBucketHistogramAggregation`](#Base2ExponentialBucketHistogramAggregation) | `false` | -| `last_value` | TODO | [`LastValueAggregation`](#LastValueAggregation) | `false` | -| `sum` | TODO | [`SumAggregation`](#SumAggregation) | `false` | +| `default` | TODO | [`DefaultAggregation`](#defaultaggregation) | `false` | +| `drop` | TODO | [`DropAggregation`](#dropaggregation) | `false` | +| `explicit_bucket_histogram` | Configure aggregation to be explicit_bucket_histogram. | [`ExplicitBucketHistogramAggregation`](#explicitbuckethistogramaggregation) | `false` | +| `base2_exponential_bucket_histogram` | TODO | [`Base2ExponentialBucketHistogramAggregation`](#base2exponentialbuckethistogramaggregation) | `false` | +| `last_value` | TODO | [`LastValueAggregation`](#lastvalueaggregation) | `false` | +| `sum` | TODO | [`SumAggregation`](#sumaggregation) | `false` |
JSON Schema @@ -142,7 +142,7 @@ TODO }
-## AlwaysOffSampler +## AlwaysOffSampler No properties. @@ -159,7 +159,7 @@ No properties. }
-## AlwaysOnSampler +## AlwaysOnSampler No properties. @@ -176,7 +176,7 @@ No properties. }
-## AttributeLimits +## AttributeLimits | Property | Description | Type | Required? | |---|---|---|---| @@ -207,13 +207,13 @@ No properties. }
-## AttributeNameValue +## AttributeNameValue | Property | Description | Type | Required? | |---|---|---|---| | `name` | The attribute name.
| `string` | `true` | | `value` | The attribute value.
The type of value must match .type.
| `oneOf` | `true` | -| `type` | The attribute type.
Values include: string, bool, int, double, string_array, bool_array, int_array, double_array.
If omitted or null, string is used.
| [`AttributeType`](#AttributeType) | `false` | +| `type` | The attribute type.
Values include: string, bool, int, double, string_array, bool_array, int_array, double_array.
If omitted or null, string is used.
| [`AttributeType`](#attributetype) | `false` |
JSON Schema @@ -271,7 +271,7 @@ No properties. }
-## AttributeType +## AttributeType No properties. @@ -298,7 +298,7 @@ No properties. }
-## B3MultiPropagator +## B3MultiPropagator No properties. @@ -315,7 +315,7 @@ No properties. } -## B3Propagator +## B3Propagator No properties. @@ -332,7 +332,7 @@ No properties. } -## BaggagePropagator +## BaggagePropagator No properties. @@ -349,7 +349,7 @@ No properties. } -## Base2ExponentialBucketHistogramAggregation +## Base2ExponentialBucketHistogramAggregation | Property | Description | Type | Required? | |---|---|---|---| @@ -390,7 +390,7 @@ No properties. } -## BatchLogRecordProcessor +## BatchLogRecordProcessor | Property | Description | Type | Required? | |---|---|---|---| @@ -398,7 +398,7 @@ No properties. | `export_timeout` | Configure maximum allowed time (in milliseconds) to export data.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 30000 is used.
| one of:
* `integer`
* `null`
| `false` | | `max_queue_size` | Configure maximum queue size. Value must be positive.
If omitted or null, 2048 is used.
| one of:
* `integer`
* `null`
| `false` | | `max_export_batch_size` | Configure maximum batch size. Value must be positive.
If omitted or null, 512 is used.
| one of:
* `integer`
* `null`
| `false` | -| `exporter` | Configure exporter. | [`LogRecordExporter`](#LogRecordExporter) | `true` | +| `exporter` | Configure exporter. | [`LogRecordExporter`](#logrecordexporter) | `true` |
JSON Schema @@ -446,7 +446,7 @@ No properties. }
-## BatchSpanProcessor +## BatchSpanProcessor | Property | Description | Type | Required? | |---|---|---|---| @@ -454,7 +454,7 @@ No properties. | `export_timeout` | Configure maximum allowed time (in milliseconds) to export data.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 30000 is used.
| one of:
* `integer`
* `null`
| `false` | | `max_queue_size` | Configure maximum queue size. Value must be positive.
If omitted or null, 2048 is used.
| one of:
* `integer`
* `null`
| `false` | | `max_export_batch_size` | Configure maximum batch size. Value must be positive.
If omitted or null, 512 is used.
| one of:
* `integer`
* `null`
| `false` | -| `exporter` | Configure exporter. | [`SpanExporter`](#SpanExporter) | `true` | +| `exporter` | Configure exporter. | [`SpanExporter`](#spanexporter) | `true` |
JSON Schema @@ -502,7 +502,7 @@ No properties. }
-## CardinalityLimits +## CardinalityLimits | Property | Description | Type | Required? | |---|---|---|---| @@ -583,7 +583,7 @@ No properties. } -## ConsoleExporter +## ConsoleExporter No properties. @@ -600,7 +600,7 @@ No properties. } -## DefaultAggregation +## DefaultAggregation No properties. @@ -617,7 +617,7 @@ No properties. } -## DropAggregation +## DropAggregation No properties. @@ -634,7 +634,7 @@ No properties. } -## ExemplarFilter +## ExemplarFilter No properties. @@ -655,7 +655,7 @@ No properties. } -## ExperimentalContainerResourceDetector +## ExperimentalContainerResourceDetector No properties. @@ -672,12 +672,12 @@ No properties. } -## ExperimentalGeneralInstrumentation +## ExperimentalGeneralInstrumentation | Property | Description | Type | Required? | |---|---|---|---| -| `peer` | Configure instrumentations following the peer semantic conventions.
See peer semantic conventions: https://opentelemetry.io/docs/specs/semconv/attributes-registry/peer/
| [`ExperimentalPeerInstrumentation`](#ExperimentalPeerInstrumentation) | `false` | -| `http` | Configure instrumentations following the http semantic conventions.
See http semantic conventions: https://opentelemetry.io/docs/specs/semconv/http/
| [`ExperimentalHttpInstrumentation`](#ExperimentalHttpInstrumentation) | `false` | +| `peer` | Configure instrumentations following the peer semantic conventions.
See peer semantic conventions: https://opentelemetry.io/docs/specs/semconv/attributes-registry/peer/
| [`ExperimentalPeerInstrumentation`](#experimentalpeerinstrumentation) | `false` | +| `http` | Configure instrumentations following the http semantic conventions.
See http semantic conventions: https://opentelemetry.io/docs/specs/semconv/http/
| [`ExperimentalHttpInstrumentation`](#experimentalhttpinstrumentation) | `false` |
JSON Schema @@ -697,7 +697,7 @@ No properties. }
-## ExperimentalHostResourceDetector +## ExperimentalHostResourceDetector No properties. @@ -714,7 +714,7 @@ No properties. } -## ExperimentalHttpClientInstrumentation +## ExperimentalHttpClientInstrumentation | Property | Description | Type | Required? | |---|---|---|---| @@ -745,12 +745,12 @@ No properties. } -## ExperimentalHttpInstrumentation +## ExperimentalHttpInstrumentation | Property | Description | Type | Required? | |---|---|---|---| -| `client` | Configure instrumentations following the http client semantic conventions. | [`ExperimentalHttpClientInstrumentation`](#ExperimentalHttpClientInstrumentation) | `false` | -| `server` | Configure instrumentations following the http server semantic conventions. | [`ExperimentalHttpServerInstrumentation`](#ExperimentalHttpServerInstrumentation) | `false` | +| `client` | Configure instrumentations following the http client semantic conventions. | [`ExperimentalHttpClientInstrumentation`](#experimentalhttpclientinstrumentation) | `false` | +| `server` | Configure instrumentations following the http server semantic conventions. | [`ExperimentalHttpServerInstrumentation`](#experimentalhttpserverinstrumentation) | `false` |
JSON Schema @@ -770,7 +770,7 @@ No properties. }
-## ExperimentalHttpServerInstrumentation +## ExperimentalHttpServerInstrumentation | Property | Description | Type | Required? | |---|---|---|---| @@ -801,22 +801,22 @@ No properties. } -## ExperimentalInstrumentation +## ExperimentalInstrumentation | Property | Description | Type | Required? | |---|---|---|---| -| `general` | Configure general SemConv options that may apply to multiple languages and instrumentations.
Instrumenation may merge general config options with the language specific configuration at .instrumentation..
| [`ExperimentalGeneralInstrumentation`](#ExperimentalGeneralInstrumentation) | `false` | -| `cpp` | Configure C++ language-specific instrumentation libraries. | [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | -| `dotnet` | Configure .NET language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | -| `erlang` | Configure Erlang language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | -| `go` | Configure Go language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | -| `java` | Configure Java language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | -| `js` | Configure JavaScript language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | -| `php` | Configure PHP language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | -| `python` | Configure Python language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | -| `ruby` | Configure Ruby language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | -| `rust` | Configure Rust language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | -| `swift` | Configure Swift language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#ExperimentalLanguageSpecificInstrumentation) | `false` | +| `general` | Configure general SemConv options that may apply to multiple languages and instrumentations.
Instrumenation may merge general config options with the language specific configuration at .instrumentation..
| [`ExperimentalGeneralInstrumentation`](#experimentalgeneralinstrumentation) | `false` | +| `cpp` | Configure C++ language-specific instrumentation libraries. | [`ExperimentalLanguageSpecificInstrumentation`](#experimentallanguagespecificinstrumentation) | `false` | +| `dotnet` | Configure .NET language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#experimentallanguagespecificinstrumentation) | `false` | +| `erlang` | Configure Erlang language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#experimentallanguagespecificinstrumentation) | `false` | +| `go` | Configure Go language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#experimentallanguagespecificinstrumentation) | `false` | +| `java` | Configure Java language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#experimentallanguagespecificinstrumentation) | `false` | +| `js` | Configure JavaScript language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#experimentallanguagespecificinstrumentation) | `false` | +| `php` | Configure PHP language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#experimentallanguagespecificinstrumentation) | `false` | +| `python` | Configure Python language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#experimentallanguagespecificinstrumentation) | `false` | +| `ruby` | Configure Ruby language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#experimentallanguagespecificinstrumentation) | `false` | +| `rust` | Configure Rust language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#experimentallanguagespecificinstrumentation) | `false` | +| `swift` | Configure Swift language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#experimentallanguagespecificinstrumentation) | `false` |
JSON Schema @@ -972,7 +972,7 @@ No properties. }
-## ExperimentalLanguageSpecificInstrumentation +## ExperimentalLanguageSpecificInstrumentation No properties. @@ -991,7 +991,7 @@ No properties. } -## ExperimentalLoggerConfig +## ExperimentalLoggerConfig | Property | Description | Type | Required? | |---|---|---|---| @@ -1016,12 +1016,12 @@ No properties. } -## ExperimentalLoggerConfigurator +## ExperimentalLoggerConfigurator | Property | Description | Type | Required? | |---|---|---|---| -| `default_config` | Configure the default logger config used there is no matching entry in .logger_configurator/development.loggers. | [`ExperimentalLoggerConfig`](#ExperimentalLoggerConfig) | `false` | -| `loggers` | Configure loggers. | `array` of [`ExperimentalLoggerMatcherAndConfig`](#ExperimentalLoggerMatcherAndConfig) | `false` | +| `default_config` | Configure the default logger config used there is no matching entry in .logger_configurator/development.loggers. | [`ExperimentalLoggerConfig`](#experimentalloggerconfig) | `false` | +| `loggers` | Configure loggers. | `array` of [`ExperimentalLoggerMatcherAndConfig`](#experimentalloggermatcherandconfig) | `false` |
JSON Schema @@ -1046,12 +1046,12 @@ No properties. }
-## ExperimentalLoggerMatcherAndConfig +## ExperimentalLoggerMatcherAndConfig | Property | Description | Type | Required? | |---|---|---|---| | `name` | Configure logger names to match, evaluated as follows:

* If the logger name exactly matches.
* If the logger name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
| `string` | `false` | -| `config` | The logger config. | [`ExperimentalLoggerConfig`](#ExperimentalLoggerConfig) | `false` | +| `config` | The logger config. | [`ExperimentalLoggerConfig`](#experimentalloggerconfig) | `false` |
JSON Schema @@ -1075,7 +1075,7 @@ No properties. }
-## ExperimentalMeterConfig +## ExperimentalMeterConfig | Property | Description | Type | Required? | |---|---|---|---| @@ -1100,12 +1100,12 @@ No properties. } -## ExperimentalMeterConfigurator +## ExperimentalMeterConfigurator | Property | Description | Type | Required? | |---|---|---|---| -| `default_config` | Configure the default meter config used there is no matching entry in .meter_configurator/development.meters. | [`ExperimentalMeterConfig`](#ExperimentalMeterConfig) | `false` | -| `meters` | Configure meters. | `array` of [`ExperimentalMeterMatcherAndConfig`](#ExperimentalMeterMatcherAndConfig) | `false` | +| `default_config` | Configure the default meter config used there is no matching entry in .meter_configurator/development.meters. | [`ExperimentalMeterConfig`](#experimentalmeterconfig) | `false` | +| `meters` | Configure meters. | `array` of [`ExperimentalMeterMatcherAndConfig`](#experimentalmetermatcherandconfig) | `false` |
JSON Schema @@ -1130,12 +1130,12 @@ No properties. }
-## ExperimentalMeterMatcherAndConfig +## ExperimentalMeterMatcherAndConfig | Property | Description | Type | Required? | |---|---|---|---| | `name` | Configure meter names to match, evaluated as follows:

* If the meter name exactly matches.
* If the meter name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
| `string` | `false` | -| `config` | The meter config. | [`ExperimentalMeterConfig`](#ExperimentalMeterConfig) | `false` | +| `config` | The meter config. | [`ExperimentalMeterConfig`](#experimentalmeterconfig) | `false` |
JSON Schema @@ -1159,7 +1159,7 @@ No properties. }
-## ExperimentalOtlpFileExporter +## ExperimentalOtlpFileExporter | Property | Description | Type | Required? | |---|---|---|---| @@ -1186,13 +1186,13 @@ No properties. } -## ExperimentalOtlpFileMetricExporter +## ExperimentalOtlpFileMetricExporter | Property | Description | Type | Required? | |---|---|---|---| | `output_stream` | Configure output stream.
Values include stdout, or scheme+destination. For example: file:///path/to/file.jsonl.
If omitted or null, stdout is used.
| one of:
* `string`
* `null`
| `false` | -| `temporality_preference` | Configure temporality preference.
Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, cumulative is used.
| [`ExporterTemporalityPreference`](#ExporterTemporalityPreference) | `false` | -| `default_histogram_aggregation` | Configure default histogram aggregation.
Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, explicit_bucket_histogram is used.
| [`ExporterDefaultHistogramAggregation`](#ExporterDefaultHistogramAggregation) | `false` | +| `temporality_preference` | Configure temporality preference.
Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, cumulative is used.
| [`ExporterTemporalityPreference`](#exportertemporalitypreference) | `false` | +| `default_histogram_aggregation` | Configure default histogram aggregation.
Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, explicit_bucket_histogram is used.
| [`ExporterDefaultHistogramAggregation`](#exporterdefaulthistogramaggregation) | `false` |
JSON Schema @@ -1221,11 +1221,11 @@ No properties. }
-## ExperimentalPeerInstrumentation +## ExperimentalPeerInstrumentation | Property | Description | Type | Required? | |---|---|---|---| -| `service_mapping` | Configure the service mapping for instrumentations following peer.service semantic conventions.
See peer.service semantic conventions: https://opentelemetry.io/docs/specs/semconv/general/attributes/#general-remote-service-attributes
| `array` of [`ExperimentalPeerServiceMapping`](#ExperimentalPeerServiceMapping) | `false` | +| `service_mapping` | Configure the service mapping for instrumentations following peer.service semantic conventions.
See peer.service semantic conventions: https://opentelemetry.io/docs/specs/semconv/general/attributes/#general-remote-service-attributes
| `array` of [`ExperimentalPeerServiceMapping`](#experimentalpeerservicemapping) | `false` |
JSON Schema @@ -1245,7 +1245,7 @@ No properties. }
-## ExperimentalPeerServiceMapping +## ExperimentalPeerServiceMapping | Property | Description | Type | Required? | |---|---|---|---| @@ -1274,7 +1274,7 @@ No properties. } -## ExperimentalProcessResourceDetector +## ExperimentalProcessResourceDetector No properties. @@ -1291,14 +1291,14 @@ No properties. } -## ExperimentalPrometheusMetricExporter +## ExperimentalPrometheusMetricExporter | Property | Description | Type | Required? | |---|---|---|---| | `host` | Configure host.
If omitted or null, localhost is used.
| one of:
* `string`
* `null`
| `false` | | `port` | Configure port.
If omitted or null, 9464 is used.
| one of:
* `integer`
* `null`
| `false` | | `without_scope_info` | Configure Prometheus Exporter to produce metrics without a scope info metric.
If omitted or null, false is used.
| one of:
* `boolean`
* `null`
| `false` | -| `with_resource_constant_labels` | Configure Prometheus Exporter to add resource attributes as metrics attributes, where the resource attribute keys match the patterns. | [`IncludeExclude`](#IncludeExclude) | `false` | +| `with_resource_constant_labels` | Configure Prometheus Exporter to add resource attributes as metrics attributes, where the resource attribute keys match the patterns. | [`IncludeExclude`](#includeexclude) | `false` | | `translation_strategy` | Configure how Prometheus metrics are exposed. Values include:

* UnderscoreEscapingWithSuffixes, the default. This fully escapes metric names for classic Prometheus metric name compatibility, and includes appending type and unit suffixes.
* UnderscoreEscapingWithoutSuffixes, metric names will continue to escape special characters to _, but suffixes won't be attached.
* NoUTF8EscapingWithSuffixes will disable changing special characters to _. Special suffixes like units and _total for counters will be attached.
* NoTranslation. This strategy bypasses all metric and label name translation, passing them through unaltered.

If omitted or null, UnderscoreEscapingWithSuffixes is used.
| one of:
* `string`
* `null`
| `false` |
@@ -1349,12 +1349,12 @@ No properties. }
-## ExperimentalResourceDetection +## ExperimentalResourceDetection | Property | Description | Type | Required? | |---|---|---|---| -| `attributes` | Configure attributes provided by resource detectors. | [`IncludeExclude`](#IncludeExclude) | `false` | -| `detectors` | Configure resource detectors.
Resource detector names are dependent on the SDK language ecosystem. Please consult documentation for each respective language.
If omitted or null, no resource detectors are enabled.
| `array` of [`ExperimentalResourceDetector`](#ExperimentalResourceDetector) | `false` | +| `attributes` | Configure attributes provided by resource detectors. | [`IncludeExclude`](#includeexclude) | `false` | +| `detectors` | Configure resource detectors.
Resource detector names are dependent on the SDK language ecosystem. Please consult documentation for each respective language.
If omitted or null, no resource detectors are enabled.
| `array` of [`ExperimentalResourceDetector`](#experimentalresourcedetector) | `false` |
JSON Schema @@ -1377,14 +1377,14 @@ No properties. }
-## ExperimentalResourceDetector +## ExperimentalResourceDetector | Property | Description | Type | Required? | |---|---|---|---| -| `container` | Enable the container resource detector, which populates container.* attributes.
| [`ExperimentalContainerResourceDetector`](#ExperimentalContainerResourceDetector) | `false` | -| `host` | Enable the host resource detector, which populates host.* and os.* attributes.
| [`ExperimentalHostResourceDetector`](#ExperimentalHostResourceDetector) | `false` | -| `process` | Enable the process resource detector, which populates process.* attributes.
| [`ExperimentalProcessResourceDetector`](#ExperimentalProcessResourceDetector) | `false` | -| `service` | Enable the service detector, which populates service.name based on the OTEL_SERVICE_NAME environment variable and service.instance.id.
| [`ExperimentalServiceResourceDetector`](#ExperimentalServiceResourceDetector) | `false` | +| `container` | Enable the container resource detector, which populates container.* attributes.
| [`ExperimentalContainerResourceDetector`](#experimentalcontainerresourcedetector) | `false` | +| `host` | Enable the host resource detector, which populates host.* and os.* attributes.
| [`ExperimentalHostResourceDetector`](#experimentalhostresourcedetector) | `false` | +| `process` | Enable the process resource detector, which populates process.* attributes.
| [`ExperimentalProcessResourceDetector`](#experimentalprocessresourcedetector) | `false` | +| `service` | Enable the service detector, which populates service.name based on the OTEL_SERVICE_NAME environment variable and service.instance.id.
| [`ExperimentalServiceResourceDetector`](#experimentalserviceresourcedetector) | `false` |
JSON Schema @@ -1420,7 +1420,7 @@ No properties. }
-## ExperimentalServiceResourceDetector +## ExperimentalServiceResourceDetector No properties. @@ -1437,7 +1437,7 @@ No properties. } -## ExperimentalTracerConfig +## ExperimentalTracerConfig | Property | Description | Type | Required? | |---|---|---|---| @@ -1462,12 +1462,12 @@ No properties. } -## ExperimentalTracerConfigurator +## ExperimentalTracerConfigurator | Property | Description | Type | Required? | |---|---|---|---| -| `default_config` | Configure the default tracer config used there is no matching entry in .tracer_configurator/development.tracers. | [`ExperimentalTracerConfig`](#ExperimentalTracerConfig) | `false` | -| `tracers` | Configure tracers. | `array` of [`ExperimentalTracerMatcherAndConfig`](#ExperimentalTracerMatcherAndConfig) | `false` | +| `default_config` | Configure the default tracer config used there is no matching entry in .tracer_configurator/development.tracers. | [`ExperimentalTracerConfig`](#experimentaltracerconfig) | `false` | +| `tracers` | Configure tracers. | `array` of [`ExperimentalTracerMatcherAndConfig`](#experimentaltracermatcherandconfig) | `false` |
JSON Schema @@ -1492,12 +1492,12 @@ No properties. }
-## ExperimentalTracerMatcherAndConfig +## ExperimentalTracerMatcherAndConfig | Property | Description | Type | Required? | |---|---|---|---| | `name` | Configure tracer names to match, evaluated as follows:

* If the tracer name exactly matches.
* If the tracer name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
| `string` | `false` | -| `config` | The tracer config. | [`ExperimentalTracerConfig`](#ExperimentalTracerConfig) | `false` | +| `config` | The tracer config. | [`ExperimentalTracerConfig`](#experimentaltracerconfig) | `false` |
JSON Schema @@ -1521,7 +1521,7 @@ No properties. }
-## ExplicitBucketHistogramAggregation +## ExplicitBucketHistogramAggregation | Property | Description | Type | Required? | |---|---|---|---| @@ -1555,7 +1555,7 @@ No properties. } -## ExporterDefaultHistogramAggregation +## ExporterDefaultHistogramAggregation No properties. @@ -1575,7 +1575,7 @@ No properties. } -## ExporterTemporalityPreference +## ExporterTemporalityPreference No properties. @@ -1596,7 +1596,7 @@ No properties. } -## IncludeExclude +## IncludeExclude | Property | Description | Type | Required? | |---|---|---|---| @@ -1627,7 +1627,7 @@ No properties. } -## InstrumentType +## InstrumentType No properties. @@ -1652,7 +1652,7 @@ No properties. } -## JaegerPropagator +## JaegerPropagator No properties. @@ -1669,13 +1669,13 @@ No properties. } -## JaegerRemoteSampler +## JaegerRemoteSampler | Property | Description | Type | Required? | |---|---|---|---| | `endpoint` | TODO | one of:
* `string`
* `null`
| `false` | | `interval` | TODO | one of:
* `integer`
* `null`
| `false` | -| `initial_sampler` | TODO | [`Sampler`](#Sampler) | `false` | +| `initial_sampler` | TODO | [`Sampler`](#sampler) | `false` |
JSON Schema @@ -1708,7 +1708,7 @@ No properties. }
-## LastValueAggregation +## LastValueAggregation No properties. @@ -1725,13 +1725,13 @@ No properties. } -## LoggerProvider +## LoggerProvider | Property | Description | Type | Required? | |---|---|---|---| -| `processors` | Configure log record processors. | `array` of [`LogRecordProcessor`](#LogRecordProcessor) | `true` | -| `limits` | Configure log record limits. See also attribute_limits. | [`LogRecordLimits`](#LogRecordLimits) | `false` | -| `logger_configurator/development` | Configure loggers.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalLoggerConfigurator`](#ExperimentalLoggerConfigurator) | `false` | +| `processors` | Configure log record processors. | `array` of [`LogRecordProcessor`](#logrecordprocessor) | `true` | +| `limits` | Configure log record limits. See also attribute_limits. | [`LogRecordLimits`](#logrecordlimits) | `false` | +| `logger_configurator/development` | Configure loggers.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalLoggerConfigurator`](#experimentalloggerconfigurator) | `false` |
JSON Schema @@ -1932,14 +1932,14 @@ No properties. }
-## LogRecordExporter +## LogRecordExporter | Property | Description | Type | Required? | |---|---|---|---| -| `otlp_http` | Configure exporter to be OTLP with HTTP transport. | [`OtlpHttpExporter`](#OtlpHttpExporter) | `false` | -| `otlp_grpc` | Configure exporter to be OTLP with gRPC transport. | [`OtlpGrpcExporter`](#OtlpGrpcExporter) | `false` | -| `otlp_file/development` | Configure exporter to be OTLP with file transport.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalOtlpFileExporter`](#ExperimentalOtlpFileExporter) | `false` | -| `console` | Configure exporter to be console. | [`ConsoleExporter`](#ConsoleExporter) | `false` | +| `otlp_http` | Configure exporter to be OTLP with HTTP transport. | [`OtlpHttpExporter`](#otlphttpexporter) | `false` | +| `otlp_grpc` | Configure exporter to be OTLP with gRPC transport. | [`OtlpGrpcExporter`](#otlpgrpcexporter) | `false` | +| `otlp_file/development` | Configure exporter to be OTLP with file transport.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalOtlpFileExporter`](#experimentalotlpfileexporter) | `false` | +| `console` | Configure exporter to be console. | [`ConsoleExporter`](#consoleexporter) | `false` |
JSON Schema @@ -1975,7 +1975,7 @@ No properties. }
-## LogRecordLimits +## LogRecordLimits | Property | Description | Type | Required? | |---|---|---|---| @@ -2008,12 +2008,12 @@ No properties. } -## LogRecordProcessor +## LogRecordProcessor | Property | Description | Type | Required? | |---|---|---|---| -| `batch` | Configure a batch log record processor. | [`BatchLogRecordProcessor`](#BatchLogRecordProcessor) | `false` | -| `simple` | Configure a simple log record processor. | [`SimpleLogRecordProcessor`](#SimpleLogRecordProcessor) | `false` | +| `batch` | Configure a batch log record processor. | [`BatchLogRecordProcessor`](#batchlogrecordprocessor) | `false` | +| `simple` | Configure a simple log record processor. | [`SimpleLogRecordProcessor`](#simplelogrecordprocessor) | `false` |
JSON Schema @@ -2042,14 +2042,14 @@ No properties. }
-## MeterProvider +## MeterProvider | Property | Description | Type | Required? | |---|---|---|---| -| `readers` | Configure metric readers. | `array` of [`MetricReader`](#MetricReader) | `true` | -| `views` | Configure views.
Each view has a selector which determines the instrument(s) it applies to, and a configuration for the resulting stream(s).
| `array` of [`View`](#View) | `false` | -| `exemplar_filter` | Configure the exemplar filter.
Values include: trace_based, always_on, always_off. For behavior of values see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#metrics-sdk-configuration.
If omitted or null, trace_based is used.
| [`ExemplarFilter`](#ExemplarFilter) | `false` | -| `meter_configurator/development` | Configure meters.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalMeterConfigurator`](#ExperimentalMeterConfigurator) | `false` | +| `readers` | Configure metric readers. | `array` of [`MetricReader`](#metricreader) | `true` | +| `views` | Configure views.
Each view has a selector which determines the instrument(s) it applies to, and a configuration for the resulting stream(s).
| `array` of [`View`](#view) | `false` | +| `exemplar_filter` | Configure the exemplar filter.
Values include: trace_based, always_on, always_off. For behavior of values see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#metrics-sdk-configuration.
If omitted or null, trace_based is used.
| [`ExemplarFilter`](#exemplarfilter) | `false` | +| `meter_configurator/development` | Configure meters.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalMeterConfigurator`](#experimentalmeterconfigurator) | `false` |
JSON Schema @@ -2773,11 +2773,11 @@ No properties. }
-## MetricProducer +## MetricProducer | Property | Description | Type | Required? | |---|---|---|---| -| `opencensus` | Configure metric producer to be opencensus. | [`OpenCensusMetricProducer`](#OpenCensusMetricProducer) | `false` | +| `opencensus` | Configure metric producer to be opencensus. | [`OpenCensusMetricProducer`](#opencensusmetricproducer) | `false` |
JSON Schema @@ -2804,12 +2804,12 @@ No properties. }
-## MetricReader +## MetricReader | Property | Description | Type | Required? | |---|---|---|---| -| `periodic` | Configure a periodic metric reader. | [`PeriodicMetricReader`](#PeriodicMetricReader) | `false` | -| `pull` | Configure a pull based metric reader. | [`PullMetricReader`](#PullMetricReader) | `false` | +| `periodic` | Configure a periodic metric reader. | [`PeriodicMetricReader`](#periodicmetricreader) | `false` | +| `pull` | Configure a pull based metric reader. | [`PullMetricReader`](#pullmetricreader) | `false` |
JSON Schema @@ -2831,7 +2831,7 @@ No properties. }
-## NameStringValuePair +## NameStringValuePair | Property | Description | Type | Required? | |---|---|---|---| @@ -2863,7 +2863,7 @@ No properties. } -## OpenCensusMetricProducer +## OpenCensusMetricProducer No properties. @@ -2880,20 +2880,20 @@ No properties. } -## OpentelemetryConfiguration +## OpentelemetryConfiguration | Property | Description | Type | Required? | |---|---|---|---| | `file_format` | The file format version.
The yaml format is documented at
https://github.com/open-telemetry/opentelemetry-configuration/tree/main/schema
| `string` | `true` | | `disabled` | Configure if the SDK is disabled or not.
If omitted or null, false is used.
| one of:
* `boolean`
* `null`
| `false` | | `log_level` | Configure the log level of the internal logger used by the SDK.
If omitted, info is used.
| one of:
* `string`
* `null`
| `false` | -| `attribute_limits` | Configure general attribute limits. See also tracer_provider.limits, logger_provider.limits.
| [`AttributeLimits`](#AttributeLimits) | `false` | -| `logger_provider` | Configure logger provider.
If omitted, a noop logger provider is used.
| [`LoggerProvider`](#LoggerProvider) | `false` | -| `meter_provider` | Configure meter provider.
If omitted, a noop meter provider is used.
| [`MeterProvider`](#MeterProvider) | `false` | -| `propagator` | Configure text map context propagators.
If omitted, a noop propagator is used.
| [`Propagator`](#Propagator) | `false` | -| `tracer_provider` | Configure tracer provider.
If omitted, a noop tracer provider is used.
| [`TracerProvider`](#TracerProvider) | `false` | -| `resource` | Configure resource for all signals.
If omitted, the default resource is used.
| [`Resource`](#Resource) | `false` | -| `instrumentation/development` | Configure instrumentation.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalInstrumentation`](#ExperimentalInstrumentation) | `false` | +| `attribute_limits` | Configure general attribute limits. See also tracer_provider.limits, logger_provider.limits.
| [`AttributeLimits`](#attributelimits) | `false` | +| `logger_provider` | Configure logger provider.
If omitted, a noop logger provider is used.
| [`LoggerProvider`](#loggerprovider) | `false` | +| `meter_provider` | Configure meter provider.
If omitted, a noop meter provider is used.
| [`MeterProvider`](#meterprovider) | `false` | +| `propagator` | Configure text map context propagators.
If omitted, a noop propagator is used.
| [`Propagator`](#propagator) | `false` | +| `tracer_provider` | Configure tracer provider.
If omitted, a noop tracer provider is used.
| [`TracerProvider`](#tracerprovider) | `false` | +| `resource` | Configure resource for all signals.
If omitted, the default resource is used.
| [`Resource`](#resource) | `false` | +| `instrumentation/development` | Configure instrumentation.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalInstrumentation`](#experimentalinstrumentation) | `false` |
JSON Schema @@ -2987,7 +2987,7 @@ No properties. }
-## OpenTracingPropagator +## OpenTracingPropagator No properties. @@ -3004,7 +3004,7 @@ No properties. } -## OtlpGrpcExporter +## OtlpGrpcExporter | Property | Description | Type | Required? | |---|---|---|---| @@ -3012,7 +3012,7 @@ No properties. | `certificate_file` | Configure certificate used to verify a server's TLS credentials.
Absolute path to certificate file in PEM format.
If omitted or null, system default certificate verification is used for secure connections.
| one of:
* `string`
* `null`
| `false` | | `client_key_file` | Configure mTLS private client key.
Absolute path to client key file in PEM format. If set, .client_certificate must also be set.
If omitted or null, mTLS is not used.
| one of:
* `string`
* `null`
| `false` | | `client_certificate_file` | Configure mTLS client certificate.
Absolute path to client certificate file in PEM format. If set, .client_key must also be set.
If omitted or null, mTLS is not used.
| one of:
* `string`
* `null`
| `false` | -| `headers` | Configure headers. Entries have higher priority than entries from .headers_list.
If an entry's .value is null, the entry is ignored.
| `array` of [`NameStringValuePair`](#NameStringValuePair) | `false` | +| `headers` | Configure headers. Entries have higher priority than entries from .headers_list.
If an entry's .value is null, the entry is ignored.
| `array` of [`NameStringValuePair`](#namestringvaluepair) | `false` | | `headers_list` | Configure headers. Entries have lower priority than entries from .headers.
The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details.
If omitted or null, no headers are added.
| one of:
* `string`
* `null`
| `false` | | `compression` | Configure compression.
Values include: gzip, none. Implementations may support other compression algorithms.
If omitted or null, none is used.
| one of:
* `string`
* `null`
| `false` | | `timeout` | Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 10000 is used.
| one of:
* `integer`
* `null`
| `false` | @@ -3088,7 +3088,7 @@ No properties. } -## OtlpGrpcMetricExporter +## OtlpGrpcMetricExporter | Property | Description | Type | Required? | |---|---|---|---| @@ -3096,13 +3096,13 @@ No properties. | `certificate_file` | Configure certificate used to verify a server's TLS credentials.
Absolute path to certificate file in PEM format.
If omitted or null, system default certificate verification is used for secure connections.
| one of:
* `string`
* `null`
| `false` | | `client_key_file` | Configure mTLS private client key.
Absolute path to client key file in PEM format. If set, .client_certificate must also be set.
If omitted or null, mTLS is not used.
| one of:
* `string`
* `null`
| `false` | | `client_certificate_file` | Configure mTLS client certificate.
Absolute path to client certificate file in PEM format. If set, .client_key must also be set.
If omitted or null, mTLS is not used.
| one of:
* `string`
* `null`
| `false` | -| `headers` | Configure headers. Entries have higher priority than entries from .headers_list.
If an entry's .value is null, the entry is ignored.
| `array` of [`NameStringValuePair`](#NameStringValuePair) | `false` | +| `headers` | Configure headers. Entries have higher priority than entries from .headers_list.
If an entry's .value is null, the entry is ignored.
| `array` of [`NameStringValuePair`](#namestringvaluepair) | `false` | | `headers_list` | Configure headers. Entries have lower priority than entries from .headers.
The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details.
If omitted or null, no headers are added.
| one of:
* `string`
* `null`
| `false` | | `compression` | Configure compression.
Values include: gzip, none. Implementations may support other compression algorithms.
If omitted or null, none is used.
| one of:
* `string`
* `null`
| `false` | | `timeout` | Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 10000 is used.
| one of:
* `integer`
* `null`
| `false` | | `insecure` | Configure client transport security for the exporter's connection.
Only applicable when .endpoint is provided without http or https scheme. Implementations may choose to ignore .insecure.
If omitted or null, false is used.
| one of:
* `boolean`
* `null`
| `false` | -| `temporality_preference` | Configure temporality preference.
Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, cumulative is used.
| [`ExporterTemporalityPreference`](#ExporterTemporalityPreference) | `false` | -| `default_histogram_aggregation` | Configure default histogram aggregation.
Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, explicit_bucket_histogram is used.
| [`ExporterDefaultHistogramAggregation`](#ExporterDefaultHistogramAggregation) | `false` | +| `temporality_preference` | Configure temporality preference.
Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, cumulative is used.
| [`ExporterTemporalityPreference`](#exportertemporalitypreference) | `false` | +| `default_histogram_aggregation` | Configure default histogram aggregation.
Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, explicit_bucket_histogram is used.
| [`ExporterDefaultHistogramAggregation`](#exporterdefaulthistogramaggregation) | `false` |
JSON Schema @@ -3180,7 +3180,7 @@ No properties. }
-## OtlpHttpEncoding +## OtlpHttpEncoding No properties. @@ -3200,7 +3200,7 @@ No properties. } -## OtlpHttpExporter +## OtlpHttpExporter | Property | Description | Type | Required? | |---|---|---|---| @@ -3208,11 +3208,11 @@ No properties. | `certificate_file` | Configure certificate used to verify a server's TLS credentials.
Absolute path to certificate file in PEM format.
If omitted or null, system default certificate verification is used for secure connections.
| one of:
* `string`
* `null`
| `false` | | `client_key_file` | Configure mTLS private client key.
Absolute path to client key file in PEM format. If set, .client_certificate must also be set.
If omitted or null, mTLS is not used.
| one of:
* `string`
* `null`
| `false` | | `client_certificate_file` | Configure mTLS client certificate.
Absolute path to client certificate file in PEM format. If set, .client_key must also be set.
If omitted or null, mTLS is not used.
| one of:
* `string`
* `null`
| `false` | -| `headers` | Configure headers. Entries have higher priority than entries from .headers_list.
If an entry's .value is null, the entry is ignored.
| `array` of [`NameStringValuePair`](#NameStringValuePair) | `false` | +| `headers` | Configure headers. Entries have higher priority than entries from .headers_list.
If an entry's .value is null, the entry is ignored.
| `array` of [`NameStringValuePair`](#namestringvaluepair) | `false` | | `headers_list` | Configure headers. Entries have lower priority than entries from .headers.
The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details.
If omitted or null, no headers are added.
| one of:
* `string`
* `null`
| `false` | | `compression` | Configure compression.
Values include: gzip, none. Implementations may support other compression algorithms.
If omitted or null, none is used.
| one of:
* `string`
* `null`
| `false` | | `timeout` | Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 10000 is used.
| one of:
* `integer`
* `null`
| `false` | -| `encoding` | Configure the encoding used for messages.
Values include: protobuf, json. Implementations may not support json.
If omitted or null, protobuf is used.
| [`OtlpHttpEncoding`](#OtlpHttpEncoding) | `false` | +| `encoding` | Configure the encoding used for messages.
Values include: protobuf, json. Implementations may not support json.
If omitted or null, protobuf is used.
| [`OtlpHttpEncoding`](#otlphttpencoding) | `false` |
JSON Schema @@ -3281,7 +3281,7 @@ No properties. }
-## OtlpHttpMetricExporter +## OtlpHttpMetricExporter | Property | Description | Type | Required? | |---|---|---|---| @@ -3290,13 +3290,13 @@ No properties. | `certificate_file` | Configure certificate used to verify a server's TLS credentials.
Absolute path to certificate file in PEM format.
If omitted or null, system default certificate verification is used for secure connections.
| one of:
* `string`
* `null`
| `false` | | `client_key_file` | Configure mTLS private client key.
Absolute path to client key file in PEM format. If set, .client_certificate must also be set.
If omitted or null, mTLS is not used.
| one of:
* `string`
* `null`
| `false` | | `client_certificate_file` | Configure mTLS client certificate.
Absolute path to client certificate file in PEM format. If set, .client_key must also be set.
If omitted or null, mTLS is not used.
| one of:
* `string`
* `null`
| `false` | -| `headers` | Configure headers. Entries have higher priority than entries from .headers_list.
If an entry's .value is null, the entry is ignored.
| `array` of [`NameStringValuePair`](#NameStringValuePair) | `false` | +| `headers` | Configure headers. Entries have higher priority than entries from .headers_list.
If an entry's .value is null, the entry is ignored.
| `array` of [`NameStringValuePair`](#namestringvaluepair) | `false` | | `headers_list` | Configure headers. Entries have lower priority than entries from .headers.
The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details.
If omitted or null, no headers are added.
| one of:
* `string`
* `null`
| `false` | | `compression` | Configure compression.
Values include: gzip, none. Implementations may support other compression algorithms.
If omitted or null, none is used.
| one of:
* `string`
* `null`
| `false` | | `timeout` | Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 10000 is used.
| one of:
* `integer`
* `null`
| `false` | -| `encoding` | Configure the encoding used for messages.
Values include: protobuf, json. Implementations may not support json.
If omitted or null, protobuf is used.
| [`OtlpHttpEncoding`](#OtlpHttpEncoding) | `false` | -| `temporality_preference` | Configure temporality preference.
Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, cumulative is used.
| [`ExporterTemporalityPreference`](#ExporterTemporalityPreference) | `false` | -| `default_histogram_aggregation` | Configure default histogram aggregation.
Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, explicit_bucket_histogram is used.
| [`ExporterDefaultHistogramAggregation`](#ExporterDefaultHistogramAggregation) | `false` | +| `encoding` | Configure the encoding used for messages.
Values include: protobuf, json. Implementations may not support json.
If omitted or null, protobuf is used.
| [`OtlpHttpEncoding`](#otlphttpencoding) | `false` | +| `temporality_preference` | Configure temporality preference.
Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, cumulative is used.
| [`ExporterTemporalityPreference`](#exportertemporalitypreference) | `false` | +| `default_histogram_aggregation` | Configure default histogram aggregation.
Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, explicit_bucket_histogram is used.
| [`ExporterDefaultHistogramAggregation`](#exporterdefaulthistogramaggregation) | `false` |
JSON Schema @@ -3371,15 +3371,15 @@ No properties. }
-## ParentBasedSampler +## ParentBasedSampler | Property | Description | Type | Required? | |---|---|---|---| -| `root` | Configure root sampler.
If omitted or null, always_on is used.
| [`Sampler`](#Sampler) | `false` | -| `remote_parent_sampled` | Configure remote_parent_sampled sampler.
If omitted or null, always_on is used.
| [`Sampler`](#Sampler) | `false` | -| `remote_parent_not_sampled` | Configure remote_parent_not_sampled sampler.
If omitted or null, always_off is used.
| [`Sampler`](#Sampler) | `false` | -| `local_parent_sampled` | Configure local_parent_sampled sampler.
If omitted or null, always_on is used.
| [`Sampler`](#Sampler) | `false` | -| `local_parent_not_sampled` | Configure local_parent_not_sampled sampler.
If omitted or null, always_off is used.
| [`Sampler`](#Sampler) | `false` | +| `root` | Configure root sampler.
If omitted or null, always_on is used.
| [`Sampler`](#sampler) | `false` | +| `remote_parent_sampled` | Configure remote_parent_sampled sampler.
If omitted or null, always_on is used.
| [`Sampler`](#sampler) | `false` | +| `remote_parent_not_sampled` | Configure remote_parent_not_sampled sampler.
If omitted or null, always_off is used.
| [`Sampler`](#sampler) | `false` | +| `local_parent_sampled` | Configure local_parent_sampled sampler.
If omitted or null, always_on is used.
| [`Sampler`](#sampler) | `false` | +| `local_parent_not_sampled` | Configure local_parent_not_sampled sampler.
If omitted or null, always_off is used.
| [`Sampler`](#sampler) | `false` |
JSON Schema @@ -3411,15 +3411,15 @@ No properties. }
-## PeriodicMetricReader +## PeriodicMetricReader | Property | Description | Type | Required? | |---|---|---|---| | `interval` | Configure delay interval (in milliseconds) between start of two consecutive exports.
Value must be non-negative.
If omitted or null, 60000 is used.
| one of:
* `integer`
* `null`
| `false` | | `timeout` | Configure maximum allowed time (in milliseconds) to export data.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 30000 is used.
| one of:
* `integer`
* `null`
| `false` | -| `exporter` | Configure exporter. | [`PushMetricExporter`](#PushMetricExporter) | `true` | -| `producers` | Configure metric producers. | `array` of [`MetricProducer`](#MetricProducer) | `false` | -| `cardinality_limits` | Configure cardinality limits. | [`CardinalityLimits`](#CardinalityLimits) | `false` | +| `exporter` | Configure exporter. | [`PushMetricExporter`](#pushmetricexporter) | `true` | +| `producers` | Configure metric producers. | `array` of [`MetricProducer`](#metricproducer) | `false` | +| `cardinality_limits` | Configure cardinality limits. | [`CardinalityLimits`](#cardinalitylimits) | `false` |
JSON Schema @@ -3462,11 +3462,11 @@ No properties. }
-## Propagator +## Propagator | Property | Description | Type | Required? | |---|---|---|---| -| `composite` | Configure the propagators in the composite text map propagator. Entries from .composite_list are appended to the list here with duplicates filtered out.
Built-in propagator keys include: tracecontext, baggage, b3, b3multi, jaeger, ottrace. Known third party keys include: xray.
If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used.
| `array` of [`TextMapPropagator`](#TextMapPropagator) | `false` | +| `composite` | Configure the propagators in the composite text map propagator. Entries from .composite_list are appended to the list here with duplicates filtered out.
Built-in propagator keys include: tracecontext, baggage, b3, b3multi, jaeger, ottrace. Known third party keys include: xray.
If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used.
| `array` of [`TextMapPropagator`](#textmappropagator) | `false` | | `composite_list` | Configure the propagators in the composite text map propagator. Entries are appended to .composite with duplicates filtered out.
The value is a comma separated list of propagator identifiers matching the format of OTEL_PROPAGATORS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details.
Built-in propagator identifiers include: tracecontext, baggage, b3, b3multi, jaeger, ottrace. Known third party identifiers include: xray.
If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used.
| one of:
* `string`
* `null`
| `false` |
@@ -3572,11 +3572,11 @@ No properties. }
-## PullMetricExporter +## PullMetricExporter | Property | Description | Type | Required? | |---|---|---|---| -| `prometheus/development` | Configure exporter to be prometheus.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalPrometheusMetricExporter`](#ExperimentalPrometheusMetricExporter) | `false` | +| `prometheus/development` | Configure exporter to be prometheus.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalPrometheusMetricExporter`](#experimentalprometheusmetricexporter) | `false` |
JSON Schema @@ -3605,13 +3605,13 @@ No properties. }
-## PullMetricReader +## PullMetricReader | Property | Description | Type | Required? | |---|---|---|---| -| `exporter` | Configure exporter. | [`PullMetricExporter`](#PullMetricExporter) | `true` | -| `producers` | Configure metric producers. | `array` of [`MetricProducer`](#MetricProducer) | `false` | -| `cardinality_limits` | Configure cardinality limits. | [`CardinalityLimits`](#CardinalityLimits) | `false` | +| `exporter` | Configure exporter. | [`PullMetricExporter`](#pullmetricexporter) | `true` | +| `producers` | Configure metric producers. | `array` of [`MetricProducer`](#metricproducer) | `false` | +| `cardinality_limits` | Configure cardinality limits. | [`CardinalityLimits`](#cardinalitylimits) | `false` |
JSON Schema @@ -3640,14 +3640,14 @@ No properties. }
-## PushMetricExporter +## PushMetricExporter | Property | Description | Type | Required? | |---|---|---|---| -| `otlp_http` | Configure exporter to be OTLP with HTTP transport.
| [`OtlpHttpMetricExporter`](#OtlpHttpMetricExporter) | `false` | -| `otlp_grpc` | Configure exporter to be OTLP with gRPC transport.
| [`OtlpGrpcMetricExporter`](#OtlpGrpcMetricExporter) | `false` | -| `otlp_file/development` | Configure exporter to be OTLP with file transport.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalOtlpFileMetricExporter`](#ExperimentalOtlpFileMetricExporter) | `false` | -| `console` | Configure exporter to be console.
| [`ConsoleExporter`](#ConsoleExporter) | `false` | +| `otlp_http` | Configure exporter to be OTLP with HTTP transport.
| [`OtlpHttpMetricExporter`](#otlphttpmetricexporter) | `false` | +| `otlp_grpc` | Configure exporter to be OTLP with gRPC transport.
| [`OtlpGrpcMetricExporter`](#otlpgrpcmetricexporter) | `false` | +| `otlp_file/development` | Configure exporter to be OTLP with file transport.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalOtlpFileMetricExporter`](#experimentalotlpfilemetricexporter) | `false` | +| `console` | Configure exporter to be console.
| [`ConsoleExporter`](#consoleexporter) | `false` |
JSON Schema @@ -3683,12 +3683,12 @@ No properties. }
-## Resource +## Resource | Property | Description | Type | Required? | |---|---|---|---| -| `attributes` | Configure resource attributes. Entries have higher priority than entries from .resource.attributes_list.
| `array` of [`AttributeNameValue`](#AttributeNameValue) | `false` | -| `detection/development` | Configure resource detection.
This type is in development and subject to breaking changes in minor versions.
If omitted or null, resource detection is disabled.
| [`ExperimentalResourceDetection`](#ExperimentalResourceDetection) | `false` | +| `attributes` | Configure resource attributes. Entries have higher priority than entries from .resource.attributes_list.
| `array` of [`AttributeNameValue`](#attributenamevalue) | `false` | +| `detection/development` | Configure resource detection.
This type is in development and subject to breaking changes in minor versions.
If omitted or null, resource detection is disabled.
| [`ExperimentalResourceDetection`](#experimentalresourcedetection) | `false` | | `schema_url` | Configure resource schema URL.
If omitted or null, no schema URL is used.
| one of:
* `string`
* `null`
| `false` | | `attributes_list` | Configure resource attributes. Entries have lower priority than entries from .resource.attributes.
The value is a list of comma separated key-value pairs matching the format of OTEL_RESOURCE_ATTRIBUTES. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details.
If omitted or null, no resource attributes are added.
| one of:
* `string`
* `null`
| `false` | @@ -3867,15 +3867,15 @@ No properties. } -## Sampler +## Sampler | Property | Description | Type | Required? | |---|---|---|---| -| `always_off` | Configure sampler to be always_off. | [`AlwaysOffSampler`](#AlwaysOffSampler) | `false` | -| `always_on` | Configure sampler to be always_on. | [`AlwaysOnSampler`](#AlwaysOnSampler) | `false` | -| `jaeger_remote` | TODO | [`JaegerRemoteSampler`](#JaegerRemoteSampler) | `false` | -| `parent_based` | Configure sampler to be parent_based. | [`ParentBasedSampler`](#ParentBasedSampler) | `false` | -| `trace_id_ratio_based` | Configure sampler to be trace_id_ratio_based. | [`TraceIdRatioBasedSampler`](#TraceIdRatioBasedSampler) | `false` | +| `always_off` | Configure sampler to be always_off. | [`AlwaysOffSampler`](#alwaysoffsampler) | `false` | +| `always_on` | Configure sampler to be always_on. | [`AlwaysOnSampler`](#alwaysonsampler) | `false` | +| `jaeger_remote` | TODO | [`JaegerRemoteSampler`](#jaegerremotesampler) | `false` | +| `parent_based` | Configure sampler to be parent_based. | [`ParentBasedSampler`](#parentbasedsampler) | `false` | +| `trace_id_ratio_based` | Configure sampler to be trace_id_ratio_based. | [`TraceIdRatioBasedSampler`](#traceidratiobasedsampler) | `false` |
JSON Schema @@ -3914,11 +3914,11 @@ No properties. }
-## SimpleLogRecordProcessor +## SimpleLogRecordProcessor | Property | Description | Type | Required? | |---|---|---|---| -| `exporter` | Configure exporter. | [`LogRecordExporter`](#LogRecordExporter) | `true` | +| `exporter` | Configure exporter. | [`LogRecordExporter`](#logrecordexporter) | `true` |
JSON Schema @@ -3938,11 +3938,11 @@ No properties. }
-## SimpleSpanProcessor +## SimpleSpanProcessor | Property | Description | Type | Required? | |---|---|---|---| -| `exporter` | Configure exporter. | [`SpanExporter`](#SpanExporter) | `true` | +| `exporter` | Configure exporter. | [`SpanExporter`](#spanexporter) | `true` |
JSON Schema @@ -3962,15 +3962,15 @@ No properties. }
-## SpanExporter +## SpanExporter | Property | Description | Type | Required? | |---|---|---|---| -| `otlp_http` | Configure exporter to be OTLP with HTTP transport. | [`OtlpHttpExporter`](#OtlpHttpExporter) | `false` | -| `otlp_grpc` | Configure exporter to be OTLP with gRPC transport. | [`OtlpGrpcExporter`](#OtlpGrpcExporter) | `false` | -| `otlp_file/development` | Configure exporter to be OTLP with file transport.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalOtlpFileExporter`](#ExperimentalOtlpFileExporter) | `false` | -| `console` | Configure exporter to be console. | [`ConsoleExporter`](#ConsoleExporter) | `false` | -| `zipkin` | Configure exporter to be zipkin. | [`ZipkinSpanExporter`](#ZipkinSpanExporter) | `false` | +| `otlp_http` | Configure exporter to be OTLP with HTTP transport. | [`OtlpHttpExporter`](#otlphttpexporter) | `false` | +| `otlp_grpc` | Configure exporter to be OTLP with gRPC transport. | [`OtlpGrpcExporter`](#otlpgrpcexporter) | `false` | +| `otlp_file/development` | Configure exporter to be OTLP with file transport.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalOtlpFileExporter`](#experimentalotlpfileexporter) | `false` | +| `console` | Configure exporter to be console. | [`ConsoleExporter`](#consoleexporter) | `false` | +| `zipkin` | Configure exporter to be zipkin. | [`ZipkinSpanExporter`](#zipkinspanexporter) | `false` |
JSON Schema @@ -4009,7 +4009,7 @@ No properties. }
-## SpanLimits +## SpanLimits | Property | Description | Type | Required? | |---|---|---|---| @@ -4074,12 +4074,12 @@ No properties. } -## SpanProcessor +## SpanProcessor | Property | Description | Type | Required? | |---|---|---|---| -| `batch` | Configure a batch span processor. | [`BatchSpanProcessor`](#BatchSpanProcessor) | `false` | -| `simple` | Configure a simple span processor. | [`SimpleSpanProcessor`](#SimpleSpanProcessor) | `false` | +| `batch` | Configure a batch span processor. | [`BatchSpanProcessor`](#batchspanprocessor) | `false` | +| `simple` | Configure a simple span processor. | [`SimpleSpanProcessor`](#simplespanprocessor) | `false` |
JSON Schema @@ -4109,7 +4109,7 @@ No properties. }
-## SumAggregation +## SumAggregation No properties. @@ -4126,16 +4126,16 @@ No properties. } -## TextMapPropagator +## TextMapPropagator | Property | Description | Type | Required? | |---|---|---|---| -| `tracecontext` | Include the w3c trace context propagator. | [`TraceContextPropagator`](#TraceContextPropagator) | `false` | -| `baggage` | Include the w3c baggage propagator. | [`BaggagePropagator`](#BaggagePropagator) | `false` | -| `b3` | Include the zipkin b3 propagator. | [`B3Propagator`](#B3Propagator) | `false` | -| `b3multi` | Include the zipkin b3 multi propagator. | [`B3MultiPropagator`](#B3MultiPropagator) | `false` | -| `jaeger` | Include the jaeger propagator. | [`JaegerPropagator`](#JaegerPropagator) | `false` | -| `ottrace` | Include the opentracing propagator. | [`OpenTracingPropagator`](#OpenTracingPropagator) | `false` | +| `tracecontext` | Include the w3c trace context propagator. | [`TraceContextPropagator`](#tracecontextpropagator) | `false` | +| `baggage` | Include the w3c baggage propagator. | [`BaggagePropagator`](#baggagepropagator) | `false` | +| `b3` | Include the zipkin b3 propagator. | [`B3Propagator`](#b3propagator) | `false` | +| `b3multi` | Include the zipkin b3 multi propagator. | [`B3MultiPropagator`](#b3multipropagator) | `false` | +| `jaeger` | Include the jaeger propagator. | [`JaegerPropagator`](#jaegerpropagator) | `false` | +| `ottrace` | Include the opentracing propagator. | [`OpenTracingPropagator`](#opentracingpropagator) | `false` |
JSON Schema @@ -4177,7 +4177,7 @@ No properties. }
-## TraceContextPropagator +## TraceContextPropagator No properties. @@ -4194,7 +4194,7 @@ No properties. } -## TraceIdRatioBasedSampler +## TraceIdRatioBasedSampler | Property | Description | Type | Required? | |---|---|---|---| @@ -4221,14 +4221,14 @@ No properties. } -## TracerProvider +## TracerProvider | Property | Description | Type | Required? | |---|---|---|---| -| `processors` | Configure span processors. | `array` of [`SpanProcessor`](#SpanProcessor) | `true` | -| `limits` | Configure span limits. See also attribute_limits. | [`SpanLimits`](#SpanLimits) | `false` | -| `sampler` | Configure the sampler.
If omitted, parent based sampler with a root of always_on is used.
| [`Sampler`](#Sampler) | `false` | -| `tracer_configurator/development` | Configure tracers.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalTracerConfigurator`](#ExperimentalTracerConfigurator) | `false` | +| `processors` | Configure span processors. | `array` of [`SpanProcessor`](#spanprocessor) | `true` | +| `limits` | Configure span limits. See also attribute_limits. | [`SpanLimits`](#spanlimits) | `false` | +| `sampler` | Configure the sampler.
If omitted, parent based sampler with a root of always_on is used.
| [`Sampler`](#sampler) | `false` | +| `tracer_configurator/development` | Configure tracers.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalTracerConfigurator`](#experimentaltracerconfigurator) | `false` |
JSON Schema @@ -4595,12 +4595,12 @@ No properties. }
-## View +## View | Property | Description | Type | Required? | |---|---|---|---| -| `selector` | Configure view selector.
Selection criteria is additive as described in https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#instrument-selection-criteria.
| [`ViewSelector`](#ViewSelector) | `false` | -| `stream` | Configure view stream. | [`ViewStream`](#ViewStream) | `false` | +| `selector` | Configure view selector.
Selection criteria is additive as described in https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#instrument-selection-criteria.
| [`ViewSelector`](#viewselector) | `false` | +| `stream` | Configure view stream. | [`ViewStream`](#viewstream) | `false` |
JSON Schema @@ -4620,12 +4620,12 @@ No properties. }
-## ViewSelector +## ViewSelector | Property | Description | Type | Required? | |---|---|---|---| | `instrument_name` | Configure instrument name selection criteria.
If omitted or null, all instrument names match.
| one of:
* `string`
* `null`
| `false` | -| `instrument_type` | Configure instrument type selection criteria.
Values include: counter, gauge, histogram, observable_counter, observable_gauge, observable_up_down_counter, up_down_counter.
If omitted or null, all instrument types match.
| [`InstrumentType`](#InstrumentType) | `false` | +| `instrument_type` | Configure instrument type selection criteria.
Values include: counter, gauge, histogram, observable_counter, observable_gauge, observable_up_down_counter, up_down_counter.
If omitted or null, all instrument types match.
| [`InstrumentType`](#instrumenttype) | `false` | | `unit` | Configure the instrument unit selection criteria.
If omitted or null, all instrument units match.
| one of:
* `string`
* `null`
| `false` | | `meter_name` | Configure meter name selection criteria.
If omitted or null, all meter names match.
| one of:
* `string`
* `null`
| `false` | | `meter_version` | Configure meter version selection criteria.
If omitted or null, all meter versions match.
| one of:
* `string`
* `null`
| `false` | @@ -4676,15 +4676,15 @@ No properties. } -## ViewStream +## ViewStream | Property | Description | Type | Required? | |---|---|---|---| | `name` | Configure metric name of the resulting stream(s).
If omitted or null, the instrument's original name is used.
| one of:
* `string`
* `null`
| `false` | | `description` | Configure metric description of the resulting stream(s).
If omitted or null, the instrument's origin description is used.
| one of:
* `string`
* `null`
| `false` | -| `aggregation` | Configure aggregation of the resulting stream(s).
Values include: default, drop, explicit_bucket_histogram, base2_exponential_bucket_histogram, last_value, sum. For behavior of values see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#aggregation.
If omitted, default is used.
| [`Aggregation`](#Aggregation) | `false` | +| `aggregation` | Configure aggregation of the resulting stream(s).
Values include: default, drop, explicit_bucket_histogram, base2_exponential_bucket_histogram, last_value, sum. For behavior of values see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#aggregation.
If omitted, default is used.
| [`Aggregation`](#aggregation) | `false` | | `aggregation_cardinality_limit` | Configure the aggregation cardinality limit.
If omitted or null, the metric reader's default cardinality limit is used.
| one of:
* `integer`
* `null`
| `false` | -| `attribute_keys` | Configure attribute keys retained in the resulting stream(s).
| [`IncludeExclude`](#IncludeExclude) | `false` | +| `attribute_keys` | Configure attribute keys retained in the resulting stream(s).
| [`IncludeExclude`](#includeexclude) | `false` |
JSON Schema @@ -4723,7 +4723,7 @@ No properties. }
-## ZipkinSpanExporter +## ZipkinSpanExporter | Property | Description | Type | Required? | |---|---|---|---| diff --git a/scripts/generate-markdown.js b/scripts/generate-markdown.js index 3aeca0f5..5ae63676 100644 --- a/scripts/generate-markdown.js +++ b/scripts/generate-markdown.js @@ -31,7 +31,7 @@ types.forEach(metaSchemaType => { const required = jsonSchemaType.schema['required']; // Heading - addHeader(type, type, 2); + addHeader(type, type.toLowerCase(), 2); // Properties if (metaSchemaType.properties.length === 0) { @@ -104,7 +104,7 @@ function formatJsonSchemaPropertyType(jsonSchemaProperty, jsonSchemaTypesByType) jsonSchemaProperty.types.forEach(type => { let resolvedType = jsonSchemaTypesByType[type]; output.push(prefix); - output.push(resolvedType ? `[\`${resolvedType.type}\`](#${resolvedType.type})` : `\`${type}\``) + output.push(resolvedType ? `[\`${resolvedType.type}\`](#${resolvedType.type.toLowerCase()})` : `\`${type}\``) output.push(suffix); }); return output.join(''); From e5b44eae382816bcd0c7f4269441200cb28adb99 Mon Sep 17 00:00:00 2001 From: Jack Berg <34418638+jack-berg@users.noreply.github.com> Date: Sat, 4 Oct 2025 12:55:12 -0400 Subject: [PATCH 18/23] Fix links --- .github/.lychee.toml | 2 ++ CONTRIBUTING.md | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/.lychee.toml b/.github/.lychee.toml index 6dea0efc..3c860d4f 100644 --- a/.github/.lychee.toml +++ b/.github/.lychee.toml @@ -5,6 +5,8 @@ accept = ["200..=299", "403"] exclude = [ # excluding links to pull requests and issues is done for performance "^https://github.com/open-telemetry/opentelemetry-specification/(issues|pull)/\\d+$", + # exclude localhost references from schema-docs.md + "^://localhost.*", # TODO (trask) look into this "^https://docs.google.com/document/d/1d0afxe3J6bQT-I6UbRXeIYNcTIyBQv4axfjKF4yvAPA/edit" ] diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 773f0f48..50fa54dd 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -91,7 +91,7 @@ tracer_provider: * `attributes_value_length_limit` is not required. If omitted, no attribute length limits are applied. * `attributes_value_length_limit`'s type is `["integer", "null]`. If null (i.e. because the `OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT` env var is unset), no attribute length limits are applied. -If a property is _not_ required, it should include a [comment](./CONTRIBUTING.md#description-generation) describing the semantics when it is omitted. +If a property is _not_ required, it should include a [meta schema comment](./CONTRIBUTING.md#meta-schema) describing the semantics when it is omitted. If a property `type` includes `null`, it must include a [comment](./CONTRIBUTING.md#description-generation) describing the semantics when the value is `null`. It's common for properties with primitive types to allow `null`. `object` types allow `null` if no properties are required and the presence of the property key is meaningful. From 85b04da5c5946089c55defcb5e17f26d246b4176 Mon Sep 17 00:00:00 2001 From: Jack Berg <34418638+jack-berg@users.noreply.github.com> Date: Sat, 4 Oct 2025 12:58:20 -0400 Subject: [PATCH 19/23] Fix link exclusions --- .github/.lychee.toml | 5 +++-- CONTRIBUTING.md | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/.lychee.toml b/.github/.lychee.toml index 3c860d4f..93915377 100644 --- a/.github/.lychee.toml +++ b/.github/.lychee.toml @@ -5,8 +5,9 @@ accept = ["200..=299", "403"] exclude = [ # excluding links to pull requests and issues is done for performance "^https://github.com/open-telemetry/opentelemetry-specification/(issues|pull)/\\d+$", - # exclude localhost references from schema-docs.md - "^://localhost.*", + # exclude localhost, file references from schema-docs.md + "^http://localhost", + "^file://", # TODO (trask) look into this "^https://docs.google.com/document/d/1d0afxe3J6bQT-I6UbRXeIYNcTIyBQv4axfjKF4yvAPA/edit" ] diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 50fa54dd..59dca2b4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -93,7 +93,7 @@ tracer_provider: If a property is _not_ required, it should include a [meta schema comment](./CONTRIBUTING.md#meta-schema) describing the semantics when it is omitted. -If a property `type` includes `null`, it must include a [comment](./CONTRIBUTING.md#description-generation) describing the semantics when the value is `null`. It's common for properties with primitive types to allow `null`. `object` types allow `null` if no properties are required and the presence of the property key is meaningful. +If a property `type` includes `null`, it must include a [meta schema comment](./CONTRIBUTING.md#meta-schema) describing the semantics when the value is `null`. It's common for properties with primitive types to allow `null`. `object` types allow `null` if no properties are required and the presence of the property key is meaningful. ### Polymorphic types From e7afe4f313475f209984c1ff61f88759e065f7cf Mon Sep 17 00:00:00 2001 From: Jack Berg <34418638+jack-berg@users.noreply.github.com> Date: Sat, 4 Oct 2025 21:08:50 -0400 Subject: [PATCH 20/23] Add usage, constraints to schema markdown rendering --- schema-docs.md | 1537 ++++++++++++++++++++++++++-------- scripts/generate-markdown.js | 86 +- scripts/json-schema.js | 6 +- 3 files changed, 1258 insertions(+), 371 deletions(-) diff --git a/schema-docs.md b/schema-docs.md index 98063a25..6742450d 100644 --- a/schema-docs.md +++ b/schema-docs.md @@ -101,14 +101,24 @@ TODO ## Aggregation -| Property | Description | Type | Required? | -|---|---|---|---| -| `default` | TODO | [`DefaultAggregation`](#defaultaggregation) | `false` | -| `drop` | TODO | [`DropAggregation`](#dropaggregation) | `false` | -| `explicit_bucket_histogram` | Configure aggregation to be explicit_bucket_histogram. | [`ExplicitBucketHistogramAggregation`](#explicitbuckethistogramaggregation) | `false` | -| `base2_exponential_bucket_histogram` | TODO | [`Base2ExponentialBucketHistogramAggregation`](#base2exponentialbuckethistogramaggregation) | `false` | -| `last_value` | TODO | [`LastValueAggregation`](#lastvalueaggregation) | `false` | -| `sum` | TODO | [`SumAggregation`](#sumaggregation) | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `default` | [`DefaultAggregation`](#defaultaggregation) | `false` | No constraints. | TODO | +| `drop` | [`DropAggregation`](#dropaggregation) | `false` | No constraints. | TODO | +| `explicit_bucket_histogram` | [`ExplicitBucketHistogramAggregation`](#explicitbuckethistogramaggregation) | `false` | No constraints. | Configure aggregation to be explicit_bucket_histogram. | +| `base2_exponential_bucket_histogram` | [`Base2ExponentialBucketHistogramAggregation`](#base2exponentialbuckethistogramaggregation) | `false` | No constraints. | TODO | +| `last_value` | [`LastValueAggregation`](#lastvalueaggregation) | `false` | No constraints. | TODO | +| `sum` | [`SumAggregation`](#sumaggregation) | `false` | No constraints. | TODO | + +Constraints: + +* `additionalProperties`: `false` +* `minProperties`: `1` +* `maxProperties`: `1` + +Usages: + +* [`ViewStream.aggregation`](#viewstream)
JSON Schema @@ -146,6 +156,14 @@ TODO No properties. +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`Sampler.always_off`](#sampler) +
JSON Schema @@ -163,6 +181,14 @@ No properties. No properties. +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`Sampler.always_on`](#sampler) +
JSON Schema @@ -178,10 +204,18 @@ No properties. ## AttributeLimits -| Property | Description | Type | Required? | -|---|---|---|---| -| `attribute_value_length_limit` | Configure max attribute value size.
Value must be non-negative.
If omitted or null, there is no limit.
| one of:
* `integer`
* `null`
| `false` | -| `attribute_count_limit` | Configure max attribute count.
Value must be non-negative.
If omitted or null, 128 is used.
| one of:
* `integer`
* `null`
| `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `attribute_value_length_limit` | one of:
* `integer`
* `null`
| `false` | No constraints. | Configure max attribute value size.
Value must be non-negative.
If omitted or null, there is no limit.
| +| `attribute_count_limit` | one of:
* `integer`
* `null`
| `false` | No constraints. | Configure max attribute count.
Value must be non-negative.
If omitted or null, 128 is used.
| + +Constraints: + +* `additionalProperties`: `true` + +Usages: + +* [`OpentelemetryConfiguration.attribute_limits`](#opentelemetryconfiguration)
JSON Schema @@ -209,11 +243,20 @@ No properties. ## AttributeNameValue -| Property | Description | Type | Required? | -|---|---|---|---| -| `name` | The attribute name.
| `string` | `true` | -| `value` | The attribute value.
The type of value must match .type.
| `oneOf` | `true` | -| `type` | The attribute type.
Values include: string, bool, int, double, string_array, bool_array, int_array, double_array.
If omitted or null, string is used.
| [`AttributeType`](#attributetype) | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `name` | `string` | `true` | No constraints. | The attribute name.
| +| `value` | `oneOf` | `true` | No constraints. | The attribute value.
The type of value must match .type.
| +| `type` | [`AttributeType`](#attributetype) | `false` | No constraints. | The attribute type.
Values include: string, bool, int, double, string_array, bool_array, int_array, double_array.
If omitted or null, string is used.
| + +Constraints: + +* `additionalProperties`: `false` +* `required`: `["name","value"]` + +Usages: + +* [`Resource.attributes`](#resource)
JSON Schema @@ -275,6 +318,14 @@ No properties. No properties. +Constraints: + +* `enum`: `[null,"string","bool","int","double","string_array","bool_array","int_array","double_array"]` + +Usages: + +* [`AttributeNameValue.type`](#attributenamevalue) +
JSON Schema @@ -302,6 +353,14 @@ No properties. No properties. +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`TextMapPropagator.b3multi`](#textmappropagator) +
JSON Schema @@ -319,6 +378,14 @@ No properties. No properties. +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`TextMapPropagator.b3`](#textmappropagator) +
JSON Schema @@ -336,6 +403,14 @@ No properties. No properties. +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`TextMapPropagator.baggage`](#textmappropagator) +
JSON Schema @@ -351,11 +426,19 @@ No properties. ## Base2ExponentialBucketHistogramAggregation -| Property | Description | Type | Required? | -|---|---|---|---| -| `max_scale` | TODO | one of:
* `integer`
* `null`
| `false` | -| `max_size` | TODO | one of:
* `integer`
* `null`
| `false` | -| `record_min_max` | TODO | one of:
* `boolean`
* `null`
| `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `max_scale` | one of:
* `integer`
* `null`
| `false` | No constraints. | TODO | +| `max_size` | one of:
* `integer`
* `null`
| `false` | No constraints. | TODO | +| `record_min_max` | one of:
* `boolean`
* `null`
| `false` | No constraints. | TODO | + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`Aggregation.base2_exponential_bucket_histogram`](#aggregation)
JSON Schema @@ -392,13 +475,22 @@ No properties. ## BatchLogRecordProcessor -| Property | Description | Type | Required? | -|---|---|---|---| -| `schedule_delay` | Configure delay interval (in milliseconds) between two consecutive exports.
Value must be non-negative.
If omitted or null, 1000 is used.
| one of:
* `integer`
* `null`
| `false` | -| `export_timeout` | Configure maximum allowed time (in milliseconds) to export data.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 30000 is used.
| one of:
* `integer`
* `null`
| `false` | -| `max_queue_size` | Configure maximum queue size. Value must be positive.
If omitted or null, 2048 is used.
| one of:
* `integer`
* `null`
| `false` | -| `max_export_batch_size` | Configure maximum batch size. Value must be positive.
If omitted or null, 512 is used.
| one of:
* `integer`
* `null`
| `false` | -| `exporter` | Configure exporter. | [`LogRecordExporter`](#logrecordexporter) | `true` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `schedule_delay` | one of:
* `integer`
* `null`
| `false` | * `minimum`: `0`
| Configure delay interval (in milliseconds) between two consecutive exports.
Value must be non-negative.
If omitted or null, 1000 is used.
| +| `export_timeout` | one of:
* `integer`
* `null`
| `false` | * `minimum`: `0`
| Configure maximum allowed time (in milliseconds) to export data.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 30000 is used.
| +| `max_queue_size` | one of:
* `integer`
* `null`
| `false` | * `exclusiveMinimum`: `0`
| Configure maximum queue size. Value must be positive.
If omitted or null, 2048 is used.
| +| `max_export_batch_size` | one of:
* `integer`
* `null`
| `false` | * `exclusiveMinimum`: `0`
| Configure maximum batch size. Value must be positive.
If omitted or null, 512 is used.
| +| `exporter` | [`LogRecordExporter`](#logrecordexporter) | `true` | No constraints. | Configure exporter. | + +Constraints: + +* `additionalProperties`: `false` +* `required`: `["exporter"]` + +Usages: + +* [`LogRecordProcessor.batch`](#logrecordprocessor)
JSON Schema @@ -448,13 +540,22 @@ No properties. ## BatchSpanProcessor -| Property | Description | Type | Required? | -|---|---|---|---| -| `schedule_delay` | Configure delay interval (in milliseconds) between two consecutive exports.
Value must be non-negative.
If omitted or null, 5000 is used.
| one of:
* `integer`
* `null`
| `false` | -| `export_timeout` | Configure maximum allowed time (in milliseconds) to export data.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 30000 is used.
| one of:
* `integer`
* `null`
| `false` | -| `max_queue_size` | Configure maximum queue size. Value must be positive.
If omitted or null, 2048 is used.
| one of:
* `integer`
* `null`
| `false` | -| `max_export_batch_size` | Configure maximum batch size. Value must be positive.
If omitted or null, 512 is used.
| one of:
* `integer`
* `null`
| `false` | -| `exporter` | Configure exporter. | [`SpanExporter`](#spanexporter) | `true` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `schedule_delay` | one of:
* `integer`
* `null`
| `false` | * `minimum`: `0`
| Configure delay interval (in milliseconds) between two consecutive exports.
Value must be non-negative.
If omitted or null, 5000 is used.
| +| `export_timeout` | one of:
* `integer`
* `null`
| `false` | * `minimum`: `0`
| Configure maximum allowed time (in milliseconds) to export data.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 30000 is used.
| +| `max_queue_size` | one of:
* `integer`
* `null`
| `false` | * `exclusiveMinimum`: `0`
| Configure maximum queue size. Value must be positive.
If omitted or null, 2048 is used.
| +| `max_export_batch_size` | one of:
* `integer`
* `null`
| `false` | * `exclusiveMinimum`: `0`
| Configure maximum batch size. Value must be positive.
If omitted or null, 512 is used.
| +| `exporter` | [`SpanExporter`](#spanexporter) | `true` | No constraints. | Configure exporter. | + +Constraints: + +* `additionalProperties`: `false` +* `required`: `["exporter"]` + +Usages: + +* [`SpanProcessor.batch`](#spanprocessor)
JSON Schema @@ -504,16 +605,25 @@ No properties. ## CardinalityLimits -| Property | Description | Type | Required? | -|---|---|---|---| -| `default` | Configure default cardinality limit for all instrument types.
Instrument-specific cardinality limits take priority.
If omitted or null, 2000 is used.
| one of:
* `integer`
* `null`
| `false` | -| `counter` | Configure default cardinality limit for counter instruments.
If omitted or null, the value from .default is used.
| one of:
* `integer`
* `null`
| `false` | -| `gauge` | Configure default cardinality limit for gauge instruments.
If omitted or null, the value from .default is used.
| one of:
* `integer`
* `null`
| `false` | -| `histogram` | Configure default cardinality limit for histogram instruments.
If omitted or null, the value from .default is used.
| one of:
* `integer`
* `null`
| `false` | -| `observable_counter` | Configure default cardinality limit for observable_counter instruments.
If omitted or null, the value from .default is used.
| one of:
* `integer`
* `null`
| `false` | -| `observable_gauge` | Configure default cardinality limit for observable_gauge instruments.
If omitted or null, the value from .default is used.
| one of:
* `integer`
* `null`
| `false` | -| `observable_up_down_counter` | Configure default cardinality limit for observable_up_down_counter instruments.
If omitted or null, the value from .default is used.
| one of:
* `integer`
* `null`
| `false` | -| `up_down_counter` | Configure default cardinality limit for up_down_counter instruments.
If omitted or null, the value from .default is used.
| one of:
* `integer`
* `null`
| `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `default` | one of:
* `integer`
* `null`
| `false` | * `exclusiveMinimum`: `0`
| Configure default cardinality limit for all instrument types.
Instrument-specific cardinality limits take priority.
If omitted or null, 2000 is used.
| +| `counter` | one of:
* `integer`
* `null`
| `false` | * `exclusiveMinimum`: `0`
| Configure default cardinality limit for counter instruments.
If omitted or null, the value from .default is used.
| +| `gauge` | one of:
* `integer`
* `null`
| `false` | * `exclusiveMinimum`: `0`
| Configure default cardinality limit for gauge instruments.
If omitted or null, the value from .default is used.
| +| `histogram` | one of:
* `integer`
* `null`
| `false` | * `exclusiveMinimum`: `0`
| Configure default cardinality limit for histogram instruments.
If omitted or null, the value from .default is used.
| +| `observable_counter` | one of:
* `integer`
* `null`
| `false` | * `exclusiveMinimum`: `0`
| Configure default cardinality limit for observable_counter instruments.
If omitted or null, the value from .default is used.
| +| `observable_gauge` | one of:
* `integer`
* `null`
| `false` | * `exclusiveMinimum`: `0`
| Configure default cardinality limit for observable_gauge instruments.
If omitted or null, the value from .default is used.
| +| `observable_up_down_counter` | one of:
* `integer`
* `null`
| `false` | * `exclusiveMinimum`: `0`
| Configure default cardinality limit for observable_up_down_counter instruments.
If omitted or null, the value from .default is used.
| +| `up_down_counter` | one of:
* `integer`
* `null`
| `false` | * `exclusiveMinimum`: `0`
| Configure default cardinality limit for up_down_counter instruments.
If omitted or null, the value from .default is used.
| + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`PeriodicMetricReader.cardinality_limits`](#periodicmetricreader) +* [`PullMetricReader.cardinality_limits`](#pullmetricreader)
JSON Schema @@ -587,6 +697,16 @@ No properties. No properties. +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`LogRecordExporter.console`](#logrecordexporter) +* [`PushMetricExporter.console`](#pushmetricexporter) +* [`SpanExporter.console`](#spanexporter) +
JSON Schema @@ -604,6 +724,14 @@ No properties. No properties. +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`Aggregation.default`](#aggregation) +
JSON Schema @@ -621,6 +749,14 @@ No properties. No properties. +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`Aggregation.drop`](#aggregation) +
JSON Schema @@ -638,6 +774,14 @@ No properties. No properties. +Constraints: + +* `enum`: `["always_on","always_off","trace_based"]` + +Usages: + +* [`MeterProvider.exemplar_filter`](#meterprovider) +
JSON Schema @@ -659,6 +803,14 @@ No properties. No properties. +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`ExperimentalResourceDetector.container`](#experimentalresourcedetector) +
JSON Schema @@ -674,10 +826,18 @@ No properties. ## ExperimentalGeneralInstrumentation -| Property | Description | Type | Required? | -|---|---|---|---| -| `peer` | Configure instrumentations following the peer semantic conventions.
See peer semantic conventions: https://opentelemetry.io/docs/specs/semconv/attributes-registry/peer/
| [`ExperimentalPeerInstrumentation`](#experimentalpeerinstrumentation) | `false` | -| `http` | Configure instrumentations following the http semantic conventions.
See http semantic conventions: https://opentelemetry.io/docs/specs/semconv/http/
| [`ExperimentalHttpInstrumentation`](#experimentalhttpinstrumentation) | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `peer` | [`ExperimentalPeerInstrumentation`](#experimentalpeerinstrumentation) | `false` | No constraints. | Configure instrumentations following the peer semantic conventions.
See peer semantic conventions: https://opentelemetry.io/docs/specs/semconv/attributes-registry/peer/
| +| `http` | [`ExperimentalHttpInstrumentation`](#experimentalhttpinstrumentation) | `false` | No constraints. | Configure instrumentations following the http semantic conventions.
See http semantic conventions: https://opentelemetry.io/docs/specs/semconv/http/
| + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`ExperimentalInstrumentation.general`](#experimentalinstrumentation)
JSON Schema @@ -701,6 +861,14 @@ No properties. No properties. +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`ExperimentalResourceDetector.host`](#experimentalresourcedetector) +
JSON Schema @@ -716,10 +884,18 @@ No properties. ## ExperimentalHttpClientInstrumentation -| Property | Description | Type | Required? | -|---|---|---|---| -| `request_captured_headers` | Configure headers to capture for outbound http requests.
| `array` of `string` | `false` | -| `response_captured_headers` | Configure headers to capture for inbound http responses.
| `array` of `string` | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `request_captured_headers` | `array` of `string` | `false` | No constraints. | Configure headers to capture for outbound http requests.
| +| `response_captured_headers` | `array` of `string` | `false` | No constraints. | Configure headers to capture for inbound http responses.
| + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`ExperimentalHttpInstrumentation.client`](#experimentalhttpinstrumentation)
JSON Schema @@ -747,10 +923,18 @@ No properties. ## ExperimentalHttpInstrumentation -| Property | Description | Type | Required? | -|---|---|---|---| -| `client` | Configure instrumentations following the http client semantic conventions. | [`ExperimentalHttpClientInstrumentation`](#experimentalhttpclientinstrumentation) | `false` | -| `server` | Configure instrumentations following the http server semantic conventions. | [`ExperimentalHttpServerInstrumentation`](#experimentalhttpserverinstrumentation) | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `client` | [`ExperimentalHttpClientInstrumentation`](#experimentalhttpclientinstrumentation) | `false` | No constraints. | Configure instrumentations following the http client semantic conventions. | +| `server` | [`ExperimentalHttpServerInstrumentation`](#experimentalhttpserverinstrumentation) | `false` | No constraints. | Configure instrumentations following the http server semantic conventions. | + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`ExperimentalGeneralInstrumentation.http`](#experimentalgeneralinstrumentation)
JSON Schema @@ -772,10 +956,18 @@ No properties. ## ExperimentalHttpServerInstrumentation -| Property | Description | Type | Required? | -|---|---|---|---| -| `request_captured_headers` | Configure headers to capture for inbound http requests.
| `array` of `string` | `false` | -| `response_captured_headers` | Configure headers to capture for outbound http responses.
| `array` of `string` | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `request_captured_headers` | `array` of `string` | `false` | No constraints. | Configure headers to capture for inbound http requests.
| +| `response_captured_headers` | `array` of `string` | `false` | No constraints. | Configure headers to capture for outbound http responses.
| + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`ExperimentalHttpInstrumentation.server`](#experimentalhttpinstrumentation)
JSON Schema @@ -803,20 +995,29 @@ No properties. ## ExperimentalInstrumentation -| Property | Description | Type | Required? | -|---|---|---|---| -| `general` | Configure general SemConv options that may apply to multiple languages and instrumentations.
Instrumenation may merge general config options with the language specific configuration at .instrumentation..
| [`ExperimentalGeneralInstrumentation`](#experimentalgeneralinstrumentation) | `false` | -| `cpp` | Configure C++ language-specific instrumentation libraries. | [`ExperimentalLanguageSpecificInstrumentation`](#experimentallanguagespecificinstrumentation) | `false` | -| `dotnet` | Configure .NET language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#experimentallanguagespecificinstrumentation) | `false` | -| `erlang` | Configure Erlang language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#experimentallanguagespecificinstrumentation) | `false` | -| `go` | Configure Go language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#experimentallanguagespecificinstrumentation) | `false` | -| `java` | Configure Java language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#experimentallanguagespecificinstrumentation) | `false` | -| `js` | Configure JavaScript language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#experimentallanguagespecificinstrumentation) | `false` | -| `php` | Configure PHP language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#experimentallanguagespecificinstrumentation) | `false` | -| `python` | Configure Python language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#experimentallanguagespecificinstrumentation) | `false` | -| `ruby` | Configure Ruby language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#experimentallanguagespecificinstrumentation) | `false` | -| `rust` | Configure Rust language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#experimentallanguagespecificinstrumentation) | `false` | -| `swift` | Configure Swift language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| [`ExperimentalLanguageSpecificInstrumentation`](#experimentallanguagespecificinstrumentation) | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `general` | [`ExperimentalGeneralInstrumentation`](#experimentalgeneralinstrumentation) | `false` | No constraints. | Configure general SemConv options that may apply to multiple languages and instrumentations.
Instrumenation may merge general config options with the language specific configuration at .instrumentation..
| +| `cpp` | [`ExperimentalLanguageSpecificInstrumentation`](#experimentallanguagespecificinstrumentation) | `false` | No constraints. | Configure C++ language-specific instrumentation libraries. | +| `dotnet` | [`ExperimentalLanguageSpecificInstrumentation`](#experimentallanguagespecificinstrumentation) | `false` | No constraints. | Configure .NET language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| +| `erlang` | [`ExperimentalLanguageSpecificInstrumentation`](#experimentallanguagespecificinstrumentation) | `false` | No constraints. | Configure Erlang language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| +| `go` | [`ExperimentalLanguageSpecificInstrumentation`](#experimentallanguagespecificinstrumentation) | `false` | No constraints. | Configure Go language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| +| `java` | [`ExperimentalLanguageSpecificInstrumentation`](#experimentallanguagespecificinstrumentation) | `false` | No constraints. | Configure Java language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| +| `js` | [`ExperimentalLanguageSpecificInstrumentation`](#experimentallanguagespecificinstrumentation) | `false` | No constraints. | Configure JavaScript language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| +| `php` | [`ExperimentalLanguageSpecificInstrumentation`](#experimentallanguagespecificinstrumentation) | `false` | No constraints. | Configure PHP language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| +| `python` | [`ExperimentalLanguageSpecificInstrumentation`](#experimentallanguagespecificinstrumentation) | `false` | No constraints. | Configure Python language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| +| `ruby` | [`ExperimentalLanguageSpecificInstrumentation`](#experimentallanguagespecificinstrumentation) | `false` | No constraints. | Configure Ruby language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| +| `rust` | [`ExperimentalLanguageSpecificInstrumentation`](#experimentallanguagespecificinstrumentation) | `false` | No constraints. | Configure Rust language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| +| `swift` | [`ExperimentalLanguageSpecificInstrumentation`](#experimentallanguagespecificinstrumentation) | `false` | No constraints. | Configure Swift language-specific instrumentation libraries.
Each entry's key identifies a particular instrumentation library. The corresponding value configures it.
| + +Constraints: + +* `patternProperties`: `{".*":{"$ref":"#/$defs/ExperimentalLanguageSpecificInstrumentation"}}` +* `additionalProperties`: `false` + +Usages: + +* [`OpentelemetryConfiguration.instrumentation/development`](#opentelemetryconfiguration)
JSON Schema @@ -976,6 +1177,25 @@ No properties. No properties. +Constraints: + +* `patternProperties`: `{".*":{"type":"object"}}` +* `additionalProperties`: `true` + +Usages: + +* [`ExperimentalInstrumentation.cpp`](#experimentalinstrumentation) +* [`ExperimentalInstrumentation.dotnet`](#experimentalinstrumentation) +* [`ExperimentalInstrumentation.erlang`](#experimentalinstrumentation) +* [`ExperimentalInstrumentation.go`](#experimentalinstrumentation) +* [`ExperimentalInstrumentation.java`](#experimentalinstrumentation) +* [`ExperimentalInstrumentation.js`](#experimentalinstrumentation) +* [`ExperimentalInstrumentation.php`](#experimentalinstrumentation) +* [`ExperimentalInstrumentation.python`](#experimentalinstrumentation) +* [`ExperimentalInstrumentation.ruby`](#experimentalinstrumentation) +* [`ExperimentalInstrumentation.rust`](#experimentalinstrumentation) +* [`ExperimentalInstrumentation.swift`](#experimentalinstrumentation) +
JSON Schema @@ -993,9 +1213,18 @@ No properties. ## ExperimentalLoggerConfig -| Property | Description | Type | Required? | -|---|---|---|---| -| `disabled` | Configure if the logger is enabled or not. | `boolean` | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `disabled` | `boolean` | `false` | No constraints. | Configure if the logger is enabled or not. | + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`ExperimentalLoggerConfigurator.default_config`](#experimentalloggerconfigurator) +* [`ExperimentalLoggerMatcherAndConfig.config`](#experimentalloggermatcherandconfig)
JSON Schema @@ -1018,10 +1247,18 @@ No properties. ## ExperimentalLoggerConfigurator -| Property | Description | Type | Required? | -|---|---|---|---| -| `default_config` | Configure the default logger config used there is no matching entry in .logger_configurator/development.loggers. | [`ExperimentalLoggerConfig`](#experimentalloggerconfig) | `false` | -| `loggers` | Configure loggers. | `array` of [`ExperimentalLoggerMatcherAndConfig`](#experimentalloggermatcherandconfig) | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `default_config` | [`ExperimentalLoggerConfig`](#experimentalloggerconfig) | `false` | No constraints. | Configure the default logger config used there is no matching entry in .logger_configurator/development.loggers. | +| `loggers` | `array` of [`ExperimentalLoggerMatcherAndConfig`](#experimentalloggermatcherandconfig) | `false` | No constraints. | Configure loggers. | + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`LoggerProvider.logger_configurator/development`](#loggerprovider)
JSON Schema @@ -1048,10 +1285,18 @@ No properties. ## ExperimentalLoggerMatcherAndConfig -| Property | Description | Type | Required? | -|---|---|---|---| -| `name` | Configure logger names to match, evaluated as follows:

* If the logger name exactly matches.
* If the logger name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
| `string` | `false` | -| `config` | The logger config. | [`ExperimentalLoggerConfig`](#experimentalloggerconfig) | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `name` | `string` | `false` | No constraints. | Configure logger names to match, evaluated as follows:

* If the logger name exactly matches.
* If the logger name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
| +| `config` | [`ExperimentalLoggerConfig`](#experimentalloggerconfig) | `false` | No constraints. | The logger config. | + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`ExperimentalLoggerConfigurator.loggers`](#experimentalloggerconfigurator)
JSON Schema @@ -1077,9 +1322,18 @@ No properties. ## ExperimentalMeterConfig -| Property | Description | Type | Required? | -|---|---|---|---| -| `disabled` | Configure if the meter is enabled or not. | `boolean` | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `disabled` | `boolean` | `false` | No constraints. | Configure if the meter is enabled or not. | + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`ExperimentalMeterConfigurator.default_config`](#experimentalmeterconfigurator) +* [`ExperimentalMeterMatcherAndConfig.config`](#experimentalmetermatcherandconfig)
JSON Schema @@ -1102,10 +1356,18 @@ No properties. ## ExperimentalMeterConfigurator -| Property | Description | Type | Required? | -|---|---|---|---| -| `default_config` | Configure the default meter config used there is no matching entry in .meter_configurator/development.meters. | [`ExperimentalMeterConfig`](#experimentalmeterconfig) | `false` | -| `meters` | Configure meters. | `array` of [`ExperimentalMeterMatcherAndConfig`](#experimentalmetermatcherandconfig) | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `default_config` | [`ExperimentalMeterConfig`](#experimentalmeterconfig) | `false` | No constraints. | Configure the default meter config used there is no matching entry in .meter_configurator/development.meters. | +| `meters` | `array` of [`ExperimentalMeterMatcherAndConfig`](#experimentalmetermatcherandconfig) | `false` | No constraints. | Configure meters. | + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`MeterProvider.meter_configurator/development`](#meterprovider)
JSON Schema @@ -1132,10 +1394,18 @@ No properties. ## ExperimentalMeterMatcherAndConfig -| Property | Description | Type | Required? | -|---|---|---|---| -| `name` | Configure meter names to match, evaluated as follows:

* If the meter name exactly matches.
* If the meter name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
| `string` | `false` | -| `config` | The meter config. | [`ExperimentalMeterConfig`](#experimentalmeterconfig) | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `name` | `string` | `false` | No constraints. | Configure meter names to match, evaluated as follows:

* If the meter name exactly matches.
* If the meter name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
| +| `config` | [`ExperimentalMeterConfig`](#experimentalmeterconfig) | `false` | No constraints. | The meter config. | + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`ExperimentalMeterConfigurator.meters`](#experimentalmeterconfigurator)
JSON Schema @@ -1161,9 +1431,18 @@ No properties. ## ExperimentalOtlpFileExporter -| Property | Description | Type | Required? | -|---|---|---|---| -| `output_stream` | Configure output stream.
Values include stdout, or scheme+destination. For example: file:///path/to/file.jsonl.
If omitted or null, stdout is used.
| one of:
* `string`
* `null`
| `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `output_stream` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure output stream.
Values include stdout, or scheme+destination. For example: file:///path/to/file.jsonl.
If omitted or null, stdout is used.
| + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`LogRecordExporter.otlp_file/development`](#logrecordexporter) +* [`SpanExporter.otlp_file/development`](#spanexporter)
JSON Schema @@ -1188,11 +1467,19 @@ No properties. ## ExperimentalOtlpFileMetricExporter -| Property | Description | Type | Required? | -|---|---|---|---| -| `output_stream` | Configure output stream.
Values include stdout, or scheme+destination. For example: file:///path/to/file.jsonl.
If omitted or null, stdout is used.
| one of:
* `string`
* `null`
| `false` | -| `temporality_preference` | Configure temporality preference.
Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, cumulative is used.
| [`ExporterTemporalityPreference`](#exportertemporalitypreference) | `false` | -| `default_histogram_aggregation` | Configure default histogram aggregation.
Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, explicit_bucket_histogram is used.
| [`ExporterDefaultHistogramAggregation`](#exporterdefaulthistogramaggregation) | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `output_stream` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure output stream.
Values include stdout, or scheme+destination. For example: file:///path/to/file.jsonl.
If omitted or null, stdout is used.
| +| `temporality_preference` | [`ExporterTemporalityPreference`](#exportertemporalitypreference) | `false` | No constraints. | Configure temporality preference.
Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, cumulative is used.
| +| `default_histogram_aggregation` | [`ExporterDefaultHistogramAggregation`](#exporterdefaulthistogramaggregation) | `false` | No constraints. | Configure default histogram aggregation.
Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, explicit_bucket_histogram is used.
| + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`PushMetricExporter.otlp_file/development`](#pushmetricexporter)
JSON Schema @@ -1223,9 +1510,17 @@ No properties. ## ExperimentalPeerInstrumentation -| Property | Description | Type | Required? | -|---|---|---|---| -| `service_mapping` | Configure the service mapping for instrumentations following peer.service semantic conventions.
See peer.service semantic conventions: https://opentelemetry.io/docs/specs/semconv/general/attributes/#general-remote-service-attributes
| `array` of [`ExperimentalPeerServiceMapping`](#experimentalpeerservicemapping) | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `service_mapping` | `array` of [`ExperimentalPeerServiceMapping`](#experimentalpeerservicemapping) | `false` | No constraints. | Configure the service mapping for instrumentations following peer.service semantic conventions.
See peer.service semantic conventions: https://opentelemetry.io/docs/specs/semconv/general/attributes/#general-remote-service-attributes
| + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`ExperimentalGeneralInstrumentation.peer`](#experimentalgeneralinstrumentation)
JSON Schema @@ -1247,10 +1542,19 @@ No properties. ## ExperimentalPeerServiceMapping -| Property | Description | Type | Required? | -|---|---|---|---| -| `peer` | The IP address to map.
| `string` | `true` | -| `service` | The logical name corresponding to the IP address of .peer.
| `string` | `true` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `peer` | `string` | `true` | No constraints. | The IP address to map.
| +| `service` | `string` | `true` | No constraints. | The logical name corresponding to the IP address of .peer.
| + +Constraints: + +* `additionalProperties`: `false` +* `required`: `["peer","service"]` + +Usages: + +* [`ExperimentalPeerInstrumentation.service_mapping`](#experimentalpeerinstrumentation)
JSON Schema @@ -1278,6 +1582,14 @@ No properties. No properties. +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`ExperimentalResourceDetector.process`](#experimentalresourcedetector) +
JSON Schema @@ -1293,13 +1605,21 @@ No properties. ## ExperimentalPrometheusMetricExporter -| Property | Description | Type | Required? | -|---|---|---|---| -| `host` | Configure host.
If omitted or null, localhost is used.
| one of:
* `string`
* `null`
| `false` | -| `port` | Configure port.
If omitted or null, 9464 is used.
| one of:
* `integer`
* `null`
| `false` | -| `without_scope_info` | Configure Prometheus Exporter to produce metrics without a scope info metric.
If omitted or null, false is used.
| one of:
* `boolean`
* `null`
| `false` | -| `with_resource_constant_labels` | Configure Prometheus Exporter to add resource attributes as metrics attributes, where the resource attribute keys match the patterns. | [`IncludeExclude`](#includeexclude) | `false` | -| `translation_strategy` | Configure how Prometheus metrics are exposed. Values include:

* UnderscoreEscapingWithSuffixes, the default. This fully escapes metric names for classic Prometheus metric name compatibility, and includes appending type and unit suffixes.
* UnderscoreEscapingWithoutSuffixes, metric names will continue to escape special characters to _, but suffixes won't be attached.
* NoUTF8EscapingWithSuffixes will disable changing special characters to _. Special suffixes like units and _total for counters will be attached.
* NoTranslation. This strategy bypasses all metric and label name translation, passing them through unaltered.

If omitted or null, UnderscoreEscapingWithSuffixes is used.
| one of:
* `string`
* `null`
| `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `host` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure host.
If omitted or null, localhost is used.
| +| `port` | one of:
* `integer`
* `null`
| `false` | No constraints. | Configure port.
If omitted or null, 9464 is used.
| +| `without_scope_info` | one of:
* `boolean`
* `null`
| `false` | No constraints. | Configure Prometheus Exporter to produce metrics without a scope info metric.
If omitted or null, false is used.
| +| `with_resource_constant_labels` | [`IncludeExclude`](#includeexclude) | `false` | No constraints. | Configure Prometheus Exporter to add resource attributes as metrics attributes, where the resource attribute keys match the patterns. | +| `translation_strategy` | one of:
* `string`
* `null`
| `false` | * `enum`: `["UnderscoreEscapingWithSuffixes","UnderscoreEscapingWithoutSuffixes","NoUTF8EscapingWithSuffixes","NoTranslation"]`
| Configure how Prometheus metrics are exposed. Values include:

* UnderscoreEscapingWithSuffixes, the default. This fully escapes metric names for classic Prometheus metric name compatibility, and includes appending type and unit suffixes.
* UnderscoreEscapingWithoutSuffixes, metric names will continue to escape special characters to _, but suffixes won't be attached.
* NoUTF8EscapingWithSuffixes will disable changing special characters to _. Special suffixes like units and _total for counters will be attached.
* NoTranslation. This strategy bypasses all metric and label name translation, passing them through unaltered.

If omitted or null, UnderscoreEscapingWithSuffixes is used.
| + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`PullMetricExporter.prometheus/development`](#pullmetricexporter)
JSON Schema @@ -1351,10 +1671,18 @@ No properties. ## ExperimentalResourceDetection -| Property | Description | Type | Required? | -|---|---|---|---| -| `attributes` | Configure attributes provided by resource detectors. | [`IncludeExclude`](#includeexclude) | `false` | -| `detectors` | Configure resource detectors.
Resource detector names are dependent on the SDK language ecosystem. Please consult documentation for each respective language.
If omitted or null, no resource detectors are enabled.
| `array` of [`ExperimentalResourceDetector`](#experimentalresourcedetector) | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `attributes` | [`IncludeExclude`](#includeexclude) | `false` | No constraints. | Configure attributes provided by resource detectors. | +| `detectors` | `array` of [`ExperimentalResourceDetector`](#experimentalresourcedetector) | `false` | No constraints. | Configure resource detectors.
Resource detector names are dependent on the SDK language ecosystem. Please consult documentation for each respective language.
If omitted or null, no resource detectors are enabled.
| + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`Resource.detection/development`](#resource)
JSON Schema @@ -1379,12 +1707,25 @@ No properties. ## ExperimentalResourceDetector -| Property | Description | Type | Required? | -|---|---|---|---| -| `container` | Enable the container resource detector, which populates container.* attributes.
| [`ExperimentalContainerResourceDetector`](#experimentalcontainerresourcedetector) | `false` | -| `host` | Enable the host resource detector, which populates host.* and os.* attributes.
| [`ExperimentalHostResourceDetector`](#experimentalhostresourcedetector) | `false` | -| `process` | Enable the process resource detector, which populates process.* attributes.
| [`ExperimentalProcessResourceDetector`](#experimentalprocessresourcedetector) | `false` | -| `service` | Enable the service detector, which populates service.name based on the OTEL_SERVICE_NAME environment variable and service.instance.id.
| [`ExperimentalServiceResourceDetector`](#experimentalserviceresourcedetector) | `false` | +`ExperimentalResourceDetector` is an [SDK extension plugin](#sdk-extension-plugins). + +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `container` | [`ExperimentalContainerResourceDetector`](#experimentalcontainerresourcedetector) | `false` | No constraints. | Enable the container resource detector, which populates container.* attributes.
| +| `host` | [`ExperimentalHostResourceDetector`](#experimentalhostresourcedetector) | `false` | No constraints. | Enable the host resource detector, which populates host.* and os.* attributes.
| +| `process` | [`ExperimentalProcessResourceDetector`](#experimentalprocessresourcedetector) | `false` | No constraints. | Enable the process resource detector, which populates process.* attributes.
| +| `service` | [`ExperimentalServiceResourceDetector`](#experimentalserviceresourcedetector) | `false` | No constraints. | Enable the service detector, which populates service.name based on the OTEL_SERVICE_NAME environment variable and service.instance.id.
| + +Constraints: + +* `patternProperties`: `{".*":{"type":["object","null"]}}` +* `additionalProperties`: `true` +* `minProperties`: `1` +* `maxProperties`: `1` + +Usages: + +* [`ExperimentalResourceDetection.detectors`](#experimentalresourcedetection)
JSON Schema @@ -1424,6 +1765,14 @@ No properties. No properties. +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`ExperimentalResourceDetector.service`](#experimentalresourcedetector) +
JSON Schema @@ -1439,9 +1788,18 @@ No properties. ## ExperimentalTracerConfig -| Property | Description | Type | Required? | -|---|---|---|---| -| `disabled` | Configure if the tracer is enabled or not. | `boolean` | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `disabled` | `boolean` | `false` | No constraints. | Configure if the tracer is enabled or not. | + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`ExperimentalTracerConfigurator.default_config`](#experimentaltracerconfigurator) +* [`ExperimentalTracerMatcherAndConfig.config`](#experimentaltracermatcherandconfig)
JSON Schema @@ -1464,10 +1822,18 @@ No properties. ## ExperimentalTracerConfigurator -| Property | Description | Type | Required? | -|---|---|---|---| -| `default_config` | Configure the default tracer config used there is no matching entry in .tracer_configurator/development.tracers. | [`ExperimentalTracerConfig`](#experimentaltracerconfig) | `false` | -| `tracers` | Configure tracers. | `array` of [`ExperimentalTracerMatcherAndConfig`](#experimentaltracermatcherandconfig) | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `default_config` | [`ExperimentalTracerConfig`](#experimentaltracerconfig) | `false` | No constraints. | Configure the default tracer config used there is no matching entry in .tracer_configurator/development.tracers. | +| `tracers` | `array` of [`ExperimentalTracerMatcherAndConfig`](#experimentaltracermatcherandconfig) | `false` | No constraints. | Configure tracers. | + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`TracerProvider.tracer_configurator/development`](#tracerprovider)
JSON Schema @@ -1494,10 +1860,18 @@ No properties. ## ExperimentalTracerMatcherAndConfig -| Property | Description | Type | Required? | -|---|---|---|---| -| `name` | Configure tracer names to match, evaluated as follows:

* If the tracer name exactly matches.
* If the tracer name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
| `string` | `false` | -| `config` | The tracer config. | [`ExperimentalTracerConfig`](#experimentaltracerconfig) | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `name` | `string` | `false` | No constraints. | Configure tracer names to match, evaluated as follows:

* If the tracer name exactly matches.
* If the tracer name matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
| +| `config` | [`ExperimentalTracerConfig`](#experimentaltracerconfig) | `false` | No constraints. | The tracer config. | + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`ExperimentalTracerConfigurator.tracers`](#experimentaltracerconfigurator)
JSON Schema @@ -1523,10 +1897,18 @@ No properties. ## ExplicitBucketHistogramAggregation -| Property | Description | Type | Required? | -|---|---|---|---| -| `boundaries` | Configure bucket boundaries.
If omitted, [0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, 7500, 10000] is used.
| `array` of `number` | `false` | -| `record_min_max` | Configure record min and max.
If omitted or null, true is used.
| one of:
* `boolean`
* `null`
| `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `boundaries` | `array` of `number` | `false` | No constraints. | Configure bucket boundaries.
If omitted, [0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, 7500, 10000] is used.
| +| `record_min_max` | one of:
* `boolean`
* `null`
| `false` | No constraints. | Configure record min and max.
If omitted or null, true is used.
| + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`Aggregation.explicit_bucket_histogram`](#aggregation)
JSON Schema @@ -1559,6 +1941,16 @@ No properties. No properties. +Constraints: + +* `enum`: `["explicit_bucket_histogram","base2_exponential_bucket_histogram"]` + +Usages: + +* [`OtlpHttpMetricExporter.default_histogram_aggregation`](#otlphttpmetricexporter) +* [`OtlpGrpcMetricExporter.default_histogram_aggregation`](#otlpgrpcmetricexporter) +* [`ExperimentalOtlpFileMetricExporter.default_histogram_aggregation`](#experimentalotlpfilemetricexporter) +
JSON Schema @@ -1579,6 +1971,16 @@ No properties. No properties. +Constraints: + +* `enum`: `["cumulative","delta","low_memory"]` + +Usages: + +* [`OtlpHttpMetricExporter.temporality_preference`](#otlphttpmetricexporter) +* [`OtlpGrpcMetricExporter.temporality_preference`](#otlpgrpcmetricexporter) +* [`ExperimentalOtlpFileMetricExporter.temporality_preference`](#experimentalotlpfilemetricexporter) +
JSON Schema @@ -1598,10 +2000,20 @@ No properties. ## IncludeExclude -| Property | Description | Type | Required? | -|---|---|---|---| -| `included` | Configure list of value patterns to include.
Values are evaluated to match as follows:
* If the value exactly matches.
* If the value matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
If omitted, all values are included.
| `array` of `string` | `false` | -| `excluded` | Configure list of value patterns to exclude. Applies after .included (i.e. excluded has higher priority than included).
Values are evaluated to match as follows:
* If the value exactly matches.
* If the value matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
If omitted, .included attributes are included.
| `array` of `string` | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `included` | `array` of `string` | `false` | No constraints. | Configure list of value patterns to include.
Values are evaluated to match as follows:
* If the value exactly matches.
* If the value matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
If omitted, all values are included.
| +| `excluded` | `array` of `string` | `false` | No constraints. | Configure list of value patterns to exclude. Applies after .included (i.e. excluded has higher priority than included).
Values are evaluated to match as follows:
* If the value exactly matches.
* If the value matches the wildcard pattern, where '?' matches any single character and '*' matches any number of characters including none.
If omitted, .included attributes are included.
| + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`ExperimentalPrometheusMetricExporter.with_resource_constant_labels`](#experimentalprometheusmetricexporter) +* [`ViewStream.attribute_keys`](#viewstream) +* [`ExperimentalResourceDetection.attributes`](#experimentalresourcedetection)
JSON Schema @@ -1631,6 +2043,14 @@ No properties. No properties. +Constraints: + +* `enum`: `["counter","gauge","histogram","observable_counter","observable_gauge","observable_up_down_counter","up_down_counter"]` + +Usages: + +* [`ViewSelector.instrument_type`](#viewselector) +
JSON Schema @@ -1656,6 +2076,14 @@ No properties. No properties. +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`TextMapPropagator.jaeger`](#textmappropagator) +
JSON Schema @@ -1671,11 +2099,19 @@ No properties. ## JaegerRemoteSampler -| Property | Description | Type | Required? | -|---|---|---|---| -| `endpoint` | TODO | one of:
* `string`
* `null`
| `false` | -| `interval` | TODO | one of:
* `integer`
* `null`
| `false` | -| `initial_sampler` | TODO | [`Sampler`](#sampler) | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `endpoint` | one of:
* `string`
* `null`
| `false` | No constraints. | TODO | +| `interval` | one of:
* `integer`
* `null`
| `false` | * `minimum`: `0`
| TODO | +| `initial_sampler` | [`Sampler`](#sampler) | `false` | No constraints. | TODO | + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`Sampler.jaeger_remote`](#sampler)
JSON Schema @@ -1712,6 +2148,14 @@ No properties. No properties. +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`Aggregation.last_value`](#aggregation) +
JSON Schema @@ -1727,11 +2171,20 @@ No properties. ## LoggerProvider -| Property | Description | Type | Required? | -|---|---|---|---| -| `processors` | Configure log record processors. | `array` of [`LogRecordProcessor`](#logrecordprocessor) | `true` | -| `limits` | Configure log record limits. See also attribute_limits. | [`LogRecordLimits`](#logrecordlimits) | `false` | -| `logger_configurator/development` | Configure loggers.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalLoggerConfigurator`](#experimentalloggerconfigurator) | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `processors` | `array` of [`LogRecordProcessor`](#logrecordprocessor) | `true` | No constraints. | Configure log record processors. | +| `limits` | [`LogRecordLimits`](#logrecordlimits) | `false` | No constraints. | Configure log record limits. See also attribute_limits. | +| `logger_configurator/development` | [`ExperimentalLoggerConfigurator`](#experimentalloggerconfigurator) | `false` | No constraints. | Configure loggers.
This type is in development and subject to breaking changes in minor versions.
| + +Constraints: + +* `additionalProperties`: `false` +* `required`: `["processors"]` + +Usages: + +* [`OpentelemetryConfiguration.logger_provider`](#opentelemetryconfiguration)
JSON Schema @@ -1934,12 +2387,26 @@ No properties. ## LogRecordExporter -| Property | Description | Type | Required? | -|---|---|---|---| -| `otlp_http` | Configure exporter to be OTLP with HTTP transport. | [`OtlpHttpExporter`](#otlphttpexporter) | `false` | -| `otlp_grpc` | Configure exporter to be OTLP with gRPC transport. | [`OtlpGrpcExporter`](#otlpgrpcexporter) | `false` | -| `otlp_file/development` | Configure exporter to be OTLP with file transport.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalOtlpFileExporter`](#experimentalotlpfileexporter) | `false` | -| `console` | Configure exporter to be console. | [`ConsoleExporter`](#consoleexporter) | `false` | +`LogRecordExporter` is an [SDK extension plugin](#sdk-extension-plugins). + +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `otlp_http` | [`OtlpHttpExporter`](#otlphttpexporter) | `false` | No constraints. | Configure exporter to be OTLP with HTTP transport. | +| `otlp_grpc` | [`OtlpGrpcExporter`](#otlpgrpcexporter) | `false` | No constraints. | Configure exporter to be OTLP with gRPC transport. | +| `otlp_file/development` | [`ExperimentalOtlpFileExporter`](#experimentalotlpfileexporter) | `false` | No constraints. | Configure exporter to be OTLP with file transport.
This type is in development and subject to breaking changes in minor versions.
| +| `console` | [`ConsoleExporter`](#consoleexporter) | `false` | No constraints. | Configure exporter to be console. | + +Constraints: + +* `patternProperties`: `{".*":{"type":["object","null"]}}` +* `additionalProperties`: `true` +* `minProperties`: `1` +* `maxProperties`: `1` + +Usages: + +* [`SimpleLogRecordProcessor.exporter`](#simplelogrecordprocessor) +* [`BatchLogRecordProcessor.exporter`](#batchlogrecordprocessor)
JSON Schema @@ -1977,10 +2444,18 @@ No properties. ## LogRecordLimits -| Property | Description | Type | Required? | -|---|---|---|---| -| `attribute_value_length_limit` | Configure max attribute value size. Overrides .attribute_limits.attribute_value_length_limit.
Value must be non-negative.
If omitted or null, there is no limit.
| one of:
* `integer`
* `null`
| `false` | -| `attribute_count_limit` | Configure max attribute count. Overrides .attribute_limits.attribute_count_limit.
Value must be non-negative.
If omitted or null, 128 is used.
| one of:
* `integer`
* `null`
| `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `attribute_value_length_limit` | one of:
* `integer`
* `null`
| `false` | * `minimum`: `0`
| Configure max attribute value size. Overrides .attribute_limits.attribute_value_length_limit.
Value must be non-negative.
If omitted or null, there is no limit.
| +| `attribute_count_limit` | one of:
* `integer`
* `null`
| `false` | * `minimum`: `0`
| Configure max attribute count. Overrides .attribute_limits.attribute_count_limit.
Value must be non-negative.
If omitted or null, 128 is used.
| + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`LoggerProvider.limits`](#loggerprovider)
JSON Schema @@ -2010,10 +2485,23 @@ No properties. ## LogRecordProcessor -| Property | Description | Type | Required? | -|---|---|---|---| -| `batch` | Configure a batch log record processor. | [`BatchLogRecordProcessor`](#batchlogrecordprocessor) | `false` | -| `simple` | Configure a simple log record processor. | [`SimpleLogRecordProcessor`](#simplelogrecordprocessor) | `false` | +`LogRecordProcessor` is an [SDK extension plugin](#sdk-extension-plugins). + +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `batch` | [`BatchLogRecordProcessor`](#batchlogrecordprocessor) | `false` | No constraints. | Configure a batch log record processor. | +| `simple` | [`SimpleLogRecordProcessor`](#simplelogrecordprocessor) | `false` | No constraints. | Configure a simple log record processor. | + +Constraints: + +* `patternProperties`: `{".*":{"type":["object"]}}` +* `additionalProperties`: `true` +* `minProperties`: `1` +* `maxProperties`: `1` + +Usages: + +* [`LoggerProvider.processors`](#loggerprovider)
JSON Schema @@ -2044,12 +2532,21 @@ No properties. ## MeterProvider -| Property | Description | Type | Required? | -|---|---|---|---| -| `readers` | Configure metric readers. | `array` of [`MetricReader`](#metricreader) | `true` | -| `views` | Configure views.
Each view has a selector which determines the instrument(s) it applies to, and a configuration for the resulting stream(s).
| `array` of [`View`](#view) | `false` | -| `exemplar_filter` | Configure the exemplar filter.
Values include: trace_based, always_on, always_off. For behavior of values see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#metrics-sdk-configuration.
If omitted or null, trace_based is used.
| [`ExemplarFilter`](#exemplarfilter) | `false` | -| `meter_configurator/development` | Configure meters.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalMeterConfigurator`](#experimentalmeterconfigurator) | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `readers` | `array` of [`MetricReader`](#metricreader) | `true` | No constraints. | Configure metric readers. | +| `views` | `array` of [`View`](#view) | `false` | No constraints. | Configure views.
Each view has a selector which determines the instrument(s) it applies to, and a configuration for the resulting stream(s).
| +| `exemplar_filter` | [`ExemplarFilter`](#exemplarfilter) | `false` | No constraints. | Configure the exemplar filter.
Values include: trace_based, always_on, always_off. For behavior of values see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#metrics-sdk-configuration.
If omitted or null, trace_based is used.
| +| `meter_configurator/development` | [`ExperimentalMeterConfigurator`](#experimentalmeterconfigurator) | `false` | No constraints. | Configure meters.
This type is in development and subject to breaking changes in minor versions.
| + +Constraints: + +* `additionalProperties`: `false` +* `required`: `["readers"]` + +Usages: + +* [`OpentelemetryConfiguration.meter_provider`](#opentelemetryconfiguration)
JSON Schema @@ -2775,9 +3272,23 @@ No properties. ## MetricProducer -| Property | Description | Type | Required? | -|---|---|---|---| -| `opencensus` | Configure metric producer to be opencensus. | [`OpenCensusMetricProducer`](#opencensusmetricproducer) | `false` | +`MetricProducer` is an [SDK extension plugin](#sdk-extension-plugins). + +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `opencensus` | [`OpenCensusMetricProducer`](#opencensusmetricproducer) | `false` | No constraints. | Configure metric producer to be opencensus. | + +Constraints: + +* `patternProperties`: `{".*":{"type":["object","null"]}}` +* `additionalProperties`: `true` +* `minProperties`: `1` +* `maxProperties`: `1` + +Usages: + +* [`PeriodicMetricReader.producers`](#periodicmetricreader) +* [`PullMetricReader.producers`](#pullmetricreader)
JSON Schema @@ -2806,10 +3317,20 @@ No properties. ## MetricReader -| Property | Description | Type | Required? | -|---|---|---|---| -| `periodic` | Configure a periodic metric reader. | [`PeriodicMetricReader`](#periodicmetricreader) | `false` | -| `pull` | Configure a pull based metric reader. | [`PullMetricReader`](#pullmetricreader) | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `periodic` | [`PeriodicMetricReader`](#periodicmetricreader) | `false` | No constraints. | Configure a periodic metric reader. | +| `pull` | [`PullMetricReader`](#pullmetricreader) | `false` | No constraints. | Configure a pull based metric reader. | + +Constraints: + +* `additionalProperties`: `false` +* `minProperties`: `1` +* `maxProperties`: `1` + +Usages: + +* [`MeterProvider.readers`](#meterprovider)
JSON Schema @@ -2833,10 +3354,22 @@ No properties. ## NameStringValuePair -| Property | Description | Type | Required? | -|---|---|---|---| -| `name` | The name of the pair. | `string` | `true` | -| `value` | The value of the pair. | one of:
* `string`
* `null`
| `true` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `name` | `string` | `true` | No constraints. | The name of the pair. | +| `value` | one of:
* `string`
* `null`
| `true` | No constraints. | The value of the pair. | + +Constraints: + +* `additionalProperties`: `false` +* `required`: `["name","value"]` + +Usages: + +* [`OtlpHttpExporter.headers`](#otlphttpexporter) +* [`OtlpGrpcExporter.headers`](#otlpgrpcexporter) +* [`OtlpHttpMetricExporter.headers`](#otlphttpmetricexporter) +* [`OtlpGrpcMetricExporter.headers`](#otlpgrpcmetricexporter)
JSON Schema @@ -2867,6 +3400,14 @@ No properties. No properties. +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`MetricProducer.opencensus`](#metricproducer) +
JSON Schema @@ -2882,18 +3423,25 @@ No properties. ## OpentelemetryConfiguration -| Property | Description | Type | Required? | -|---|---|---|---| -| `file_format` | The file format version.
The yaml format is documented at
https://github.com/open-telemetry/opentelemetry-configuration/tree/main/schema
| `string` | `true` | -| `disabled` | Configure if the SDK is disabled or not.
If omitted or null, false is used.
| one of:
* `boolean`
* `null`
| `false` | -| `log_level` | Configure the log level of the internal logger used by the SDK.
If omitted, info is used.
| one of:
* `string`
* `null`
| `false` | -| `attribute_limits` | Configure general attribute limits. See also tracer_provider.limits, logger_provider.limits.
| [`AttributeLimits`](#attributelimits) | `false` | -| `logger_provider` | Configure logger provider.
If omitted, a noop logger provider is used.
| [`LoggerProvider`](#loggerprovider) | `false` | -| `meter_provider` | Configure meter provider.
If omitted, a noop meter provider is used.
| [`MeterProvider`](#meterprovider) | `false` | -| `propagator` | Configure text map context propagators.
If omitted, a noop propagator is used.
| [`Propagator`](#propagator) | `false` | -| `tracer_provider` | Configure tracer provider.
If omitted, a noop tracer provider is used.
| [`TracerProvider`](#tracerprovider) | `false` | -| `resource` | Configure resource for all signals.
If omitted, the default resource is used.
| [`Resource`](#resource) | `false` | -| `instrumentation/development` | Configure instrumentation.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalInstrumentation`](#experimentalinstrumentation) | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `file_format` | `string` | `true` | No constraints. | The file format version.
The yaml format is documented at
https://github.com/open-telemetry/opentelemetry-configuration/tree/main/schema
| +| `disabled` | one of:
* `boolean`
* `null`
| `false` | No constraints. | Configure if the SDK is disabled or not.
If omitted or null, false is used.
| +| `log_level` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure the log level of the internal logger used by the SDK.
If omitted, info is used.
| +| `attribute_limits` | [`AttributeLimits`](#attributelimits) | `false` | No constraints. | Configure general attribute limits. See also tracer_provider.limits, logger_provider.limits.
| +| `logger_provider` | [`LoggerProvider`](#loggerprovider) | `false` | No constraints. | Configure logger provider.
If omitted, a noop logger provider is used.
| +| `meter_provider` | [`MeterProvider`](#meterprovider) | `false` | No constraints. | Configure meter provider.
If omitted, a noop meter provider is used.
| +| `propagator` | [`Propagator`](#propagator) | `false` | No constraints. | Configure text map context propagators.
If omitted, a noop propagator is used.
| +| `tracer_provider` | [`TracerProvider`](#tracerprovider) | `false` | No constraints. | Configure tracer provider.
If omitted, a noop tracer provider is used.
| +| `resource` | [`Resource`](#resource) | `false` | No constraints. | Configure resource for all signals.
If omitted, the default resource is used.
| +| `instrumentation/development` | [`ExperimentalInstrumentation`](#experimentalinstrumentation) | `false` | No constraints. | Configure instrumentation.
This type is in development and subject to breaking changes in minor versions.
| + +Constraints: + +* `additionalProperties`: `true` +* `required`: `["file_format"]` + +No usages.
JSON Schema @@ -2991,6 +3539,14 @@ No properties. No properties. +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`TextMapPropagator.ottrace`](#textmappropagator) +
JSON Schema @@ -3006,17 +3562,26 @@ No properties. ## OtlpGrpcExporter -| Property | Description | Type | Required? | -|---|---|---|---| -| `endpoint` | Configure endpoint.
If omitted or null, http://localhost:4317 is used.
| one of:
* `string`
* `null`
| `false` | -| `certificate_file` | Configure certificate used to verify a server's TLS credentials.
Absolute path to certificate file in PEM format.
If omitted or null, system default certificate verification is used for secure connections.
| one of:
* `string`
* `null`
| `false` | -| `client_key_file` | Configure mTLS private client key.
Absolute path to client key file in PEM format. If set, .client_certificate must also be set.
If omitted or null, mTLS is not used.
| one of:
* `string`
* `null`
| `false` | -| `client_certificate_file` | Configure mTLS client certificate.
Absolute path to client certificate file in PEM format. If set, .client_key must also be set.
If omitted or null, mTLS is not used.
| one of:
* `string`
* `null`
| `false` | -| `headers` | Configure headers. Entries have higher priority than entries from .headers_list.
If an entry's .value is null, the entry is ignored.
| `array` of [`NameStringValuePair`](#namestringvaluepair) | `false` | -| `headers_list` | Configure headers. Entries have lower priority than entries from .headers.
The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details.
If omitted or null, no headers are added.
| one of:
* `string`
* `null`
| `false` | -| `compression` | Configure compression.
Values include: gzip, none. Implementations may support other compression algorithms.
If omitted or null, none is used.
| one of:
* `string`
* `null`
| `false` | -| `timeout` | Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 10000 is used.
| one of:
* `integer`
* `null`
| `false` | -| `insecure` | Configure client transport security for the exporter's connection.
Only applicable when .endpoint is provided without http or https scheme. Implementations may choose to ignore .insecure.
If omitted or null, false is used.
| one of:
* `boolean`
* `null`
| `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `endpoint` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure endpoint.
If omitted or null, http://localhost:4317 is used.
| +| `certificate_file` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure certificate used to verify a server's TLS credentials.
Absolute path to certificate file in PEM format.
If omitted or null, system default certificate verification is used for secure connections.
| +| `client_key_file` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure mTLS private client key.
Absolute path to client key file in PEM format. If set, .client_certificate must also be set.
If omitted or null, mTLS is not used.
| +| `client_certificate_file` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure mTLS client certificate.
Absolute path to client certificate file in PEM format. If set, .client_key must also be set.
If omitted or null, mTLS is not used.
| +| `headers` | `array` of [`NameStringValuePair`](#namestringvaluepair) | `false` | No constraints. | Configure headers. Entries have higher priority than entries from .headers_list.
If an entry's .value is null, the entry is ignored.
| +| `headers_list` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure headers. Entries have lower priority than entries from .headers.
The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details.
If omitted or null, no headers are added.
| +| `compression` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure compression.
Values include: gzip, none. Implementations may support other compression algorithms.
If omitted or null, none is used.
| +| `timeout` | one of:
* `integer`
* `null`
| `false` | * `minimum`: `0`
| Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 10000 is used.
| +| `insecure` | one of:
* `boolean`
* `null`
| `false` | No constraints. | Configure client transport security for the exporter's connection.
Only applicable when .endpoint is provided without http or https scheme. Implementations may choose to ignore .insecure.
If omitted or null, false is used.
| + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`LogRecordExporter.otlp_grpc`](#logrecordexporter) +* [`SpanExporter.otlp_grpc`](#spanexporter)
JSON Schema @@ -3090,19 +3655,27 @@ No properties. ## OtlpGrpcMetricExporter -| Property | Description | Type | Required? | -|---|---|---|---| -| `endpoint` | Configure endpoint.
If omitted or null, http://localhost:4317 is used.
| one of:
* `string`
* `null`
| `false` | -| `certificate_file` | Configure certificate used to verify a server's TLS credentials.
Absolute path to certificate file in PEM format.
If omitted or null, system default certificate verification is used for secure connections.
| one of:
* `string`
* `null`
| `false` | -| `client_key_file` | Configure mTLS private client key.
Absolute path to client key file in PEM format. If set, .client_certificate must also be set.
If omitted or null, mTLS is not used.
| one of:
* `string`
* `null`
| `false` | -| `client_certificate_file` | Configure mTLS client certificate.
Absolute path to client certificate file in PEM format. If set, .client_key must also be set.
If omitted or null, mTLS is not used.
| one of:
* `string`
* `null`
| `false` | -| `headers` | Configure headers. Entries have higher priority than entries from .headers_list.
If an entry's .value is null, the entry is ignored.
| `array` of [`NameStringValuePair`](#namestringvaluepair) | `false` | -| `headers_list` | Configure headers. Entries have lower priority than entries from .headers.
The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details.
If omitted or null, no headers are added.
| one of:
* `string`
* `null`
| `false` | -| `compression` | Configure compression.
Values include: gzip, none. Implementations may support other compression algorithms.
If omitted or null, none is used.
| one of:
* `string`
* `null`
| `false` | -| `timeout` | Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 10000 is used.
| one of:
* `integer`
* `null`
| `false` | -| `insecure` | Configure client transport security for the exporter's connection.
Only applicable when .endpoint is provided without http or https scheme. Implementations may choose to ignore .insecure.
If omitted or null, false is used.
| one of:
* `boolean`
* `null`
| `false` | -| `temporality_preference` | Configure temporality preference.
Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, cumulative is used.
| [`ExporterTemporalityPreference`](#exportertemporalitypreference) | `false` | -| `default_histogram_aggregation` | Configure default histogram aggregation.
Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, explicit_bucket_histogram is used.
| [`ExporterDefaultHistogramAggregation`](#exporterdefaulthistogramaggregation) | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `endpoint` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure endpoint.
If omitted or null, http://localhost:4317 is used.
| +| `certificate_file` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure certificate used to verify a server's TLS credentials.
Absolute path to certificate file in PEM format.
If omitted or null, system default certificate verification is used for secure connections.
| +| `client_key_file` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure mTLS private client key.
Absolute path to client key file in PEM format. If set, .client_certificate must also be set.
If omitted or null, mTLS is not used.
| +| `client_certificate_file` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure mTLS client certificate.
Absolute path to client certificate file in PEM format. If set, .client_key must also be set.
If omitted or null, mTLS is not used.
| +| `headers` | `array` of [`NameStringValuePair`](#namestringvaluepair) | `false` | No constraints. | Configure headers. Entries have higher priority than entries from .headers_list.
If an entry's .value is null, the entry is ignored.
| +| `headers_list` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure headers. Entries have lower priority than entries from .headers.
The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details.
If omitted or null, no headers are added.
| +| `compression` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure compression.
Values include: gzip, none. Implementations may support other compression algorithms.
If omitted or null, none is used.
| +| `timeout` | one of:
* `integer`
* `null`
| `false` | * `minimum`: `0`
| Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 10000 is used.
| +| `insecure` | one of:
* `boolean`
* `null`
| `false` | No constraints. | Configure client transport security for the exporter's connection.
Only applicable when .endpoint is provided without http or https scheme. Implementations may choose to ignore .insecure.
If omitted or null, false is used.
| +| `temporality_preference` | [`ExporterTemporalityPreference`](#exportertemporalitypreference) | `false` | No constraints. | Configure temporality preference.
Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, cumulative is used.
| +| `default_histogram_aggregation` | [`ExporterDefaultHistogramAggregation`](#exporterdefaulthistogramaggregation) | `false` | No constraints. | Configure default histogram aggregation.
Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, explicit_bucket_histogram is used.
| + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`PushMetricExporter.otlp_grpc`](#pushmetricexporter)
JSON Schema @@ -3184,6 +3757,15 @@ No properties. No properties. +Constraints: + +* `enum`: `["protobuf","json"]` + +Usages: + +* [`OtlpHttpExporter.encoding`](#otlphttpexporter) +* [`OtlpHttpMetricExporter.encoding`](#otlphttpmetricexporter) +
JSON Schema @@ -3202,17 +3784,26 @@ No properties. ## OtlpHttpExporter -| Property | Description | Type | Required? | -|---|---|---|---| -| `endpoint` | Configure endpoint, including the signal specific path.
If omitted or null, the http://localhost:4318/v1/{signal} (where signal is 'traces', 'logs', or 'metrics') is used.
| one of:
* `string`
* `null`
| `false` | -| `certificate_file` | Configure certificate used to verify a server's TLS credentials.
Absolute path to certificate file in PEM format.
If omitted or null, system default certificate verification is used for secure connections.
| one of:
* `string`
* `null`
| `false` | -| `client_key_file` | Configure mTLS private client key.
Absolute path to client key file in PEM format. If set, .client_certificate must also be set.
If omitted or null, mTLS is not used.
| one of:
* `string`
* `null`
| `false` | -| `client_certificate_file` | Configure mTLS client certificate.
Absolute path to client certificate file in PEM format. If set, .client_key must also be set.
If omitted or null, mTLS is not used.
| one of:
* `string`
* `null`
| `false` | -| `headers` | Configure headers. Entries have higher priority than entries from .headers_list.
If an entry's .value is null, the entry is ignored.
| `array` of [`NameStringValuePair`](#namestringvaluepair) | `false` | -| `headers_list` | Configure headers. Entries have lower priority than entries from .headers.
The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details.
If omitted or null, no headers are added.
| one of:
* `string`
* `null`
| `false` | -| `compression` | Configure compression.
Values include: gzip, none. Implementations may support other compression algorithms.
If omitted or null, none is used.
| one of:
* `string`
* `null`
| `false` | -| `timeout` | Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 10000 is used.
| one of:
* `integer`
* `null`
| `false` | -| `encoding` | Configure the encoding used for messages.
Values include: protobuf, json. Implementations may not support json.
If omitted or null, protobuf is used.
| [`OtlpHttpEncoding`](#otlphttpencoding) | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `endpoint` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure endpoint, including the signal specific path.
If omitted or null, the http://localhost:4318/v1/{signal} (where signal is 'traces', 'logs', or 'metrics') is used.
| +| `certificate_file` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure certificate used to verify a server's TLS credentials.
Absolute path to certificate file in PEM format.
If omitted or null, system default certificate verification is used for secure connections.
| +| `client_key_file` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure mTLS private client key.
Absolute path to client key file in PEM format. If set, .client_certificate must also be set.
If omitted or null, mTLS is not used.
| +| `client_certificate_file` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure mTLS client certificate.
Absolute path to client certificate file in PEM format. If set, .client_key must also be set.
If omitted or null, mTLS is not used.
| +| `headers` | `array` of [`NameStringValuePair`](#namestringvaluepair) | `false` | No constraints. | Configure headers. Entries have higher priority than entries from .headers_list.
If an entry's .value is null, the entry is ignored.
| +| `headers_list` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure headers. Entries have lower priority than entries from .headers.
The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details.
If omitted or null, no headers are added.
| +| `compression` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure compression.
Values include: gzip, none. Implementations may support other compression algorithms.
If omitted or null, none is used.
| +| `timeout` | one of:
* `integer`
* `null`
| `false` | * `minimum`: `0`
| Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 10000 is used.
| +| `encoding` | [`OtlpHttpEncoding`](#otlphttpencoding) | `false` | No constraints. | Configure the encoding used for messages.
Values include: protobuf, json. Implementations may not support json.
If omitted or null, protobuf is used.
| + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`LogRecordExporter.otlp_http`](#logrecordexporter) +* [`SpanExporter.otlp_http`](#spanexporter)
JSON Schema @@ -3283,20 +3874,28 @@ No properties. ## OtlpHttpMetricExporter -| Property | Description | Type | Required? | -|---|---|---|---| -| `endpoint` | Configure endpoint, including the signal specific path.
If omitted or null, the http://localhost:4318/v1/{signal} (where signal is 'traces', 'logs', or 'metrics') is used.
| one of:
* `string`
* `null`
| `false` | -| `endpoint` | Configure endpoint.
If omitted or null, http://localhost:4317 is used.
| one of:
* `string`
* `null`
| `false` | -| `certificate_file` | Configure certificate used to verify a server's TLS credentials.
Absolute path to certificate file in PEM format.
If omitted or null, system default certificate verification is used for secure connections.
| one of:
* `string`
* `null`
| `false` | -| `client_key_file` | Configure mTLS private client key.
Absolute path to client key file in PEM format. If set, .client_certificate must also be set.
If omitted or null, mTLS is not used.
| one of:
* `string`
* `null`
| `false` | -| `client_certificate_file` | Configure mTLS client certificate.
Absolute path to client certificate file in PEM format. If set, .client_key must also be set.
If omitted or null, mTLS is not used.
| one of:
* `string`
* `null`
| `false` | -| `headers` | Configure headers. Entries have higher priority than entries from .headers_list.
If an entry's .value is null, the entry is ignored.
| `array` of [`NameStringValuePair`](#namestringvaluepair) | `false` | -| `headers_list` | Configure headers. Entries have lower priority than entries from .headers.
The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details.
If omitted or null, no headers are added.
| one of:
* `string`
* `null`
| `false` | -| `compression` | Configure compression.
Values include: gzip, none. Implementations may support other compression algorithms.
If omitted or null, none is used.
| one of:
* `string`
* `null`
| `false` | -| `timeout` | Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 10000 is used.
| one of:
* `integer`
* `null`
| `false` | -| `encoding` | Configure the encoding used for messages.
Values include: protobuf, json. Implementations may not support json.
If omitted or null, protobuf is used.
| [`OtlpHttpEncoding`](#otlphttpencoding) | `false` | -| `temporality_preference` | Configure temporality preference.
Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, cumulative is used.
| [`ExporterTemporalityPreference`](#exportertemporalitypreference) | `false` | -| `default_histogram_aggregation` | Configure default histogram aggregation.
Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, explicit_bucket_histogram is used.
| [`ExporterDefaultHistogramAggregation`](#exporterdefaulthistogramaggregation) | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `endpoint` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure endpoint, including the signal specific path.
If omitted or null, the http://localhost:4318/v1/{signal} (where signal is 'traces', 'logs', or 'metrics') is used.
| +| `endpoint` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure endpoint.
If omitted or null, http://localhost:4317 is used.
| +| `certificate_file` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure certificate used to verify a server's TLS credentials.
Absolute path to certificate file in PEM format.
If omitted or null, system default certificate verification is used for secure connections.
| +| `client_key_file` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure mTLS private client key.
Absolute path to client key file in PEM format. If set, .client_certificate must also be set.
If omitted or null, mTLS is not used.
| +| `client_certificate_file` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure mTLS client certificate.
Absolute path to client certificate file in PEM format. If set, .client_key must also be set.
If omitted or null, mTLS is not used.
| +| `headers` | `array` of [`NameStringValuePair`](#namestringvaluepair) | `false` | No constraints. | Configure headers. Entries have higher priority than entries from .headers_list.
If an entry's .value is null, the entry is ignored.
| +| `headers_list` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure headers. Entries have lower priority than entries from .headers.
The value is a list of comma separated key-value pairs matching the format of OTEL_EXPORTER_OTLP_HEADERS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options for details.
If omitted or null, no headers are added.
| +| `compression` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure compression.
Values include: gzip, none. Implementations may support other compression algorithms.
If omitted or null, none is used.
| +| `timeout` | one of:
* `integer`
* `null`
| `false` | * `minimum`: `0`
| Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 10000 is used.
| +| `encoding` | [`OtlpHttpEncoding`](#otlphttpencoding) | `false` | No constraints. | Configure the encoding used for messages.
Values include: protobuf, json. Implementations may not support json.
If omitted or null, protobuf is used.
| +| `temporality_preference` | [`ExporterTemporalityPreference`](#exportertemporalitypreference) | `false` | No constraints. | Configure temporality preference.
Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, cumulative is used.
| +| `default_histogram_aggregation` | [`ExporterDefaultHistogramAggregation`](#exporterdefaulthistogramaggregation) | `false` | No constraints. | Configure default histogram aggregation.
Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, explicit_bucket_histogram is used.
| + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`PushMetricExporter.otlp_http`](#pushmetricexporter)
JSON Schema @@ -3373,13 +3972,21 @@ No properties. ## ParentBasedSampler -| Property | Description | Type | Required? | -|---|---|---|---| -| `root` | Configure root sampler.
If omitted or null, always_on is used.
| [`Sampler`](#sampler) | `false` | -| `remote_parent_sampled` | Configure remote_parent_sampled sampler.
If omitted or null, always_on is used.
| [`Sampler`](#sampler) | `false` | -| `remote_parent_not_sampled` | Configure remote_parent_not_sampled sampler.
If omitted or null, always_off is used.
| [`Sampler`](#sampler) | `false` | -| `local_parent_sampled` | Configure local_parent_sampled sampler.
If omitted or null, always_on is used.
| [`Sampler`](#sampler) | `false` | -| `local_parent_not_sampled` | Configure local_parent_not_sampled sampler.
If omitted or null, always_off is used.
| [`Sampler`](#sampler) | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `root` | [`Sampler`](#sampler) | `false` | No constraints. | Configure root sampler.
If omitted or null, always_on is used.
| +| `remote_parent_sampled` | [`Sampler`](#sampler) | `false` | No constraints. | Configure remote_parent_sampled sampler.
If omitted or null, always_on is used.
| +| `remote_parent_not_sampled` | [`Sampler`](#sampler) | `false` | No constraints. | Configure remote_parent_not_sampled sampler.
If omitted or null, always_off is used.
| +| `local_parent_sampled` | [`Sampler`](#sampler) | `false` | No constraints. | Configure local_parent_sampled sampler.
If omitted or null, always_on is used.
| +| `local_parent_not_sampled` | [`Sampler`](#sampler) | `false` | No constraints. | Configure local_parent_not_sampled sampler.
If omitted or null, always_off is used.
| + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`Sampler.parent_based`](#sampler)
JSON Schema @@ -3413,13 +4020,22 @@ No properties. ## PeriodicMetricReader -| Property | Description | Type | Required? | -|---|---|---|---| -| `interval` | Configure delay interval (in milliseconds) between start of two consecutive exports.
Value must be non-negative.
If omitted or null, 60000 is used.
| one of:
* `integer`
* `null`
| `false` | -| `timeout` | Configure maximum allowed time (in milliseconds) to export data.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 30000 is used.
| one of:
* `integer`
* `null`
| `false` | -| `exporter` | Configure exporter. | [`PushMetricExporter`](#pushmetricexporter) | `true` | -| `producers` | Configure metric producers. | `array` of [`MetricProducer`](#metricproducer) | `false` | -| `cardinality_limits` | Configure cardinality limits. | [`CardinalityLimits`](#cardinalitylimits) | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `interval` | one of:
* `integer`
* `null`
| `false` | * `minimum`: `0`
| Configure delay interval (in milliseconds) between start of two consecutive exports.
Value must be non-negative.
If omitted or null, 60000 is used.
| +| `timeout` | one of:
* `integer`
* `null`
| `false` | * `minimum`: `0`
| Configure maximum allowed time (in milliseconds) to export data.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 30000 is used.
| +| `exporter` | [`PushMetricExporter`](#pushmetricexporter) | `true` | No constraints. | Configure exporter. | +| `producers` | `array` of [`MetricProducer`](#metricproducer) | `false` | No constraints. | Configure metric producers. | +| `cardinality_limits` | [`CardinalityLimits`](#cardinalitylimits) | `false` | No constraints. | Configure cardinality limits. | + +Constraints: + +* `additionalProperties`: `false` +* `required`: `["exporter"]` + +Usages: + +* [`MetricReader.periodic`](#metricreader)
JSON Schema @@ -3464,10 +4080,16 @@ No properties. ## Propagator -| Property | Description | Type | Required? | -|---|---|---|---| -| `composite` | Configure the propagators in the composite text map propagator. Entries from .composite_list are appended to the list here with duplicates filtered out.
Built-in propagator keys include: tracecontext, baggage, b3, b3multi, jaeger, ottrace. Known third party keys include: xray.
If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used.
| `array` of [`TextMapPropagator`](#textmappropagator) | `false` | -| `composite_list` | Configure the propagators in the composite text map propagator. Entries are appended to .composite with duplicates filtered out.
The value is a comma separated list of propagator identifiers matching the format of OTEL_PROPAGATORS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details.
Built-in propagator identifiers include: tracecontext, baggage, b3, b3multi, jaeger, ottrace. Known third party identifiers include: xray.
If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used.
| one of:
* `string`
* `null`
| `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `composite` | `array` of [`TextMapPropagator`](#textmappropagator) | `false` | No constraints. | Configure the propagators in the composite text map propagator. Entries from .composite_list are appended to the list here with duplicates filtered out.
Built-in propagator keys include: tracecontext, baggage, b3, b3multi, jaeger, ottrace. Known third party keys include: xray.
If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used.
| +| `composite_list` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure the propagators in the composite text map propagator. Entries are appended to .composite with duplicates filtered out.
The value is a comma separated list of propagator identifiers matching the format of OTEL_PROPAGATORS. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details.
Built-in propagator identifiers include: tracecontext, baggage, b3, b3multi, jaeger, ottrace. Known third party identifiers include: xray.
If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used.
| + +No constraints. + +Usages: + +* [`OpentelemetryConfiguration.propagator`](#opentelemetryconfiguration)
JSON Schema @@ -3574,9 +4196,22 @@ No properties. ## PullMetricExporter -| Property | Description | Type | Required? | -|---|---|---|---| -| `prometheus/development` | Configure exporter to be prometheus.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalPrometheusMetricExporter`](#experimentalprometheusmetricexporter) | `false` | +`PullMetricExporter` is an [SDK extension plugin](#sdk-extension-plugins). + +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `prometheus/development` | [`ExperimentalPrometheusMetricExporter`](#experimentalprometheusmetricexporter) | `false` | No constraints. | Configure exporter to be prometheus.
This type is in development and subject to breaking changes in minor versions.
| + +Constraints: + +* `patternProperties`: `{".*":{"type":["object","null"]}}` +* `additionalProperties`: `true` +* `minProperties`: `1` +* `maxProperties`: `1` + +Usages: + +* [`PullMetricReader.exporter`](#pullmetricreader)
JSON Schema @@ -3607,11 +4242,20 @@ No properties. ## PullMetricReader -| Property | Description | Type | Required? | -|---|---|---|---| -| `exporter` | Configure exporter. | [`PullMetricExporter`](#pullmetricexporter) | `true` | -| `producers` | Configure metric producers. | `array` of [`MetricProducer`](#metricproducer) | `false` | -| `cardinality_limits` | Configure cardinality limits. | [`CardinalityLimits`](#cardinalitylimits) | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `exporter` | [`PullMetricExporter`](#pullmetricexporter) | `true` | No constraints. | Configure exporter. | +| `producers` | `array` of [`MetricProducer`](#metricproducer) | `false` | No constraints. | Configure metric producers. | +| `cardinality_limits` | [`CardinalityLimits`](#cardinalitylimits) | `false` | No constraints. | Configure cardinality limits. | + +Constraints: + +* `additionalProperties`: `false` +* `required`: `["exporter"]` + +Usages: + +* [`MetricReader.pull`](#metricreader)
JSON Schema @@ -3642,12 +4286,25 @@ No properties. ## PushMetricExporter -| Property | Description | Type | Required? | -|---|---|---|---| -| `otlp_http` | Configure exporter to be OTLP with HTTP transport.
| [`OtlpHttpMetricExporter`](#otlphttpmetricexporter) | `false` | -| `otlp_grpc` | Configure exporter to be OTLP with gRPC transport.
| [`OtlpGrpcMetricExporter`](#otlpgrpcmetricexporter) | `false` | -| `otlp_file/development` | Configure exporter to be OTLP with file transport.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalOtlpFileMetricExporter`](#experimentalotlpfilemetricexporter) | `false` | -| `console` | Configure exporter to be console.
| [`ConsoleExporter`](#consoleexporter) | `false` | +`PushMetricExporter` is an [SDK extension plugin](#sdk-extension-plugins). + +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `otlp_http` | [`OtlpHttpMetricExporter`](#otlphttpmetricexporter) | `false` | No constraints. | Configure exporter to be OTLP with HTTP transport.
| +| `otlp_grpc` | [`OtlpGrpcMetricExporter`](#otlpgrpcmetricexporter) | `false` | No constraints. | Configure exporter to be OTLP with gRPC transport.
| +| `otlp_file/development` | [`ExperimentalOtlpFileMetricExporter`](#experimentalotlpfilemetricexporter) | `false` | No constraints. | Configure exporter to be OTLP with file transport.
This type is in development and subject to breaking changes in minor versions.
| +| `console` | [`ConsoleExporter`](#consoleexporter) | `false` | No constraints. | Configure exporter to be console.
| + +Constraints: + +* `patternProperties`: `{".*":{"type":["object","null"]}}` +* `additionalProperties`: `true` +* `minProperties`: `1` +* `maxProperties`: `1` + +Usages: + +* [`PeriodicMetricReader.exporter`](#periodicmetricreader)
JSON Schema @@ -3685,12 +4342,20 @@ No properties. ## Resource -| Property | Description | Type | Required? | -|---|---|---|---| -| `attributes` | Configure resource attributes. Entries have higher priority than entries from .resource.attributes_list.
| `array` of [`AttributeNameValue`](#attributenamevalue) | `false` | -| `detection/development` | Configure resource detection.
This type is in development and subject to breaking changes in minor versions.
If omitted or null, resource detection is disabled.
| [`ExperimentalResourceDetection`](#experimentalresourcedetection) | `false` | -| `schema_url` | Configure resource schema URL.
If omitted or null, no schema URL is used.
| one of:
* `string`
* `null`
| `false` | -| `attributes_list` | Configure resource attributes. Entries have lower priority than entries from .resource.attributes.
The value is a list of comma separated key-value pairs matching the format of OTEL_RESOURCE_ATTRIBUTES. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details.
If omitted or null, no resource attributes are added.
| one of:
* `string`
* `null`
| `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `attributes` | `array` of [`AttributeNameValue`](#attributenamevalue) | `false` | No constraints. | Configure resource attributes. Entries have higher priority than entries from .resource.attributes_list.
| +| `detection/development` | [`ExperimentalResourceDetection`](#experimentalresourcedetection) | `false` | No constraints. | Configure resource detection.
This type is in development and subject to breaking changes in minor versions.
If omitted or null, resource detection is disabled.
| +| `schema_url` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure resource schema URL.
If omitted or null, no schema URL is used.
| +| `attributes_list` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure resource attributes. Entries have lower priority than entries from .resource.attributes.
The value is a list of comma separated key-value pairs matching the format of OTEL_RESOURCE_ATTRIBUTES. See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration for details.
If omitted or null, no resource attributes are added.
| + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`OpentelemetryConfiguration.resource`](#opentelemetryconfiguration)
JSON Schema @@ -3869,13 +4534,32 @@ No properties. ## Sampler -| Property | Description | Type | Required? | -|---|---|---|---| -| `always_off` | Configure sampler to be always_off. | [`AlwaysOffSampler`](#alwaysoffsampler) | `false` | -| `always_on` | Configure sampler to be always_on. | [`AlwaysOnSampler`](#alwaysonsampler) | `false` | -| `jaeger_remote` | TODO | [`JaegerRemoteSampler`](#jaegerremotesampler) | `false` | -| `parent_based` | Configure sampler to be parent_based. | [`ParentBasedSampler`](#parentbasedsampler) | `false` | -| `trace_id_ratio_based` | Configure sampler to be trace_id_ratio_based. | [`TraceIdRatioBasedSampler`](#traceidratiobasedsampler) | `false` | +`Sampler` is an [SDK extension plugin](#sdk-extension-plugins). + +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `always_off` | [`AlwaysOffSampler`](#alwaysoffsampler) | `false` | No constraints. | Configure sampler to be always_off. | +| `always_on` | [`AlwaysOnSampler`](#alwaysonsampler) | `false` | No constraints. | Configure sampler to be always_on. | +| `jaeger_remote` | [`JaegerRemoteSampler`](#jaegerremotesampler) | `false` | No constraints. | TODO | +| `parent_based` | [`ParentBasedSampler`](#parentbasedsampler) | `false` | No constraints. | Configure sampler to be parent_based. | +| `trace_id_ratio_based` | [`TraceIdRatioBasedSampler`](#traceidratiobasedsampler) | `false` | No constraints. | Configure sampler to be trace_id_ratio_based. | + +Constraints: + +* `patternProperties`: `{".*":{"type":["object","null"]}}` +* `additionalProperties`: `true` +* `minProperties`: `1` +* `maxProperties`: `1` + +Usages: + +* [`TracerProvider.sampler`](#tracerprovider) +* [`JaegerRemoteSampler.initial_sampler`](#jaegerremotesampler) +* [`ParentBasedSampler.root`](#parentbasedsampler) +* [`ParentBasedSampler.remote_parent_sampled`](#parentbasedsampler) +* [`ParentBasedSampler.remote_parent_not_sampled`](#parentbasedsampler) +* [`ParentBasedSampler.local_parent_sampled`](#parentbasedsampler) +* [`ParentBasedSampler.local_parent_not_sampled`](#parentbasedsampler)
JSON Schema @@ -3916,9 +4600,18 @@ No properties. ## SimpleLogRecordProcessor -| Property | Description | Type | Required? | -|---|---|---|---| -| `exporter` | Configure exporter. | [`LogRecordExporter`](#logrecordexporter) | `true` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `exporter` | [`LogRecordExporter`](#logrecordexporter) | `true` | No constraints. | Configure exporter. | + +Constraints: + +* `additionalProperties`: `false` +* `required`: `["exporter"]` + +Usages: + +* [`LogRecordProcessor.simple`](#logrecordprocessor)
JSON Schema @@ -3940,9 +4633,18 @@ No properties. ## SimpleSpanProcessor -| Property | Description | Type | Required? | -|---|---|---|---| -| `exporter` | Configure exporter. | [`SpanExporter`](#spanexporter) | `true` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `exporter` | [`SpanExporter`](#spanexporter) | `true` | No constraints. | Configure exporter. | + +Constraints: + +* `additionalProperties`: `false` +* `required`: `["exporter"]` + +Usages: + +* [`SpanProcessor.simple`](#spanprocessor)
JSON Schema @@ -3964,13 +4666,27 @@ No properties. ## SpanExporter -| Property | Description | Type | Required? | -|---|---|---|---| -| `otlp_http` | Configure exporter to be OTLP with HTTP transport. | [`OtlpHttpExporter`](#otlphttpexporter) | `false` | -| `otlp_grpc` | Configure exporter to be OTLP with gRPC transport. | [`OtlpGrpcExporter`](#otlpgrpcexporter) | `false` | -| `otlp_file/development` | Configure exporter to be OTLP with file transport.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalOtlpFileExporter`](#experimentalotlpfileexporter) | `false` | -| `console` | Configure exporter to be console. | [`ConsoleExporter`](#consoleexporter) | `false` | -| `zipkin` | Configure exporter to be zipkin. | [`ZipkinSpanExporter`](#zipkinspanexporter) | `false` | +`SpanExporter` is an [SDK extension plugin](#sdk-extension-plugins). + +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `otlp_http` | [`OtlpHttpExporter`](#otlphttpexporter) | `false` | No constraints. | Configure exporter to be OTLP with HTTP transport. | +| `otlp_grpc` | [`OtlpGrpcExporter`](#otlpgrpcexporter) | `false` | No constraints. | Configure exporter to be OTLP with gRPC transport. | +| `otlp_file/development` | [`ExperimentalOtlpFileExporter`](#experimentalotlpfileexporter) | `false` | No constraints. | Configure exporter to be OTLP with file transport.
This type is in development and subject to breaking changes in minor versions.
| +| `console` | [`ConsoleExporter`](#consoleexporter) | `false` | No constraints. | Configure exporter to be console. | +| `zipkin` | [`ZipkinSpanExporter`](#zipkinspanexporter) | `false` | No constraints. | Configure exporter to be zipkin. | + +Constraints: + +* `patternProperties`: `{".*":{"type":["object","null"]}}` +* `additionalProperties`: `true` +* `minProperties`: `1` +* `maxProperties`: `1` + +Usages: + +* [`BatchSpanProcessor.exporter`](#batchspanprocessor) +* [`SimpleSpanProcessor.exporter`](#simplespanprocessor)
JSON Schema @@ -4011,14 +4727,22 @@ No properties. ## SpanLimits -| Property | Description | Type | Required? | -|---|---|---|---| -| `attribute_value_length_limit` | Configure max attribute value size. Overrides .attribute_limits.attribute_value_length_limit.
Value must be non-negative.
If omitted or null, there is no limit.
| one of:
* `integer`
* `null`
| `false` | -| `attribute_count_limit` | Configure max attribute count. Overrides .attribute_limits.attribute_count_limit.
Value must be non-negative.
If omitted or null, 128 is used.
| one of:
* `integer`
* `null`
| `false` | -| `event_count_limit` | Configure max span event count.
Value must be non-negative.
If omitted or null, 128 is used.
| one of:
* `integer`
* `null`
| `false` | -| `link_count_limit` | Configure max span link count.
Value must be non-negative.
If omitted or null, 128 is used.
| one of:
* `integer`
* `null`
| `false` | -| `event_attribute_count_limit` | Configure max attributes per span event.
Value must be non-negative.
If omitted or null, 128 is used.
| one of:
* `integer`
* `null`
| `false` | -| `link_attribute_count_limit` | Configure max attributes per span link.
Value must be non-negative.
If omitted or null, 128 is used.
| one of:
* `integer`
* `null`
| `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `attribute_value_length_limit` | one of:
* `integer`
* `null`
| `false` | * `minimum`: `0`
| Configure max attribute value size. Overrides .attribute_limits.attribute_value_length_limit.
Value must be non-negative.
If omitted or null, there is no limit.
| +| `attribute_count_limit` | one of:
* `integer`
* `null`
| `false` | * `minimum`: `0`
| Configure max attribute count. Overrides .attribute_limits.attribute_count_limit.
Value must be non-negative.
If omitted or null, 128 is used.
| +| `event_count_limit` | one of:
* `integer`
* `null`
| `false` | * `minimum`: `0`
| Configure max span event count.
Value must be non-negative.
If omitted or null, 128 is used.
| +| `link_count_limit` | one of:
* `integer`
* `null`
| `false` | * `minimum`: `0`
| Configure max span link count.
Value must be non-negative.
If omitted or null, 128 is used.
| +| `event_attribute_count_limit` | one of:
* `integer`
* `null`
| `false` | * `minimum`: `0`
| Configure max attributes per span event.
Value must be non-negative.
If omitted or null, 128 is used.
| +| `link_attribute_count_limit` | one of:
* `integer`
* `null`
| `false` | * `minimum`: `0`
| Configure max attributes per span link.
Value must be non-negative.
If omitted or null, 128 is used.
| + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`TracerProvider.limits`](#tracerprovider)
JSON Schema @@ -4076,10 +4800,23 @@ No properties. ## SpanProcessor -| Property | Description | Type | Required? | -|---|---|---|---| -| `batch` | Configure a batch span processor. | [`BatchSpanProcessor`](#batchspanprocessor) | `false` | -| `simple` | Configure a simple span processor. | [`SimpleSpanProcessor`](#simplespanprocessor) | `false` | +`SpanProcessor` is an [SDK extension plugin](#sdk-extension-plugins). + +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `batch` | [`BatchSpanProcessor`](#batchspanprocessor) | `false` | No constraints. | Configure a batch span processor. | +| `simple` | [`SimpleSpanProcessor`](#simplespanprocessor) | `false` | No constraints. | Configure a simple span processor. | + +Constraints: + +* `patternProperties`: `{".*":{"type":["object","null"]}}` +* `additionalProperties`: `true` +* `minProperties`: `1` +* `maxProperties`: `1` + +Usages: + +* [`TracerProvider.processors`](#tracerprovider)
JSON Schema @@ -4113,6 +4850,14 @@ No properties. No properties. +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`Aggregation.sum`](#aggregation) +
JSON Schema @@ -4128,14 +4873,27 @@ No properties. ## TextMapPropagator -| Property | Description | Type | Required? | -|---|---|---|---| -| `tracecontext` | Include the w3c trace context propagator. | [`TraceContextPropagator`](#tracecontextpropagator) | `false` | -| `baggage` | Include the w3c baggage propagator. | [`BaggagePropagator`](#baggagepropagator) | `false` | -| `b3` | Include the zipkin b3 propagator. | [`B3Propagator`](#b3propagator) | `false` | -| `b3multi` | Include the zipkin b3 multi propagator. | [`B3MultiPropagator`](#b3multipropagator) | `false` | -| `jaeger` | Include the jaeger propagator. | [`JaegerPropagator`](#jaegerpropagator) | `false` | -| `ottrace` | Include the opentracing propagator. | [`OpenTracingPropagator`](#opentracingpropagator) | `false` | +`TextMapPropagator` is an [SDK extension plugin](#sdk-extension-plugins). + +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `tracecontext` | [`TraceContextPropagator`](#tracecontextpropagator) | `false` | No constraints. | Include the w3c trace context propagator. | +| `baggage` | [`BaggagePropagator`](#baggagepropagator) | `false` | No constraints. | Include the w3c baggage propagator. | +| `b3` | [`B3Propagator`](#b3propagator) | `false` | No constraints. | Include the zipkin b3 propagator. | +| `b3multi` | [`B3MultiPropagator`](#b3multipropagator) | `false` | No constraints. | Include the zipkin b3 multi propagator. | +| `jaeger` | [`JaegerPropagator`](#jaegerpropagator) | `false` | No constraints. | Include the jaeger propagator. | +| `ottrace` | [`OpenTracingPropagator`](#opentracingpropagator) | `false` | No constraints. | Include the opentracing propagator. | + +Constraints: + +* `patternProperties`: `{".*":{"type":["object","null"]}}` +* `additionalProperties`: `true` +* `minProperties`: `1` +* `maxProperties`: `1` + +Usages: + +* [`Propagator.composite`](#propagator)
JSON Schema @@ -4181,6 +4939,14 @@ No properties. No properties. +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`TextMapPropagator.tracecontext`](#textmappropagator) +
JSON Schema @@ -4196,9 +4962,17 @@ No properties. ## TraceIdRatioBasedSampler -| Property | Description | Type | Required? | -|---|---|---|---| -| `ratio` | Configure trace_id_ratio.
If omitted or null, 1.0 is used.
| one of:
* `number`
* `null`
| `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `ratio` | one of:
* `number`
* `null`
| `false` | No constraints. | Configure trace_id_ratio.
If omitted or null, 1.0 is used.
| + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`Sampler.trace_id_ratio_based`](#sampler)
JSON Schema @@ -4223,12 +4997,21 @@ No properties. ## TracerProvider -| Property | Description | Type | Required? | -|---|---|---|---| -| `processors` | Configure span processors. | `array` of [`SpanProcessor`](#spanprocessor) | `true` | -| `limits` | Configure span limits. See also attribute_limits. | [`SpanLimits`](#spanlimits) | `false` | -| `sampler` | Configure the sampler.
If omitted, parent based sampler with a root of always_on is used.
| [`Sampler`](#sampler) | `false` | -| `tracer_configurator/development` | Configure tracers.
This type is in development and subject to breaking changes in minor versions.
| [`ExperimentalTracerConfigurator`](#experimentaltracerconfigurator) | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `processors` | `array` of [`SpanProcessor`](#spanprocessor) | `true` | No constraints. | Configure span processors. | +| `limits` | [`SpanLimits`](#spanlimits) | `false` | No constraints. | Configure span limits. See also attribute_limits. | +| `sampler` | [`Sampler`](#sampler) | `false` | No constraints. | Configure the sampler.
If omitted, parent based sampler with a root of always_on is used.
| +| `tracer_configurator/development` | [`ExperimentalTracerConfigurator`](#experimentaltracerconfigurator) | `false` | No constraints. | Configure tracers.
This type is in development and subject to breaking changes in minor versions.
| + +Constraints: + +* `additionalProperties`: `false` +* `required`: `["processors"]` + +Usages: + +* [`OpentelemetryConfiguration.tracer_provider`](#opentelemetryconfiguration)
JSON Schema @@ -4597,10 +5380,18 @@ No properties. ## View -| Property | Description | Type | Required? | -|---|---|---|---| -| `selector` | Configure view selector.
Selection criteria is additive as described in https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#instrument-selection-criteria.
| [`ViewSelector`](#viewselector) | `false` | -| `stream` | Configure view stream. | [`ViewStream`](#viewstream) | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `selector` | [`ViewSelector`](#viewselector) | `false` | No constraints. | Configure view selector.
Selection criteria is additive as described in https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#instrument-selection-criteria.
| +| `stream` | [`ViewStream`](#viewstream) | `false` | No constraints. | Configure view stream. | + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`MeterProvider.views`](#meterprovider)
JSON Schema @@ -4622,14 +5413,22 @@ No properties. ## ViewSelector -| Property | Description | Type | Required? | -|---|---|---|---| -| `instrument_name` | Configure instrument name selection criteria.
If omitted or null, all instrument names match.
| one of:
* `string`
* `null`
| `false` | -| `instrument_type` | Configure instrument type selection criteria.
Values include: counter, gauge, histogram, observable_counter, observable_gauge, observable_up_down_counter, up_down_counter.
If omitted or null, all instrument types match.
| [`InstrumentType`](#instrumenttype) | `false` | -| `unit` | Configure the instrument unit selection criteria.
If omitted or null, all instrument units match.
| one of:
* `string`
* `null`
| `false` | -| `meter_name` | Configure meter name selection criteria.
If omitted or null, all meter names match.
| one of:
* `string`
* `null`
| `false` | -| `meter_version` | Configure meter version selection criteria.
If omitted or null, all meter versions match.
| one of:
* `string`
* `null`
| `false` | -| `meter_schema_url` | Configure meter schema url selection criteria.
If omitted or null, all meter schema URLs match.
| one of:
* `string`
* `null`
| `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `instrument_name` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure instrument name selection criteria.
If omitted or null, all instrument names match.
| +| `instrument_type` | [`InstrumentType`](#instrumenttype) | `false` | No constraints. | Configure instrument type selection criteria.
Values include: counter, gauge, histogram, observable_counter, observable_gauge, observable_up_down_counter, up_down_counter.
If omitted or null, all instrument types match.
| +| `unit` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure the instrument unit selection criteria.
If omitted or null, all instrument units match.
| +| `meter_name` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure meter name selection criteria.
If omitted or null, all meter names match.
| +| `meter_version` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure meter version selection criteria.
If omitted or null, all meter versions match.
| +| `meter_schema_url` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure meter schema url selection criteria.
If omitted or null, all meter schema URLs match.
| + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`View.selector`](#view)
JSON Schema @@ -4678,13 +5477,21 @@ No properties. ## ViewStream -| Property | Description | Type | Required? | -|---|---|---|---| -| `name` | Configure metric name of the resulting stream(s).
If omitted or null, the instrument's original name is used.
| one of:
* `string`
* `null`
| `false` | -| `description` | Configure metric description of the resulting stream(s).
If omitted or null, the instrument's origin description is used.
| one of:
* `string`
* `null`
| `false` | -| `aggregation` | Configure aggregation of the resulting stream(s).
Values include: default, drop, explicit_bucket_histogram, base2_exponential_bucket_histogram, last_value, sum. For behavior of values see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#aggregation.
If omitted, default is used.
| [`Aggregation`](#aggregation) | `false` | -| `aggregation_cardinality_limit` | Configure the aggregation cardinality limit.
If omitted or null, the metric reader's default cardinality limit is used.
| one of:
* `integer`
* `null`
| `false` | -| `attribute_keys` | Configure attribute keys retained in the resulting stream(s).
| [`IncludeExclude`](#includeexclude) | `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `name` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure metric name of the resulting stream(s).
If omitted or null, the instrument's original name is used.
| +| `description` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure metric description of the resulting stream(s).
If omitted or null, the instrument's origin description is used.
| +| `aggregation` | [`Aggregation`](#aggregation) | `false` | No constraints. | Configure aggregation of the resulting stream(s).
Values include: default, drop, explicit_bucket_histogram, base2_exponential_bucket_histogram, last_value, sum. For behavior of values see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#aggregation.
If omitted, default is used.
| +| `aggregation_cardinality_limit` | one of:
* `integer`
* `null`
| `false` | * `exclusiveMinimum`: `0`
| Configure the aggregation cardinality limit.
If omitted or null, the metric reader's default cardinality limit is used.
| +| `attribute_keys` | [`IncludeExclude`](#includeexclude) | `false` | No constraints. | Configure attribute keys retained in the resulting stream(s).
| + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`View.stream`](#view)
JSON Schema @@ -4725,10 +5532,18 @@ No properties. ## ZipkinSpanExporter -| Property | Description | Type | Required? | -|---|---|---|---| -| `endpoint` | Configure endpoint.
If omitted or null, http://localhost:9411/api/v2/spans is used.
| one of:
* `string`
* `null`
| `false` | -| `timeout` | Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates indefinite.
If omitted or null, 10000 is used.
| one of:
* `integer`
* `null`
| `false` | +| Property | Type | Required? | Constraints | Description | +|---|---|---|---|---| +| `endpoint` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure endpoint.
If omitted or null, http://localhost:9411/api/v2/spans is used.
| +| `timeout` | one of:
* `integer`
* `null`
| `false` | * `minimum`: `0`
| Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates indefinite.
If omitted or null, 10000 is used.
| + +Constraints: + +* `additionalProperties`: `false` + +Usages: + +* [`SpanExporter.zipkin`](#spanexporter)
JSON Schema diff --git a/scripts/generate-markdown.js b/scripts/generate-markdown.js index 5ae63676..aae1d420 100644 --- a/scripts/generate-markdown.js +++ b/scripts/generate-markdown.js @@ -9,8 +9,9 @@ if (messages.length > 0) { throw new Error("Meta schema has problems. Please run fix-meta-schema and try again."); } +const jsonSchemaTypes = readJsonSchemaTypes(); const jsonSchemaTypesByType = {}; -readJsonSchemaTypes().forEach(type => jsonSchemaTypesByType[type.type] = type); +jsonSchemaTypes.forEach(type => jsonSchemaTypesByType[type.type] = type); const output = []; const headers = []; @@ -33,13 +34,18 @@ types.forEach(metaSchemaType => { // Heading addHeader(type, type.toLowerCase(), 2); + // SDK extension plugin + if (metaSchemaType.isSdkExtensionPlugin) { + output.push(`\`${type}\` is an [SDK extension plugin](#sdk-extension-plugins).\n\n`); + } + // Properties if (metaSchemaType.properties.length === 0) { output.push("No properties.\n\n"); } else { // Property type and description table - output.push(`| Property | Description | Type | Required? |\n`); - output.push("|---|---|---|---|\n"); + output.push(`| Property | Type | Required? | Constraints | Description |\n`); + output.push("|---|---|---|---|---|\n"); metaSchemaType.properties.forEach(property => { const jsonSchemaProperty = jsonSchemaType.properties.find(item => item.property === property.property); if (!jsonSchemaProperty) { @@ -47,14 +53,45 @@ types.forEach(metaSchemaType => { } const formattedPropertyType = formatJsonSchemaPropertyType(jsonSchemaProperty, jsonSchemaTypesByType); const isRequired = required !== undefined && required.includes(property.property); + let formattedConstraints = resolveAndFormatConstraints(jsonSchemaProperty.schema, '
'); + if (formattedConstraints.length === 0) { + formattedConstraints = 'No constraints.'; + } + const formattedDescription = property.description.split("\n").join("
"); - output.push(`| \`${property.property}\` | ${property.description.split("\n").join("
")} | ${formattedPropertyType} | \`${isRequired}\` |\n`); + output.push(`| \`${property.property}\` | ${formattedPropertyType} | \`${isRequired}\` | ${formattedConstraints} | ${formattedDescription} |\n`); }); output.push('\n'); - // TODO: print language implementation status } + // Constraints + const formattedConstraints = resolveAndFormatConstraints(jsonSchemaType.schema, '\n'); + if (formattedConstraints.length > 0) { + output.push('Constraints: \n\n'); + output.push(formattedConstraints); + output.push('\n'); + } else { + output.push('No constraints.\n\n'); + } + + // Usages + const usages = []; + jsonSchemaTypes.forEach(otherJsonSchemaType => { + otherJsonSchemaType.properties.forEach(property => { + if (property.types.find(item => item === type)) { + usages.push([ otherJsonSchemaType, property ]); + } + }); + }); + if (usages.length > 0) { + output.push('Usages:\n\n'); + usages.forEach(usage => output.push(`* [\`${usage[0].type}.${usage[1].property}\`](#${usage[0].type.toLowerCase()})\n`)); + output.push('\n'); + } else { + output.push('No usages.\n\n'); + } + // JSON schema collapsible section output.push(`
\n`); output.push(`JSON Schema\n\n`); @@ -90,9 +127,7 @@ fs.writeFileSync(markdownDocPath, output.join("")); function formatJsonSchemaPropertyType(jsonSchemaProperty, jsonSchemaTypesByType) { const output = []; if (jsonSchemaProperty.isSeq) { - if (jsonSchemaProperty.isSeq) { - output.push('`array` of '); - } + output.push('`array` of '); } let prefix = ''; let suffix = ''; @@ -115,3 +150,38 @@ function addHeader(title, id, level) { output.push(`${'#'.repeat(level)} ${title} \n\n`); } +function resolveAndFormatConstraints(schema, linebreak) { + const constraints = []; + const constraintPropertyNames = [ + 'minLength', + 'maxLength', + 'pattern', + 'format', + 'multipleOf', + 'minimum', + 'exclusiveMinimum', + 'maximum', + 'exclusiveMaximum', + 'patternProperties', + 'additionalProperties', + 'propertyNames', + 'minProperties', + 'maxProperties', + 'required', + 'contains', + 'minContains', + 'maxContains', + 'uniqueItems', + 'enum', + 'const', + ]; + + constraintPropertyNames.forEach(propertyName => { + const property = schema[propertyName]; + if (property !== undefined && property !== null) { + constraints.push(`* \`${propertyName}\`: \`${JSON.stringify(property)}\`${linebreak}`); + } + }); + + return constraints.join(''); +} diff --git a/scripts/json-schema.js b/scripts/json-schema.js index f872ad70..9e924eb2 100644 --- a/scripts/json-schema.js +++ b/scripts/json-schema.js @@ -92,7 +92,7 @@ function resolveJsonSchemaProperties(jsonSchema, typesByType) { } else if (oneOf) { types.push('oneOf'); } - resolvedProperties.push(new JsonSchemaProperty(propertyKey, types, isSeq, isRequired)); + resolvedProperties.push(new JsonSchemaProperty(propertyKey, types, isSeq, isRequired, propertySchema)); }); return resolvedProperties; @@ -125,12 +125,14 @@ export class JsonSchemaProperty { types; isSeq; isRequired; + schema; - constructor(property, types, isSeq, isRequired) { + constructor(property, types, isSeq, isRequired, schema) { this.property = property; this.types = types; this.isSeq = isSeq; this.isRequired = isRequired; + this.schema = schema; } } From 324d6966e6db3f209d82b6e1b473a3c083303bdd Mon Sep 17 00:00:00 2001 From: Jack Berg Date: Wed, 29 Oct 2025 13:44:21 -0500 Subject: [PATCH 21/23] Fix link checking --- .github/config/lychee.toml | 4 ++-- CONTRIBUTING.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/config/lychee.toml b/.github/config/lychee.toml index e7ae021a..44bc3876 100644 --- a/.github/config/lychee.toml +++ b/.github/config/lychee.toml @@ -17,6 +17,6 @@ exclude = [ # excluding links to pull requests and issues is done for performance '^https://github.com/open-telemetry/opentelemetry-configuration/(issues|pull)/\d+$', # exclude localhost, file references from schema-docs.md - "^http://localhost", - "^file://", + "^http://localhost.*", + "^file://.*", ] diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e31168d9..00f178ce 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -179,7 +179,7 @@ The JSON schema [`title` and `description` annotations](https://json-schema.org/ Despite these potential benefits, these keywords should be omitted: * The titles of `object` and `enum` types produced by code generation tools should be defined using key values in [$defs](https://json-schema.org/understanding-json-schema/structuring#defs). Setting the `title` keyword introduces multiple sources of truth and possible conflict. -* As described in [description generation](./CONTRIBUTING.md#description-generation), we use a different mechanism to describe the semantics of types and properties. Setting the `description` keyword introduces multiple sources of truth and possible conflict. +* As described in [description generation](./CONTRIBUTING.md#make-generate-descriptions), we use a different mechanism to describe the semantics of types and properties. Setting the `description` keyword introduces multiple sources of truth and possible conflict. ## Schemas and subschemas From 3a815023d8d9b829b5726e05e093e10b03b30ed0 Mon Sep 17 00:00:00 2001 From: Jack Berg Date: Wed, 29 Oct 2025 13:47:39 -0500 Subject: [PATCH 22/23] Add missing comments --- examples/kitchen-sink.yaml | 6 +++--- examples/sdk-config.yaml | 6 +++--- examples/sdk-migration-config.yaml | 6 +++--- schema-docs.md | 4 ++-- schema/meta_schema.yaml | 4 ++-- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/examples/kitchen-sink.yaml b/examples/kitchen-sink.yaml index 8ed7b706..f914ca27 100644 --- a/examples/kitchen-sink.yaml +++ b/examples/kitchen-sink.yaml @@ -53,7 +53,7 @@ logger_provider: # Configure endpoint, including the signal specific path. # If omitted or null, the http://localhost:4318/v1/{signal} (where signal is 'traces', 'logs', or 'metrics') is used. endpoint: http://localhost:4318/v1/logs - # TODO + # Configure TLS settings for the exporter. tls: # Configure certificate used to verify a server's TLS credentials. # Absolute path to certificate file in PEM format. @@ -286,7 +286,7 @@ meter_provider: # Configure endpoint, including the signal specific path. # If omitted or null, the http://localhost:4318/v1/{signal} (where signal is 'traces', 'logs', or 'metrics') is used. endpoint: http://localhost:4318/v1/metrics - # TODO + # Configure TLS settings for the exporter. tls: # Configure certificate used to verify a server's TLS credentials. # Absolute path to certificate file in PEM format. @@ -616,7 +616,7 @@ tracer_provider: # Configure endpoint, including the signal specific path. # If omitted or null, the http://localhost:4318/v1/{signal} (where signal is 'traces', 'logs', or 'metrics') is used. endpoint: http://localhost:4318/v1/traces - # TODO + # Configure TLS settings for the exporter. tls: # Configure certificate used to verify a server's TLS credentials. # Absolute path to certificate file in PEM format. diff --git a/examples/sdk-config.yaml b/examples/sdk-config.yaml index e4142be4..64ae6348 100644 --- a/examples/sdk-config.yaml +++ b/examples/sdk-config.yaml @@ -74,7 +74,7 @@ tracer_provider: # Configure endpoint, including the signal specific path. # If omitted or null, the http://localhost:4318/v1/{signal} (where signal is 'traces', 'logs', or 'metrics') is used. endpoint: http://localhost:4318/v1/traces - # TODO + # Configure TLS settings for the exporter. tls: # Configure certificate used to verify a server's TLS credentials. # Absolute path to certificate file in PEM format. @@ -177,7 +177,7 @@ meter_provider: # Configure endpoint, including the signal specific path. # If omitted or null, the http://localhost:4318/v1/{signal} (where signal is 'traces', 'logs', or 'metrics') is used. endpoint: http://localhost:4318/v1/metrics - # TODO + # Configure TLS settings for the exporter. tls: # Configure certificate used to verify a server's TLS credentials. # Absolute path to certificate file in PEM format. @@ -242,7 +242,7 @@ logger_provider: # Configure endpoint, including the signal specific path. # If omitted or null, the http://localhost:4318/v1/{signal} (where signal is 'traces', 'logs', or 'metrics') is used. endpoint: http://localhost:4318/v1/logs - # TODO + # Configure TLS settings for the exporter. tls: # Configure certificate used to verify a server's TLS credentials. # Absolute path to certificate file in PEM format. diff --git a/examples/sdk-migration-config.yaml b/examples/sdk-migration-config.yaml index 9880b0bc..5191b12b 100644 --- a/examples/sdk-migration-config.yaml +++ b/examples/sdk-migration-config.yaml @@ -106,7 +106,7 @@ tracer_provider: # Configure endpoint, including the signal specific path. # If omitted or null, the http://localhost:4318/v1/{signal} (where signal is 'traces', 'logs', or 'metrics') is used. endpoint: ${OTEL_EXPORTER_OTLP_TRACES_ENDPOINT:-http://localhost:4318/v1/traces} - # TODO + # Configure TLS settings for the exporter. tls: # Configure certificate used to verify a server's TLS credentials. # Absolute path to certificate file in PEM format. @@ -215,7 +215,7 @@ meter_provider: # Configure endpoint, including the signal specific path. # If omitted or null, the http://localhost:4318/v1/{signal} (where signal is 'traces', 'logs', or 'metrics') is used. endpoint: ${OTEL_EXPORTER_OTLP_METRICS_ENDPOINT:-http://localhost:4318/v1/metrics} - # TODO + # Configure TLS settings for the exporter. tls: # Configure certificate used to verify a server's TLS credentials. # Absolute path to certificate file in PEM format. @@ -284,7 +284,7 @@ logger_provider: # Configure endpoint, including the signal specific path. # If omitted or null, the http://localhost:4318/v1/{signal} (where signal is 'traces', 'logs', or 'metrics') is used. endpoint: ${OTEL_EXPORTER_OTLP_LOGS_ENDPOINT:-http://localhost:4318/v1/logs} - # TODO + # Configure TLS settings for the exporter. tls: # Configure certificate used to verify a server's TLS credentials. # Absolute path to certificate file in PEM format. diff --git a/schema-docs.md b/schema-docs.md index f3cbaf00..698b1b3d 100644 --- a/schema-docs.md +++ b/schema-docs.md @@ -3773,7 +3773,7 @@ Usages: | `compression` | one of:
* `string`
* `null`
| `false` | No constraints. | Configure compression.
Values include: gzip, none. Implementations may support other compression algorithms.
If omitted or null, none is used.
| | `timeout` | one of:
* `integer`
* `null`
| `false` | * `minimum`: `0`
| Configure max time (in milliseconds) to wait for each export.
Value must be non-negative. A value of 0 indicates no limit (infinity).
If omitted or null, 10000 is used.
| | `encoding` | [`OtlpHttpEncoding`](#otlphttpencoding) | `false` | No constraints. | Configure the encoding used for messages.
Values include: protobuf, json. Implementations may not support json.
If omitted or null, protobuf is used.
| -| `tls` | [`HttpTls`](#httptls) | `false` | No constraints. | TODO | +| `tls` | [`HttpTls`](#httptls) | `false` | No constraints. | Configure TLS settings for the exporter. | Constraints: @@ -3849,7 +3849,7 @@ Usages: | `encoding` | [`OtlpHttpEncoding`](#otlphttpencoding) | `false` | No constraints. | Configure the encoding used for messages.
Values include: protobuf, json. Implementations may not support json.
If omitted or null, protobuf is used.
| | `temporality_preference` | [`ExporterTemporalityPreference`](#exportertemporalitypreference) | `false` | No constraints. | Configure temporality preference.
Values include: cumulative, delta, low_memory. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, cumulative is used.
| | `default_histogram_aggregation` | [`ExporterDefaultHistogramAggregation`](#exporterdefaulthistogramaggregation) | `false` | No constraints. | Configure default histogram aggregation.
Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md.
If omitted or null, explicit_bucket_histogram is used.
| -| `tls` | [`HttpTls`](#httptls) | `false` | No constraints. | TODO | +| `tls` | [`HttpTls`](#httptls) | `false` | No constraints. | Configure TLS settings for the exporter. | Constraints: diff --git a/schema/meta_schema.yaml b/schema/meta_schema.yaml index 46818657..ae9f291b 100644 --- a/schema/meta_schema.yaml +++ b/schema/meta_schema.yaml @@ -748,7 +748,7 @@ Values include: protobuf, json. Implementations may not support json. If omitted or null, protobuf is used. - property: tls - description: TODO + description: Configure TLS settings for the exporter. isSdkExtensionPlugin: false - type: OtlpHttpMetricExporter properties: @@ -795,7 +795,7 @@ Values include: explicit_bucket_histogram, base2_exponential_bucket_histogram. For behavior of values, see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/otlp.md. If omitted or null, explicit_bucket_histogram is used. - property: tls - description: TODO + description: Configure TLS settings for the exporter. isSdkExtensionPlugin: false - type: ParentBasedSampler properties: From 3c94dcbc16b008e12a6f5c33f913f589f921cb2a Mon Sep 17 00:00:00 2001 From: Jack Berg Date: Wed, 29 Oct 2025 13:58:36 -0500 Subject: [PATCH 23/23] Try to fix link checking again --- .github/config/lychee.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/config/lychee.toml b/.github/config/lychee.toml index 44bc3876..5bf723b1 100644 --- a/.github/config/lychee.toml +++ b/.github/config/lychee.toml @@ -17,6 +17,6 @@ exclude = [ # excluding links to pull requests and issues is done for performance '^https://github.com/open-telemetry/opentelemetry-configuration/(issues|pull)/\d+$', # exclude localhost, file references from schema-docs.md - "^http://localhost.*", - "^file://.*", + "^http://localhost", + "file:///path/to/file.jsonl", ]