Я пытаюсь использовать OpenTelemetry для экспорта показателей в удаленную конечную точку. В качестве теста я пытаюсь экспортировать счетчик на сервер Prometheus по адресу localhost:8000. Однако, когда я запускаю приведенный ниже код, я не вижу показателей по адресу 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)
РЕДАКТИРОВАНИЕ: вот некоторый исправленный код после запуска
docker run \
[prom image] \
--config.file=/etc/prometheus/prometheus.yml \
--enable-feature=remote-writer-receiver
К сожалению, все еще не работает.
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:9090/api/v1/write', headers={})
reader = PeriodicExportingMetricReader(exporter, 1000)
provider = MeterProvider(metric_readers=[reader])
metrics.set_meter_provider(provider)
meter = metrics.get_meter('my_meter')
requests_counter = meter.create_counter(name='test_counter', description='Random counter', unit='1')
while True:
num = random.randint(0, 50)
print(num)
requests_counter.add(num)
time.sleep(1)
Подробнее здесь: https://stackoverflow.com/questions/790 ... -localhost