Налаштування експорту даних OBI Prometheus та OpenTelemetry

Налаштування компонентів OBI для експорту метрик Prometheus та OpenTelemetry та трейсів OpenTelemetry

OBI може експортувати метрики та трейси OpenTelemetry до точки доступу OTLP.

Загальна конфігурація метрик

Розділ YAML: metrics.

Розділ metrics містить загальну конфігурацію для експортерів метрик та трасування OpenTelemetry.

Наразі він підтримує вибір різних наборів метрик для експорту.

Приклад:

metrics:
  features: ['network', 'network_inter_zone']
YAML
змінна середовища
ОписТипСтандартно
features
OTEL_EBPF_METRICS_FEATURES
Список груп метрик, для яких OBI експортує дані, див. функції експорту метрик. Прийнятні значення: application, application_span, application_host, application_service_graph, network та network_inter_zone.список рядків["application"]

Обʼєкти експорту метрик

Експортер метрик OBI може експортувати наступні групи даних метрик для процесів, що відповідають записам у конфігурації metrics discovery.

  • application: Метрики на рівні застосунку.
  • application_host: Метрики хосту на рівні застосунку для тарифікації на основі хосту.
  • application_span: метрики відрізків трасування на рівні застосунку в застарілому форматі (наприклад, traces_spanmetrics_latency); spanmetrics не є окремим.
  • application_span_otel: метрики відрізків трасування на рівні застосунку в форматі OpenTelemetry (наприклад, traces_span_metrics_calls_total); span_metrics є окремим.
  • application_span_sizes: метрики відрізків трасування на рівні застосунку, що повідомляють інформацію про розміри запитів і відповідей.
  • application_service_graph: метрики графіків сервісів на рівні застосунку. Рекомендується використовувати DNS для виявлення сервісів і переконатися, що імена DNS відповідають іменам сервісів OpenTelemetry, які використовує OBI. У середовищах Kubernetes найкращим вибором для метрик графіків сервісів є імʼя сервісу OpenTelemetry, встановлене виявленням імені сервісу.
  • network: Метрики на рівні мережі. Для отримання додаткової інформації див. документацію з конфігурації мережевих метрик.
  • network_inter_zone: Метрики міжзональних мереж. Для отримання додаткової інформації див. документацію з конфігурації мережевих метрик.

Функції експорту метрик для кожного застосунку

Крім того, OBI дозволяє перевизначити глобальні функції експорту метрик на рівні кожного застосунку, додавши metrics > features як властивість до кожного запису discovery > instrument.

Наприклад, у наступній конфігурації:

  • Екземпляри сервісів apache, nginx і tomcat експортуватимуть лише метрики application_service_graph (як визначено у глобальній конфігурації metrics > features).

  • Сервіс pyserver експортуватиме лише групу метрик application.

  • Сервіси, що прослуховують порти 3030 або 3040, експортуватимуть групи метрик application, application_span і application_service_graph.

metrics:
  features: ['application_service_graph']
discovery:
  instrument:
    - open_ports: 3030,3040
      metrics:
        features:
          - 'application'
          - 'application_span'
          - 'application_service_graph'
    - name: pyserver
      open_ports: 7773
      metrics:
        features:
          - 'application'
    - name: apache
      open_ports: 8080
    - name: nginx
      open_ports: 8085
    - name: tomcat
      open_ports: 8090

Компонент експорту метрик OpenTelemetry

Секція YAML: otel_metrics_export

Увімкніть компонент експорту метрик OpenTelemetry, встановивши атрибут endpoint у вашому конфігураційному файлі або через змінну середовища, зверніться до опцій конфігурації експорту метрик.

Налаштуйте компонент у секції otel_metrics_export вашого YAML-конфігураційного файлу або через змінні середовища.

На додачу до конфігурації, задокументованої в цій статті, компонент підтримує змінні середовища з стандартної конфігурації експортерів OpenTelemetry.

Наприклад:

otel_metrics_export:
  ttl: 5m
  endpoint: http://otelcol:4318
  protocol: grpc
  buckets:
    duration_histogram: [0, 1, 2]
  histogram_aggregation: base2_exponential_bucket_histogram
