Sobes.tech
Middle

Шумо кадом намудҳои метрик дар Prometheus медонед?

sobes.tech AI

Ҷавоб аз AI

Prometheus podporує чотири основні типи метрик:

  1. Лічильник (Counter): Монотонно зростаюче значення, яке може лише збільшуватися (або скинутися до нуля при перезапуску процесу). Використовується для підрахунку інкрементальних подій, таких як кількість запитів, помилок або завершених задач.
    // Приклад у Go
    var requestsTotal = prometheus.NewCounter(
        prometheus.CounterOpts{
            Name: "http_requests_total",
            Help: "Загальна кількість HTTP-запитів.",
        },
    )
    
  2. Датчик (Gauge): Будь-яке числове значення, яке може як збільшуватися, так і зменшуватися. Використовується для вимірювання поточного стану чогось, наприклад, навантаження ЦПУ, використання пам’яті, кількості активних користувачів або розміру черги.
    # Приклад у Python
    from prometheus_client import Gauge
    
    cpu_usage = Gauge('cpu_usage_percent', 'Поточне використання ЦП у відсотках')
    cpu_usage.set(55.5)
    
  3. Гістограма (Histogram): Вимірює розподіл вибірок (наприклад, час відповіді запитів) і групує їх за налаштовуваними кошиками (buckets). Дозволяє отримати дані про кількість вибірок у кожному кошику та їх суму. Використовується для аналізу затримок.
    // Приклад у Java
    import io.prometheus.client.Histogram;
    
    static final Histogram requestLatencies = Histogram.build()
        .name("http_request_duration_seconds")
        .help("Тривалість запиту в секундах.")
        .buckets(0.1, 0.5, 1.0, 2.5, 5.0, 10.0) // Кошики
        .register();
    
  4. Зведення (Summary): Подібна гістограмі, але на стороні клієнта обчислює налаштовувані квантили розподілу вибірок у ковзному часовому вікні. Також надає загальну кількість вибірок та їх суму. Підходить для вимірювання затримок, коли важливі квантили, але слід враховувати, що обчислення на клієнті вимагає більшої обчислювальної потужності і може призвести до менш точних квантилів при агрегації.
    # Приклад у Ruby
    require 'prometheus/client'
    
    requests_summary = Prometheus::Client::Summary.new(:request_duration_seconds, 'Тривалість запиту в секундах.')
    

Вибір типу метрики залежить від характеру даних, які потрібно відстежувати.