This repository contains the JSON schema that defines the OpenTelemetry configuration. This schema can be utilized to generate model code for implementations and to validate the structure of a configuration file. The repository comes as a result of OTEP #225, where JSON schema was chosen for the following reasons:
- support for client-side validation
- code generation
- broad support across languages
There are several tools available to generate code from a JSON schema. The following shows an example for generating code from the JSON schema in Go:
go-jsonschema \
-p telemetry \
--schema-package=https://opentelemetry.io/otelconfig/opentelemetry_configuration.json=github.com/open-telemetry/opentelemetry-collector/schema \
./schema/opentelemetry_configuration.json
Before reaching 1.0, each minor version change is equivalent to major version change. That is, there are no guarantees about compatibility and all changes are permitted. As of 1.0, we provide the following stability guarantees:
- For major version: No guarantees.
- For minor versions: TBD
Allowable changes:
- For major versions: All changes are permitted.
- For minor versions: TBD
The following guidelines are used to model the configuration schema:
- To remove redundant information from the configuration file, prefixes for data produced by each of the providers will be removed from configuration options. For example, under the
meter_provider
configuration, metric readers will be identified by the wordreaders
rather than bymetric_readers
. Similarly, the prefixspan_
will be dropped for tracer provider configuration, andlogrecord
for logger provider. - Use wildcard
*
(match any number of any character, including none) and?
(match any single character) instead of regex. If a single property with wildcards is likely to be insufficient, acceptincluded
andexcluded
properties, each with an array of strings with wildcard entries. The wildcard entries should be joined with a logical OR. Ifincluded
is not specified, assume that all entries are included. Applyexcluded
after applyingincluded
. Examples:- Given
excluded: ["a*"]
: Match all except values starting witha
. - Given
included: ["a*", "b*"]
,excluded: ["ab*"]
: Match any value starting witha
orb
, excluding values starting withab
. - Given
included: ["a", "b"]
,excluded: ["a"]
: Match values equal tob
.
- Given