Bagaimana cara kerja histogram Prometheus?

Terjemahan artikel disiapkan sebelum dimulainya kursus "Pemantauan dan Penebangan: Zabbix, Prometheus, ELK" .




Sebelumnya kami melihat penghitung , pengukur, dan ringkasan . Sekarang mari kita bicara tentang bagaimana histogram bekerja di Prometheus.
Histogram memiliki beberapa kesamaan dengan ringkasan. Histogram adalah kombinasi dari berbagai penghitung. Seperti metrik ringkasan, metrik histogram digunakan untuk melacak pengukuran dimensi peristiwa, seringkali durasinya, menggunakan metode ini observe. Alat ketepatan waktu biasanya sama dengan buletin. Perbedaannya adalah pemrosesan kuantil.

Berikut ini adalah contoh format label Prometheus untuk pemaparanhandler :

# HELP prometheus_http_request_duration_seconds Histogram of latencies for HTTP requests.
# TYPE prometheus_http_request_duration_seconds histogram
prometheus_http_request_duration_seconds_bucket{handler="/",le="0.1"} 25547
prometheus_http_request_duration_seconds_bucket{handler="/",le="0.2"} 26688
prometheus_http_request_duration_seconds_bucket{handler="/",le="0.4"} 27760
prometheus_http_request_duration_seconds_bucket{handler="/",le="1"} 28641
prometheus_http_request_duration_seconds_bucket{handler="/",le="3"} 28782
prometheus_http_request_duration_seconds_bucket{handler="/",le="8"} 28844
prometheus_http_request_duration_seconds_bucket{handler="/",le="20"} 28855
prometheus_http_request_duration_seconds_bucket{handler="/",le="60"} 28860
prometheus_http_request_duration_seconds_bucket{handler="/",le="120"} 28860
prometheus_http_request_duration_seconds_bucket{handler="/",le="+Inf"} 28860
prometheus_http_request_duration_seconds_sum{handler="/"} 1863.80491025699
prometheus_http_request_duration_seconds_count{handler="/"} 28860

_sumdan mereka _countbekerja dengan cara yang persis sama dengan ringkasan, dan dapat digunakan untuk mendapatkan waktu eksekusi rata-rata selama lima menit terakhir:

 rate(prometheus_http_request_duration_seconds_sum[5m]
/
  rate(prometheus_http_request_duration_seconds_count[5m])

Namun, ada beberapa kasus yang sangat jarang dimana tidak _sumada, misalnya, dalam beberapa metrik dari eksportir MySQLd.

Bagian penting dari histogram adalah deret waktu _bucket, yang sebenarnya merupakan bagian histogram dari metrik. Lebih khusus, ini adalah penghitung yang membentuk histogram kumulatif. lemenunjukkan kurang dari atau sama dengan. Dengan demikian, 2.686 permintaan mengambil kurang dari atau sama dengan 200 ms, 27.760 permintaan mengambil kurang dari atau sama dengan 400 ms, dan ada total 28.860 permintaan. Nilai-nilai dalam bucket akan non-menurun secara monoton, dan +Infbucket akan memiliki nilai terbesar. +Infember harus selalu ada dan sesuai dengan nilainya _count.

Untuk menghitung, katakanlah, kuantil 0,9 (persentil ke-90), Anda harus menggunakan:

histogram_quantile(0.9, 
  rate(prometheus_http_request_duration_seconds_bucket[5m])
)

Satu keuntungan besar dari histogram dibandingkan dengan ringkasan adalah Anda dapat mengagregasi ember sebelum menghitung kuantil - berhati-hati agar tidak kehilangan label le:

histogram_quantile(0.9, 
  sum without (handler)(
    rate(prometheus_http_request_duration_seconds_bucket[5m])
  )
)

Selain agregasi, histogram lebih murah untuk klien, karena penghitungnya bertambah dengan cepat. Jadi mengapa tidak selalu menggunakan histogram? Ada jawaban panjang, tetapi versi singkatnya adalah bahwa dengan histogram Anda harus memilih ember Anda terlebih dahulu, dan biaya ditransfer dari klien ke Prometheus itu sendiri karena jumlah elemen ember. Sepuluh kotak secara default mencakup layanan web biasa dengan penundaan mulai dari milidetik hingga sedetik, dan dalam beberapa kasus Anda mungkin perlu mengubahnya. Di sini, misalnya, mereka didefinisikan ulang untuk lebih baik melacak permintaan PromQL, yang secara default memiliki batas waktu dua menit. Memiliki lebih dari selusin ember-s akan memberikan hasil yang lebih akurat, tetapi juga dapat menghasilkan banyak seri waktu. Terutama dalam kombinasi dengan tag lain.

Ketika menggunakan sistem pemantauan real-time seperti Prometheus, tujuannya adalah untuk memberikan nilai analitis yang cukup untuk membuat keputusan teknik berdasarkan hal itu. Misalnya, untuk mengetahui bahwa penundaan persentil ke-90 telah meningkat sebesar 50 ms lebih penting daripada mengetahui jika sekarang 562 ms atau 563 ms, dan biasanya sepuluh ember-s sudah cukup untuk ini. Jika Anda membutuhkan jawaban yang tepat, Anda selalu dapat menghitungnya nanti dari log Anda. Jika ada terlalu banyak bucket, ember dapat dibuang selama pemrosesan data, seperti yang ditunjukkan sebelumnya . Dalam kasus yang lebih ekstrem, Anda dapat sepenuhnya mengabaikan rangkaian _buckets dan mengandalkan rata-rata _sumdan _count.

Kesimpulannya, histogram memungkinkan kuantil agregat untuk dihitung, meskipun jumlah elemen harus diperhitungkan. Ingatlah bahwa ringkasan tanpa kuantil adalah opsi yang lebih murah jika Anda tidak memerlukan histogram.



Lebih banyak tentang kursus



All Articles