Graphite berhenti mengumpulkan data secara acak


8

Kami memiliki server Graphite untuk mengumpulkan data melalui collectd, statsd, JMXTrans ... Sejak beberapa hari, kami sering memiliki lubang di data kami. Menggali data yang masih kita miliki, kita dapat melihat peningkatan ukuran cache karbon (dari 50K ke 4M). Kami tidak melihat peningkatan dalam jumlah metrik yang dikumpulkan (metricsReceived stabil di sekitar 300K). Kami memiliki peningkatan jumlah kueri dari 1000 menjadi 1500 rata-rata.

Anehnya, cpuUsage berkurang sedikit dari 100% (kami memiliki 4 CPU) hingga 50% ketika ukuran cache meningkat.

Anehnya lagi, kita melihat peningkatan jumlah jika oktet membaca dari disk, dan penurunan jumlah oktet yang ditulis.

Kami memiliki konfigurasi karbon sebagian besar dengan nilai default:

  • MAX_CACHE_SIZE = inf
  • MAX_UPDATES_PER_SECOND = 5000
  • MAX_CREATES_PER_MINUTE = 2000

Jelas, sesuatu telah berubah dalam sistem kami, tetapi kami tidak mengerti apa, atau bagaimana kami dapat menemukan penyebab ini ...

Ada bantuan?


Saya biasanya mulai dari pendekatan dasar ke masalah grafit; apakah ada ruang pada disk untuk menulis? Sudahkah izin direktori data berubah sama sekali? Apakah ada perubahan pada pengguna daemon yang mengumpulkan statistik? Jika tidak ada penyebab yang jelas, sangat mungkin Anda memiliki korupsi RRD, dan mungkin perlu menemukan cara untuk mengekspor apa yang Anda miliki, dan mulai mengumpulkan metrik dari awal.
Stephan

Kami memeriksa ruang disk dan izin, tidak ada yang aneh di sana. Tidak ada perubahan dalam daemon yang mengumpulkan data, mungkin peningkatan jumlah metrik, tetapi tidak sebesar itu. Kami sedang mencari korupsi WSP.
Guillaume

Jawaban:


2

Ini bukan bug tumpukan grafit, tetapi lebih merupakan hambatan IO, kemungkinan besar karena penyimpanan Anda tidak memiliki IOPS yang cukup tinggi. Karena itu, antrian terus bertambah, dan meluap pada 4M. Pada titik itu, Anda kehilangan banyak data yang antri, yang direfleksikan nanti, sebagai 'celah' acak dalam grafik Anda. Sistem Anda tidak dapat mengikuti skala di mana ia menerima metrik. Itu terus mengisi dan meluap .

Anehnya, cpuUsage berkurang sedikit dari 100% (kami memiliki 4 CPU) hingga 50% ketika ukuran cache meningkat.

Ini karena sistem Anda mulai bertukar dan CPU mendapatkan banyak 'waktu idle', karena menunggu IO.

Untuk menambahkan konteks, saya memiliki 500 IOPS yang disediakan di aws pada sistem di mana saya menerima beberapa metrik 40K. Antrian stabil di 50K.


Saya melihat masalah yang sama persis seperti yang dijelaskan dalam pertanyaan. Namun, penggunaan disk minimal (dilaporkan sebagai 0% -3% di atas) dan saya hanya mendorong ~ 80 metrik / s melalui StatsD. Karena itu, sepertinya tidak mungkin saya memiliki hambatan IO. Adakah yang tahu apa yang menyebabkan masalah ini?
heyman

1

Penjawab lain menyebutkan disket i / o bottleneck. Saya akan berbicara tentang hambatan jaringan sebagai penyebab lain dari ini.

Di lingkungan saya, kami menjalankan sekelompok server UI ujung depan (httpd, memcached); sekelompok relai lapisan tengah lainnya (karbon-c-relay yang melakukan penerusan dan agregasi); dan lapisan backend (httpd, memcached, carbon-c-relay, dan carbon-cache.) Masing-masing cluster ini terdiri dari beberapa instance dalam EC2 dan dalam proses total 15 juta metrik per menit.

Kami memiliki masalah ketika kami melihat celah untuk metrik yang dihasilkan oleh fungsi "penjumlahan" agregat, dan juga nilai agregat tidak benar (terlalu rendah). Masalahnya akan teratasi dengan memulai kembali carbon-c-relay di lapisan tengah, tetapi celah akan mulai muncul lagi setelah beberapa jam.

Kami memiliki agregasi yang terjadi di lapisan tengah dan lapisan backend (lapisan backend mengagregasi metrik agregat yang diteruskan dari lapisan tengah).

Host lapisan tengah tidak terikat cpu, tidak terikat disk, dan tidak ada batasan pada memori. Ini dikombinasikan dengan fakta bahwa masalah hanya akan muncul beberapa jam setelah memulai kembali proses relay, berarti bahwa ada hambatan jaringan. Solusi kami adalah menambahkan lebih banyak host ke lapisan tengah. Melakukan hal ini secara instan menghasilkan metrik teragregasi yang bekerja dengan benar dan tidak mengalami kesenjangan.

Tempat persis di tumpukan jaringan di mana kemacetan itu? Aku tidak bisa memberitahumu. Itu bisa saja di host linux; itu mungkin di sisi Amazon.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.