Експорт метрик OTLP до Prometheus

Вступ

Prometheus був спроєктований та оптимізований для моніторингу на основі pull-моделі, де він виявляє цілі та збирає метрики з точок доступу на регулярній основі. Ця модель є центральною для його архітектури, підтримуючи такі функції, як виявлення сервісів та послідовний збір метрик за цілями.

Зі зростанням впровадження OpenTelemetry, новіші версії Prometheus додали підтримку отримання метрик на основі push-моделі через OTLP. У цій конфігурації SDK OpenTelemetry експортує метрики за допомогою OTLP через HTTP, а Prometheus виступає як приймач OTLP замість збору метрик. Цей підхід можна використовувати в простіших налаштуваннях, експериментах або локальних середовищах розробки. Однак для промислових розгортань з використанням OpenTelemetry наполегливо рекомендується використовувати OpenTelemetry Collector як проміжний компонент.

Цей посібник пояснює, як налаштувати прямий експорт метрик OTLP з SDK OpenTelemetry до точки доступу OTLP Prometheus. Він охоплює необхідні змінні середовища, конфігурацію експортера та ключові аспекти, такі як ідентифікація сервісу, інтервали експорту та операційні компроміси.

Попередні вимоги

Перед початком переконайтеся, що виконані наступні вимоги:

Після налаштування Prometheus можна перейти до конфігурації вашого застосунку для прямого надсилання метрик до точки збору OTLP.

Використання змінних середовища

Ви можете налаштувати SDK OpenTelemetry та бібліотеки інструментування за допомогою стандартних змінних середовища. Встановіть змінні середовища перед запуском вашого застосунку. Наступні змінні OpenTelemetry потрібні для прямого надсилання метрик OpenTelemetry на сервер Prometheus на localhost:

export OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
export OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=http://localhost:9090/api/v1/otlp

Вимкніть трасування та журнали при використанні Prometheus, якщо вам потрібні лише метрики:

export OTEL_TRACES_EXPORTER=none
export OTEL_LOGS_EXPORTER=none

Стандартний інтервал надсилання метрик OpenTelemetry становить 60 секунд. Його можна налаштувати залежно від вимог до моніторингу. Наприклад, інтервал у 15 секунд забезпечує більш оперативні метрики та швидше сповіщення, але за рахунок більшого навантаження на мережу та обробку.

export OTEL_METRIC_EXPORT_INTERVAL=15000

Якщо ваша бібліотека інструментування стандартно не надає service.name та service.instance.id, наполегливо рекомендується їх встановити. Без цих атрибутів важко надійно ідентифікувати сервіси або відрізняти екземпляри, що значно ускладнює налагодження та агрегацію. Наведений нижче приклад передбачає, що команда uuidgen доступна у вашій системі.

export OTEL_SERVICE_NAME="my-example-service"
export OTEL_RESOURCE_ATTRIBUTES="service.instance.id=$(uuidgen)"

Налаштування телеметрії

Оновіть конфігурацію OpenTelemetry, щоб використовувати той самий exporter та reader з налаштування OTLP у вашій документації SDK для мови. Якщо змінні середовища налаштовані та завантажені правильно, SDK OpenTelemetry читає їх автоматично.


Востаннє змінено December 26, 2024: [uk] Ukrainian documentation for OpenTelemetry (cf1a5745)