YAML
змінна середовища
ОписТипСтандартно
endpoint
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT
Точка доступу OBI яка надсилає метрики.URL
OTEL_EXPORTER_OTLP_ENDPOINTСпільна точка доступу для експортерів метрик і трейсів. OBI додає /v1/metrics до URL при надсиланні метрик, відповідно до стандарту OpenTelemetry. Щоб запобігти цій поведінці, використовуйте специфічну для метрик настройку.URL
protocol
OTEL_EXPORTER_OTLP_METRICS_PROTOCOL
Протокол транспорту/кодування точки доступу OpenTelemetry, див. протокол експорту метрик. Прийняті значення http/json, http/protobuf і grpc.stringВизначається за використанням порту
OTEL_EXPORTER_OTLP_PROTOCOLПодібно до спільної точки доступу, протокол для метрик і трейсів.stringВизначається за використанням порту
insecure_skip_verify
OTEL_EBPF_INSECURE_SKIP_VERIFY
Якщо true, OBI пропускає перевірку та приймає будь-який сертифікат сервера. Перевизначайте цей параметр лише для не промислових середовищ.booleanfalse
interval
OTEL_EBPF_METRICS_INTERVAL
Проміжок часу між експортуваннями.Duration60s
allow_service_graph_self_references
OTEL_EBPF_ALLOW_SERVICE_GRAPH_SELF_REFERENCES
Контролює, чи включає OBI сервіси, що посилаються самі на себе, в генерацію графа сервісів, наприклад, сервіс, який викликає сам себе. Посилання на себе зменшує корисність графа сервісів і збільшує кардинальність даних.booleanfalse
instrumentations
OTEL_EBPF_METRICS_INSTRUMENTATIONS
Список інструментацій метрик, для яких OBI збирає дані, див. розділ інструментація метрик.list of strings["*"]
bucketsВстановлює, як ви можете перевизначити межі сегментів різних гістограм, див. перевизначення сегментів гістограм.(n/a)Object
histogram_aggregation
OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION
Встановлює стандартне значення агрегації, яке OBI використовує для інструментів гістограм. Прийняті значення explicit_bucket_histogram або base2_exponential_bucket_histogram.stringexplicit_bucket_histogram

Протокол експорту метрик

Якщо ви не встановите протокол, OBI встановлює протокол наступним чином:

  • grpc: якщо порт закінчується на 4317, наприклад 4317, 14317 або 24317.
  • http/protobuf: якщо порт закінчується на 4318, наприклад 4318, 14318 або 24318.

Метрики інструментації

Список областей інструментації, з яких OBI може збирати дані:

  • *: всі інструментації, якщо * присутній, OBI ігнорує інші значення
  • http: HTTP/HTTPS/HTTP/2 метрики застосунків
  • grpc: gRPC метрики застосунків
  • sql: SQL метрики викликів клієнтів бази даних
  • redis: Redis метрики клієнтів/серверів бази даних
  • kafka: Kafka метрики клієнтів/серверів черг повідомлень
  • gpu: метрики продуктивності GPU
  • mongo: метрики викликів клієнтів MongoDB
  • dns: метрики DNS-запитів

Наприклад, встановлення параметра instrumentations на: http,grpc дозволяє збір метрик HTTP/HTTPS/HTTP2 та gRPC застосунків і відключає інші інструментації.

Компонент експортерів трейсів OpenTelemetry

Секція YAML: otel_traces_export

Ви можете налаштувати компонент в секції otel_traces_export вашої YAML конфігурації або через змінні середовища.

На додачу до конфігурації, задокументованої в цій статті, компонент підтримує змінні середовища з стандартної конфігурації експортерів OpenTelemetry.

