Метрики

Вимірювання, зафіксоване під час виконання.

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

Метрики застосунків та запитів є важливими показниками доступності та продуктивності. Користувацькі метрики можуть надати уявлення про те, як показники доступності впливають на користувацький досвід або бізнес. Зібрані дані можуть бути використані для сповіщення про збій або запуску рішень щодо планування для автоматичного масштабування розгортання при високому попиті.

Щоб зрозуміти, як працюють метрики в OpenTelemetry, розгляньмо список компонентів, які будуть брати участь в інструментуванні нашого коду.

Постачальник лічильників

Постачальник лічильників (іноді називається MeterProvider) є фабрикою для Meter. У більшості застосунків постачальник лічильників ініціалізується один раз, і його життєвий цикл відповідає життєвому циклу застосунку. Ініціалізація постачальника лічильників також включає ініціалізацію ресурсів та експортерів. Це зазвичай перший крок у вимірюванні з OpenTelemetry. У деяких мовних SDK глобальний постачальник лічильників вже ініціалізований для вас.

Лічильник

Лічильник створює інструменти метрик, фіксуючи вимірювання сервісу під час виконання. Лічильники створюються з постачальників лічильників.

Експортер метрик

Експортери метрик надсилають дані метрик споживачу. Цим споживачем може бути стандартний вивід для налагодження під час розробки, колектор OpenTelemetry або будь-який відкритий або комерційний бекенд на ваш вибір.

Інструменти метрик

В OpenTelemetry вимірювання фіксуються інструментами метрик. Інструмент метрики визначається:

  • Назвою
  • Типом
  • Одиниця виміру (необовʼязково)
  • Опис (необовʼязково)

Назва, одиниця виміру та опис обираються розробником або визначаються через семантичні домовленості для загальних, таких як метрики запитів та процесів.

Тип інструменту є одним з наступних:

  • Counter: Значення, яке накопичується з часом — ви можете уявити це як одометр в автомобілі; воно тільки збільшується.
  • Asynchronous Counter: Те ж саме, що і Counter, але збирається один раз для кожного експорту. Може використовуватися, якщо у вас немає доступу до безперервних приростів, а тільки до агрегованого значення.
  • UpDownCounter: Значення, яке накопичується з часом, але також може зменшуватися. Прикладом може бути довжина черги, яка буде збільшуватися і зменшуватися з кількістю робочих елементів у черзі.
  • Asynchronous UpDownCounter: Те ж саме, що і UpDownCounter, але збирається один раз для кожного експорту. Може використовуватися, якщо у вас немає доступу до безперервних змін, а тільки до агрегованого значення (наприклад, поточний розмір черги).
  • Gauge: Вимірює поточне значення на момент читання. Прикладом може бути показник палива у транспортному засобі. Gauge є синхронними.
  • Asynchronous Gauge: Те ж саме, що і Gauge, але збирається один раз для кожного експорту. Може використовуватися, якщо у вас немає доступу до безперервних змін, а тільки до агрегованого значення.
  • Histogram: Агрегація значень на стороні клієнта, таких як затримки запитів. Гістограма є хорошим вибором, якщо вас цікавить статистика значень. Наприклад: Скільки запитів займають менш як 1 секунда?

Для отримання додаткової інформації про синхронні та асинхронні інструменти, а також про те, який тип найкраще підходить для вашого випадку використання, дивіться Додаткові рекомендації.

Агрегація

Крім інструментів метрик, важливо розуміти концепцію агрегацій. Агрегація — це техніка, за допомогою якої велика кількість вимірювань обʼєднується в точні або оцінені статистичні дані про події метрик, що відбулися протягом певного часового вікна. Протокол OTLP транспортує такі агреговані метрики. API OpenTelemetry надає стандартну агрегацію для кожного інструменту, яку можна перевизначити за допомогою Views. Проєкт OpenTelemetry прагне надавати стандартні агрегації, які підтримуються візуалізаторами та бекендами телеметрії.

На відміну від трасування запитів, яке призначене для фіксації життєвих циклів запитів та надання контексту до окремих частин запиту, метрики призначені для надання статистичної інформації в агрегаті. Деякі приклади використання метрик включають:

  • Звіт про загальну кількість байтів, прочитаних сервісом, за типом протоколу.
  • Звіт про загальну кількість прочитаних байтів та байтів на запит.
  • Звіт про тривалість системного виклику.
  • Звіт про розміри запитів для визначення тенденції.
  • Звіт про використання CPU або памʼяті процесом.
  • Звіт про середні значення балансу з рахунку.
  • Звіт про поточні активні запити, що обробляються.

Вигляди

Вигляд надає користувачам SDK гнучкість у налаштуванні вихідних даних метрик, що генеруються SDK. Ви можете налаштувати, які інструменти метрик повинні оброблятися або ігноруватися. Ви також можете налаштувати агрегацію та які атрибути ви хочете звітувати за допомогою метрик.

Підтримка мов

Метрики є стабільним сигналом у специфікації OpenTelemetry. Для окремих мовних реалізацій API та SDK метрик статус наступний:

LanguageMetrics
C++Stable
C#/.NETStable
Erlang/ElixirDevelopment
GoStable
JavaStable
JavaScriptStable
PHPStable
PythonStable
RubyDevelopment
RustBeta
SwiftDevelopment

Специфікація

Щоб дізнатися більше про метрики в OpenTelemetry, дивіться специфікацію метрик.