Saya secara bertahap mengintegrasikan Prometheus ke dalam alur kerja pemantauan saya, untuk mengumpulkan metrik terperinci tentang menjalankan infrastruktur.
Selama ini, saya perhatikan bahwa saya sering mengalami masalah yang aneh: kadang-kadang seorang eksportir yang seharusnya menarik data dari Prometheus menjadi tidak responsif. Mungkin karena kesalahan konfigurasi jaringan - tidak dapat diakses lagi - atau hanya karena eksportir macet.
Apa pun alasannya, saya menemukan bahwa beberapa data yang saya harapkan untuk dilihat di Prometheus tidak ada dan tidak ada apa pun dalam seri untuk periode waktu tertentu. Terkadang, satu eksportir gagal (waktu habis?) Juga tampaknya menyebabkan yang lain gagal (batas waktu pertama mendorong seluruh pekerjaan di atas batas waktu tingkat atas? Hanya berspekulasi).
Yang saya lihat adalah celah dalam seri, seperti yang ditunjukkan pada visualisasi di atas. Tidak ada dalam log ketika ini terjadi. Metrik-diri Prometheus juga tampak cukup mandul. Saya baru saja harus menggunakan cara manual untuk meniru apa yang dilakukan Prometheus dan melihat di mana ia rusak. Ini menjengkelkan. Pasti ada cara yang lebih baik! Meskipun saya tidak memerlukan lansiran waktu nyata, saya setidaknya ingin dapat melihat bahwa eksportir gagal mengirimkan data. Bahkan boolean "hei periksa data Anda" bendera akan menjadi awal.
Bagaimana cara saya mendapatkan informasi yang bermakna tentang Prometheus yang gagal mendapatkan data dari eksportir? Bagaimana saya mengerti mengapa ada celah tanpa harus melakukan simulasi manual pengumpulan data Prometheus? Apa praktik yang masuk akal dalam hal ini, mungkin bahkan ketika diperluas untuk memantau pengumpulan data secara umum, di luar Prometheus?
sumber
Jawaban:
Saya pikir Anda dapat melakukan semacam peringatan pada metrik
rate
dengan sesuatu seperti ini:Gagasan utamanya adalah memberi tahu kapan saja angka metrik berada pada 0 selama 3 menit, dengan nama metrik yang tepat dan label di suatu tempat yang memberi tahu dari mana eksportir itu datang itu harus memberi Anda informasi yang benar.
Memilih metrik yang tepat untuk dipantau oleh eksportir bisa jadi rumit, tanpa wawasan yang lebih banyak sulit untuk memberikan saran yang lebih baik dari kehampaan. Posting blog
ini bisa menjadi inspirasi juga untuk deteksi yang lebih umum.
sumber
time
metrik pada eksportir simpul misalnya akan dilakukan. Jika Anda memiliki cara yang lebih baik untuk memberi tahu eksportir yang gagal, jangan ragu untuk menambahkan jawabanAda beberapa alasan yang mungkin menyebabkan kesenjangan. Kemungkinan besar eksportir tidak dapat dijangkau dalam hal ini jangka
up
waktu akan menjadi 0. Anda dapat mengingatkan ini seperti ini (diambil dari https://prometheus.io/docs/alerting/rules/#templating ):Pada halaman status Anda juga harus melihat bahwa itu turun termasuk pesan kesalahan. Sayangnya tidak ada cara untuk melihat kesalahan masa lalu tetapi ada masalah untuk melacak ini: https://github.com/prometheus/prometheus/issues/2820
Server Prometheus Anda juga dapat kelebihan beban sehingga pengikisan terhenti yang juga akan menjelaskan kesenjangannya. Dalam hal ini Anda akan melihat
Storage needs throttling. Scrapes and rule evaluations will be skipped.
kesalahan dalam log dan meningkatkanprometheus_target_skipped_scrapes_total
metrik. Anda juga harus mengingatkan hal itu, misalnya:sumber
Saya tidak yakin apakah ini masalah yang sama yang Anda lihat. Tapi kami melihat celah acak ini untuk aplikasi Java yang tidak secara khusus mengatur pengaturan GC. Berarti kami melihat kesenjangan ketika pengumpulan data berhenti karena aktivitas untuk contoh berhenti saat JVM melakukan GC Penuh. Jika Anda menggunakan Java, ini bisa terjadi. Perbaikan kami adalah secara eksplisit menggunakan pengumpul sampah G1 (Java 8+) dengan batas yang ditentukan pada panjang aktivitas GC untuk mencegah kesenjangan waktu ini dalam pengumpulan data.
sumber