VictoriaMetrics supports data ingestion via OpenTelemetry protocol (OTLP) for metrics at /opentelemetry/v1/metrics path. It expects protobuf-encoded requests at /opentelemetry/v1/metrics. For gzip-compressed workload set HTTP request header Content-Encoding: gzip.

See how to configure OpenTelemetry Collector to push metrics to VictoriaMetrics.

Metric naming #

By default, VictoriaMetrics stores the ingested OpenTelemetry metric samples as is without any transformations. The following label transformations can be enabled:

  • -usePromCompatibleNaming - replaces characters unsupported by Prometheus with _ in metric names and labels for all ingestion protocols. For example, process.cpu.time{service.name="foo"} is converted to process_cpu_time{service_name="foo"}.
  • -opentelemetry.usePrometheusNaming - converts metric names and labels according to OTLP Metric points to Prometheus specification for metrics ingested via OTLP. For example, process.cpu.time{service.name="foo"} is converted to process_cpu_time_seconds_total{service_name="foo"}.
  • -opentelemetry.convertMetricNamesToPrometheus - converts only metric names according to OTLP Metric points to Prometheus specification for metrics ingested via OTLP. For example, process.cpu.time{service.name="foo"} is converted to process_cpu_time_seconds_total{service.name="foo"}. See more about this use case here .
Note

These flags can be applied on vmagent, vminsert or VictoriaMetrics single-node.

Exponential histograms #

OpenTelemetry exponential histogram is automatically converted to VictoriaMetrics histogram format .

References #