我正在使用OpenTelemetry,并有这样一个设置:
高朗,船坞组合,3项服务,1独立开放遥测收集器,1普罗米修斯.
我收集了一些系统指标给一个独立的开放遥测收集器。这些度量是从3个不同的服务中收集的,并且度量具有相同的名称。然后,普罗米修斯从远程遥测收集器获得数据。问题是,我无法区分Prometheus中的不同服务,因为所有的度量都具有相同的“实例”值,这相当于开放遥测收集器的主机。
我知道我可以将带有服务名称的标签添加到度量记录中,然后根据标签区分度量,但我正在寻找另一种解决方案,因为并不总是能够将标签添加到每个度量中。也许,类似于http中间件,但是对于度量标准,或者在基础设施级别上。
服务是用Golang编写的,但是我很高兴看到任何其他语言的解决方案。
otel收集器-配置:
receivers:
otlp:
protocols:
grpc:
http:
exporters:
prometheus:
endpoint: otel-collector:8889
const_labels:
label1: value1
send_timestamps: true
metric_expiration: 5m
processors:
batch:
service:
pipelines:
metrics:
receivers: [ otlp ]
processors: [ batch ]
exporters: [ prometheus ]
Prometheus配置:
scrape_configs:
- job_name: 'otel-collector'
scrape_interval: 5s
static_configs:
- targets: ['otel-collector:8889']
码头工人-组成:
version: "3.9"
services:
service1:
build:
context: ./service1
network: host
environment:
- TELEMETRY_COLLECTOR_ADDR=otel-collector:55681
ports:
- "8094:8080"
expose:
- "8080"
service2:
build:
context: ./service2
network: host
environment:
- TELEMETRY_COLLECTOR_ADDR=otel-collector:55681
ports:
- "8095:8080"
expose:
- "8080"
service3:
build:
context: ./service3
network: host
environment:
- TELEMETRY_COLLECTOR_ADDR=otel-collector:55681
expose:
- "8080"
ports:
- "8096:8080"
prometheus:
image: prom/prometheus:v2.26.0
volumes:
- ./prometheus.yaml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
otel-collector:
image: otel/opentelemetry-collector:0.23.0
command: [ "--config=/etc/otel-collector-config.yaml" ]
expose:
- "55681" # HTTP otel receiver
- "8889" # Prometheus exporter metrics
volumes:
- ./otel-collector-config.yaml:/etc/otel-collector-config.yaml
更新1.我发现一些新的参数被添加到exporter https://github.com/open-telemetry/opentelemetry-collector/tree/main/exporter/exporterhelper中。其中之一是适合我的:resource_to_telemetry_conversion
。但正如我所看到的,prometheusexporter
和prometheusremotewriteexporter
在配置中不支持该字段。
https://stackoverflow.com/questions/66924732
复制相似问题