VictoriaMetrics/lib/protoparser/opentelemetry/proto
Nikolay 85de94e85c
lib/protoparser: adds opentelemetry parser (#2570)
* lib/protoparser: adds opentelemetry parser
app/{vmagent,vminsert}: adds opentelemetry ingestion path

Adds ability to ingest data with opentelemetry protocol
protobuf and json encoding is supported
data converted into prometheus protobuf timeseries
each data type has own converter and it may produce multiple timeseries
from single datapoint (for summary and histogram).
only cumulative aggregationFamily is supported for sum(prometheus
counter) and histogram.

Apply suggestions from code review

Co-authored-by: Roman Khavronenko <roman@victoriametrics.com>

updates deps

fixes tests

wip

wip

wip

wip

lib/protoparser/opentelemetry: moves to vtprotobuf generator

go mod vendor

lib/protoparse/opentelemetry: reduce memory allocations

* wip

- Remove support for JSON parsing, since it is too fragile and is rarely used in practice.
  The most clients send OpenTelemetry metrics in protobuf.
  The JSON parser can be added in the future if needed.
- Remove unused code from lib/protoparser/opentelemetry/pb and lib/protoparser/opentelemetry/proto
- Do not re-use protobuf message between ParseStream() calls, since there is high chance
  of high fragmentation of the re-used message because of too complex nested structure of the message.

* wip

* wip

* wip

---------

Co-authored-by: Aliaksandr Valialkin <valyala@victoriametrics.com>
2023-07-27 13:37:15 -07:00
..
common.proto lib/protoparser: adds opentelemetry parser (#2570) 2023-07-27 13:37:15 -07:00
metrics_service.proto lib/protoparser: adds opentelemetry parser (#2570) 2023-07-27 13:37:15 -07:00
metrics.proto lib/protoparser: adds opentelemetry parser (#2570) 2023-07-27 13:37:15 -07:00
README.md lib/protoparser: adds opentelemetry parser (#2570) 2023-07-27 13:37:15 -07:00
resource.proto lib/protoparser: adds opentelemetry parser (#2570) 2023-07-27 13:37:15 -07:00

Opentelemetry proto files

Content copied from https://github.com/open-telemetry/opentelemetry-proto/tree/main/opentelemetry/proto

Requirements

  • protoc binary link
  • golang-proto-genlink
  • custom marshaller link

Modifications

Original proto files were modified:

  1. changed package name for package opentelemetry.
  2. changed import paths - changed directory names.
  3. changed go_package for opentelemetry/pb.

How to generate pbs

run command:

export GOBIN=~/go/bin protoc
protoc -I=. --go_out=./lib/protoparser/opentelemetry --go-vtproto_out=./lib/protoparser/opentelemetry --plugin protoc-gen-go-vtproto="$GOBIN/protoc-gen-go-vtproto" --go-vtproto_opt=features=marshal+unmarshal+size  lib/protoparser/opentelemetry/proto/*.proto

Generated code will be at lib/protoparser/opentelemetry/opentelemetry/

manually edit it:

  1. remove all external imports
  2. remove all unneeded methods
  3. replace unknownFields with unknownFields []byte