otel_traces_export:
  endpoint: http://jaeger:4317
  protocol: grpc
  instrumentations: ["http, "sql"]
YAML
змінна середовища
ОписТипСтандартно
endpoint
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
OTEL_EXPORTER_OTLP_ENDPOINT
Точка доступу, до якої OBI надсилає трейс. Коли використовується OTEL_EXPORTER_OTLP_ENDPOINT, OBI дотримується стандарту OpenTelemetry і автоматично додає шлях /v1/traces до URL-адреси. Якщо ви не хочете, щоб це сталося, використовуйте специфічні налаштування для трейсів.URL
protocol
OTEL_EXPORTER_OTLP_TRACES_PROTOCOL
OTEL_EXPORTER_OTLP_PROTOCOL
Протокол транспорту/кодування OpenTelemetry, зверніться до протоколу експорту трейсів. Прийняті значення http/json, http/protobuf та grpc.stringInferred from port usage
insecure_skip_verify
OTEL_EBPF_INSECURE_SKIP_VERIFY
Якщо true, OBI пропускає перевірку та приймає будь-який сертифікат сервера. Цю настройку слід перевизначити лише для не виробничих середовищ.booleanfalse
instrumentations
OTEL_EBPF_TRACES_INSTRUMENTATIONS
Список інструментації, для якої OBI збирає дані, зверніться до розділу інструментації трейсів.list of strings["*"]

Протокол експорту трейсів

Якщо ви не встановите протокол, OBI встановлює протокол наступним чином:

  • grpc: якщо порт закінчується на 4317, наприклад 4317, 14317 або 24317.
  • http/protobuf: якщо порт закінчується на 4318, наприклад 4318, 14318 або 24318.

Інструментування трейсів

Список областей інструментації, з яких OBI може збирати дані:

  • *: вся інструментація, якщо * присутній, OBI ігнорує інші значення
  • http: HTTP/HTTPS/HTTP/2 трейси застосунків
  • grpc: gRPC трейси застосунків
  • sql: SQL трейси бази даних клієнтських викликів
  • redis: Redis трейси клієнтів/серверів бази даних
  • kafka: Kafka трейси клієнтів/серверів черг повідомлень
  • gpu: метрики продуктивності GPU
  • mongo: метрики викликів клієнтів MongoDB
  • dns: метрики DNS-запитів

Наприклад, якщо ви встановите параметр instrumentations на: http,grpc, це дозволить збір трейсів застосунків HTTP/HTTPS/HTTP2 та gRPC, а також відключить інші інструментації.

Компонент експортера Prometheus

Секція YAML: prometheus_export

Ви можете налаштувати компонент в секції prometheus_export вашої YAML конфігурації або через змінні середовища. Цей компонент відкриває точку доступу HTTP в інструменті автоматичного інструментування, який дозволяє будь-якому зовнішньому скреперу отримувати метрики у форматі Prometheus. Він активується, якщо встановлено властивість port.

prometheus_export:
  port: 8999
  path: /metrics
  extra_resource_attributes: ["deployment_environment"]
  ttl: 1s
  buckets:
    request_size_histogram: [0, 10, 20, 22]
    response_size_histogram: [0, 10, 20, 22]
  instrumentations: ["http, "sql"]
YAML
змінна середовища
ОписТипСтандартно
port
OTEL_EBPF_PROMETHEUS_PORT
HTTP порт для точки доступу скрепера Prometheus. Якщо не встановлено або 0, точка доступу Prometheus не відкрита.int
path
OTEL_EBPF_PROMETHEUS_PATH
HTTP запит для отримання списку метрик Prometheus.string/metrics
extra_resource_attributes
OTEL_EBPF_PROMETHEUS_EXTRA_RESOURCE_ATTRIBUTES
Список додаткових атрибутів ресурсу, які будуть додані до метрики target_info. Зверніть увагу на додаткові атрибути ресурсу для важливих деталей про атрибути, виявлені під час виконання.list of strings
ttl
OTEL_EBPF_PROMETHEUS_TTL
Тривалість, після якої екземпляри метрик не потрапляють у звіт, якщо вони не були оновлені. Використовується для уникнення нескінченного звітування про завершені екземпляри застосунків.Duration5m
bucketsВстановлює, як ви можете перевизначити межі сегментів різних гістограм, зверніть увагу на перевизначення сегментів гістограм.Object
allow_service_graph_self_references
OTEL_EBPF_PROMETHEUS_ALLOW_SERVICE_GRAPH_SELF_REFERENCES
Чи OBI включає сервіси, що посилаються самі на себе, в генерацію графа сервісів. Самопосилання не є корисним для графів сервісів і збільшує кардинальність даних.booleanfalse
instrumentations
OTEL_EBPF_PROMETHEUS_INSTRUMENTATIONS
Перелік інструментацій, для яких OBI збирає дані, зверніть увагу на розділ інструментація Prometheus.list of strings["*"]

Додаткові атрибути ресурсів Prometheus

Через обмеження внутрішнього клієнта API Prometheus, OBI потрібно заздалегідь знати, які атрибути відкриті для кожної метрики. Це призведе до того, що деякі атрибути, які виявляються під час виконання, під час інструментації, не будуть стандартно видимими. Наприклад, атрибути, визначені для кожного застосунку через анотації Kubernetes або в змінній середовища OTEL_RESOURCE_ATTRIBUTES цільового застосунку.

Наприклад, застосунок, що визначає OTEL_RESOURCE_ATTRIBUTES=deployment.environment=production як змінну середовища, атрибут target_info{deployment.environment="production"} буде стандартно видимий, якщо метрики експортуються через OpenTelemetry, але не якщо вони експортуються через Prometheus.

Щоб зробити deployment_environment видимим у Prometheus, вам потрібно додати його до списку extra_resource_attributes.

Інструментація Prometheus

Список областей інструментування, з яких OBI може збирати дані:

  • *: всі області інструментування, якщо * присутній, OBI ігнорує інші значення
  • http: метрики застосунків HTTP/HTTPS/HTTP/2
  • grpc: метрики застосунків gRPC
  • sql: метрики викликів клієнтів SQL бази даних
  • redis: метрики клієнтів/серверів Redis бази даних
  • kafka: метрики клієнтів/серверів Kafka черг повідомлень

Наприклад, якщо встановити параметр instrumentations на: http,grpc, це дозволить збір метрик застосунків HTTP/HTTPS/HTTP2 і gRPC, а також вимкне інші області інструментування.


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