我正在尝试使用 OpenTelemetry 将指标导出到远程端点。作为测试,我尝试将计数器导出到 localhost:8000 的 Prometheus 服务器。但是,当我运行以下代码时,我看不到 localhost:8000/metrics 上的指标。谁能指出我哪里出错了?请注意,我正在使用 opentelemetry-exporter-prometheus-remote-write 来尝试完成此任务。
from prometheus_client import start_http_server
import random
import time
from opentelemetry import metrics
from opentelemetry.exporter.prometheus_remote_write import PrometheusRemoteWriteMetricsExporter
from opentelemetry.sdk.metrics import MeterProvider
from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader
start_http_server(8000, addr='localhost')
exporter = PrometheusRemoteWriteMetricsExporter(endpoint='http://localhost:8000', headers={})
reader = PeriodicExportingMetricReader(exporter, 1000)
provider = MeterProvider(metric_readers=[reader])
metrics.set_meter_provider(provider)
meter = metrics.get_meter(__name__)
requests_counter = meter.create_counter('test_counter', 'Random counter')
while True:
num = random.randint(0, 50)
print(num)
requests_counter.add(num, {'env': 'staging', 'label': '9999'})
time.sleep(1)
一些事情(请参阅存储:概述):
/api/v1/write
注意您可能需要致电
meter.create_counter(
name='test_counter',
description='Random counter',
)
podman run \
--interactive --tty --rm \
--publish=9090:9090/tcp \
docker.io/prom/prometheus:v2.54.1 \
--config.file=/etc/prometheus/prometheus.yml \
--enable-feature=remote-write-receiver
NB 默认 Prometheus Web 端点端口是
9090
。
然后,运行您的(修订后的)代码后,我可以查询 Prometheus API:
curl \
--silent \
--get \
--data-urlencode "query=test_counter[15s]" \
http://localhost:9090/api/v1/query \
| jq -r .
{
"status": "success",
"data": {
"resultType": "matrix",
"result": [
{
"metric": {
"__name__": "test_counter",
"env": "staging",
"label": "9999",
"service_name": "unknown_service",
"telemetry_sdk_language": "python",
"telemetry_sdk_name": "opentelemetry",
"telemetry_sdk_version": "1.27.0"
},
"values": [
[
1726765795.586,
"344"
],
[
1726765796.598,
"374"
],
[
1726765797.605,
"383"
],
[
1726765798.611,
"409"
],
[
1726765799.616,
"419"
],
[
1726765800.623,
"460"
],
[
1726765801.633,
"476"
],
[
1726765802.641,
"502"
],
[
1726765803.648,
"523"
],
[
1726765804.652,
"548"
],
[
1726765805.66,
"592"
],
[
1726765806.666,
"619"
],
[
1726765807.672,
"668"
],
[
1726765808.679,
"674"
],
[
1726765809.687,
"709"
]
]
}
]
}
}