使用 OpenTelemetry 远程写入本地主机

问题描述 投票:0回答:1

我正在尝试使用 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)
python prometheus open-telemetry
1个回答
0
投票

一些事情(请参阅存储:概述):

  1. 您必须启用 Prometheus 才能访问远程写入
  2. 终点应该是
    /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"
          ]
        ]
      }
    ]
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.