Back to Zerotierone

OTLP Exporter

ext/opentelemetry-cpp-1.21.0/exporters/otlp/README.md

2-before-rusting10.4 KB
Original Source

OTLP Exporter

The OpenTelemetry Protocol (OTLP) is a vendor-agnostic protocol designed as part of the OpenTelemetry project. The OTLP exporter can be used to export to any backend that supports OTLP.

The OpenTelemetry Collector is a reference implementation of an OTLP backend. The Collector can be configured to export to many other backends, such as Zipkin and Jaegar.

For a full list of backends supported by the Collector, see the main Collector repo and Collector contributions.

Configuration

The OTLP exporter offers some configuration options. To configure the exporter, create an OtlpGrpcExporterOptions struct (defined in otlp_grpc_exporter.h), set the options inside, and pass the struct to the OtlpGrpcExporter constructor, like so:

cpp
OtlpGrpcExporterOptions options;
options.endpoint = "localhost:12345";
auto exporter = std::unique_ptr<sdktrace::SpanExporter>(new otlp::OtlpGrpcExporter(options));

The OTLP HTTP exporter offers some configuration options. To configure the exporter, create an OtlpHttpExporterOptions struct (defined in otlp_http_exporter.h), set the options inside, and pass the struct to the OtlpHttpExporter constructor, like so:

cpp
OtlpHttpExporterOptions options;
options.url = "localhost:12345";
auto exporter = std::unique_ptr<sdktrace::SpanExporter>(new otlp::OtlpHttpExporter(options));

The OTLP File exporter offers some configuration options. To configure the exporter, create an OtlpFileExporterOptions struct (defined in otlp_file_exporter_options.h and otlp_file_client_options.h), set the options inside, and pass the struct to the OtlpFileExporter constructor, like so:

cpp
OtlpFileExporterOptions options;
OtlpFileClientFileSystemOptions fs_backend;
fs_backend.file_pattern = "trace.%N.log";
options.backend_options = fs_backend;
auto exporter = std::unique_ptr<sdktrace::SpanExporter>(new otlp::OtlpFileExporter(options));

Configuration options ( OTLP GRPC Exporter )

OptionEnv VariableDefaultDescription
endpointOTEL_EXPORTER_OTLP_ENDPOINThttp://localhost:4317The OTLP GRPC endpoint to connect to
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
use_ssl_credentialsOTEL_EXPORTER_OTLP_SSL_ENABLEfalseWhether the endpoint is SSL enabled
OTEL_EXPORTER_OTLP_TRACES_SSL_ENABLE
ssl_credentials_cacert_pathOTEL_EXPORTER_OTLP_CERTIFICATE""SSL Certificate file path
OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE
ssl_credentials_cacert_as_stringOTEL_EXPORTER_OTLP_CERTIFICATE_STRING""SSL Certifcate as in-memory string
OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE_STRING
timeoutOTEL_EXPORTER_OTLP_TIMEOUT10sGRPC deadline
OTEL_EXPORTER_OTLP_TRACES_TIMEOUT
metadataOTEL_EXPORTER_OTLP_HEADERSCustom metadata for GRPC
OTEL_EXPORTER_OTLP_TRACES_HEADERS

Configuration options ( OTLP HTTP Exporter )

OptionEnv VariableDefaultDescription
urlOTEL_EXPORTER_OTLP_ENDPOINThttp://localhost:4318The OTLP HTTP endpoint to connect to
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
content_typen/aapplication/jsonData format used - JSON or Binary
json_bytes_mappingn/aJsonBytesMappingKind::kHexIdEncoding used for trace_id and span_id
use_json_namen/afalseWhether to use json name of protobuf field to set the key of json
timeoutOTEL_EXPORTER_OTLP_TIMEOUT10shttp timeout
OTEL_EXPORTER_OTLP_TRACES_TIMEOUT
http_headersOTEL_EXPORTER_OTLP_HEADERShttp headers
OTEL_EXPORTER_OTLP_TRACES_HEADERS

Configuration options ( OTLP File Exporter )

OptionEnv VariableDefaultDescription
backend_optionsn/aOtlpFileClientFileSystemOptionsThe OTLP FILE backend

The backend for OTLP File Exporter can be OtlpFileClientFileSystemOptions (which support basic log rotate and alias), and reference to std::ostream or custom OtlpFileAppender.

Configuration options ( File System Backend for OTLP File Exporter )

OptionEnv VariableDefaultDescription
file_patternn/atrace-%N.jsonlThe file pattern to use
metrics-%N.jsonl
logs-%N.jsonl
alias_patternn/atrace-latest.jsonlThe file which always point to the latest file
metrics-latest.jsonl
logs-latest.jsonl
flush_intervaln/a30sInterval to force flush ostream
flush_countn/a256Force flush ostream every flush_count records
file_sizen/a20MBFile size to rotate log files
rotate_sizen/aRotate count

Some special placeholders are available for file_pattern and alias_pattern:

  • %Y: Writes year as a 4 digit decimal number
  • %y: Writes last 2 digits of year as a decimal number (range [00,99])
  • %m: Writes month as a decimal number (range [01,12])
  • %j: Writes day of the year as a decimal number (range [001,366])
  • %d: Writes day of the month as a decimal number (range [01,31])
  • %w: Writes weekday as a decimal number, where Sunday is 0 (range [0-6])
  • %H: Writes hour as a decimal number, 24 hour clock (range [00-23])
  • %I: Writes hour as a decimal number, 12 hour clock (range [01,12])
  • %M: Writes minute as a decimal number (range [00,59])
  • %S: Writes second as a decimal number (range [00,60])
  • %F: Equivalent to "%Y-%m-%d" (the ISO 8601 date format)
  • %T: Equivalent to "%H:%M:%S" (the ISO 8601 time format)
  • %R: Equivalent to "%H:%M"
  • %N: Rotate index, start from 0
  • %n: Rotate index, start from 1

Example

For a complete example demonstrating how to use the OTLP exporter, see examples/otlp.