Kami menggunakan grafit untuk melacak riwayat pemanfaatan disk dari waktu ke waktu. Sistem peringatan kami melihat data dari grafit untuk memberi tahu kami ketika ruang kosong berada di bawah sejumlah blok tertentu.
Saya ingin mendapatkan peringatan yang lebih cerdas - yang benar-benar saya pedulikan adalah "berapa lama saya sebelum saya harus melakukan sesuatu tentang ruang kosong?", Misalnya jika tren menunjukkan bahwa dalam 7 hari saya akan kehabisan disk space lalu naikkan Peringatan, jika kurang dari 2 hari maka naikkan Kesalahan.
Antarmuka dasbor standar Graphite bisa sangat pintar dengan turunan dan band-band Holt Winters Confidence, tetapi sejauh ini saya belum menemukan cara untuk mengubahnya menjadi metrik yang dapat ditindaklanjuti. Saya juga baik-baik saja dengan menghitung angka dengan cara lain (cukup ekstrak angka mentah dari grafit dan jalankan skrip untuk melakukan itu).
Salah satu komplikasi adalah grafiknya tidak mulus - file dapat ditambahkan dan dihapus tetapi tren umum dari waktu ke waktu adalah penggunaan ruang disk meningkat, jadi mungkin ada kebutuhan untuk melihat minimum lokal (jika melihat metrik "disk bebas" ) dan menggambar tren di antara palung.
Adakah yang melakukan ini?
sumber
The volume of crap people have to store will expand to fill the disk available.
- Old Sysadmin AxiomJawaban:
Jujur "Hari Sampai Penuh" sebenarnya adalah metrik yang buruk - sistem file mendapatkan SANGAT BODOH ketika mereka mendekati pemanfaatan 100%.
Saya benar-benar merekomendasikan menggunakan batas tradisional 85%, 90%, 95% (peringatan, alarm, dan kritis Anda-benar-benar perlu memperbaiki-ini-SEKARANG, masing-masing) - ini akan memberi Anda banyak waktu peringatan pada disk modern (katakanlah drive 1TB: 85% dari terabyte masih menyisakan banyak ruang tetapi Anda menyadari masalah potensial, sebesar 90% Anda harus merencanakan perluasan disk atau mitigasi lainnya, dan pada 95% terabyte Anda memiliki 50GB tersisa dan harus benar-benar memperbaiki gerakan).
Ini juga memastikan bahwa sistem file Anda berfungsi lebih atau kurang optimal: ia memiliki banyak ruang kosong untuk berurusan dengan membuat / memodifikasi / memindahkan file besar.
Jika disk Anda tidak modern (atau pola penggunaan Anda melibatkan jumlah data yang lebih besar yang dilemparkan ke disk) Anda dapat dengan mudah menyesuaikan ambang batas.
Jika Anda masih menggunakan metrik "hari sampai penuh", Anda dapat mengekstrak data dari grafit dan menghitungnya. Alat pemantauan IBM menerapkan metrik beberapa hari-hingga-penuh yang dapat memberi Anda gagasan tentang bagaimana menerapkannya, tetapi pada dasarnya Anda mengambil tingkat perubahan antara dua poin dalam sejarah.
Demi kewarasan Anda, Anda dapat menggunakan turunan dari Graphite (yang akan memberi Anda tingkat perubahan dari waktu ke waktu) dan proyek menggunakan itu, tetapi jika Anda BENAR-BENAR ingin peringatan "lebih cerdas" Saya sarankan menggunakan tingkat perubahan harian dan mingguan (dihitung berdasarkan pemakaian puncak untuk hari / minggu).
Proyeksi spesifik yang Anda gunakan (laju perubahan terkecil, laju perubahan terbesar, laju perubahan rata-rata, rata-rata tertimbang, dll.) Tergantung pada lingkungan Anda. Alat-alat IBM menawarkan begitu banyak pandangan berbeda karena sangat sulit untuk menemukan pola satu ukuran untuk semua.
Pada akhirnya tidak ada algoritma yang akan sangat baik dalam melakukan perhitungan seperti yang Anda inginkan. Pemanfaatan disk didorong oleh pengguna, dan pengguna adalah antitesis dari model Aktor Rasional: Semua prediksi Anda dapat keluar dari jendela dengan satu orang gila yang memutuskan bahwa hari ini adalah hari mereka akan melakukan dump memori sistem lengkap ke sistem mereka. direktori rumah. Hanya karena.
sumber
Kami baru-baru ini meluncurkan solusi khusus untuk ini menggunakan regresi linier.
Dalam sistem kami, sumber utama kelelahan disk adalah file-file log liar yang tidak diputar.
Karena ini tumbuh sangat dapat diprediksi, kita dapat melakukan regresi linier pada pemanfaatan disk (misalnya,
z = numpy.polyfit(times, utilization, 1)
) kemudian menghitung tanda 100% yang diberikan model linier (misalnya,(100 - z[1]) / z[0]
)Implementasi yang dikerahkan terlihat seperti ini menggunakan ruby dan GSL, meskipun numpy bekerja dengan sangat baik.
Memberi makan ini data rata-rata pemanfaatan seminggu dengan interval 90 menit (112 poin) telah mampu memilih kandidat yang mungkin mengalami kelelahan disk tanpa terlalu banyak kebisingan sejauh ini.
Kelas dalam inti dibungkus dalam kelas yang menarik data dari pengintai, peringatan untuk mengendur dan mengirimkan beberapa telemetri runtime ke statsd. Saya akan meninggalkan sedikit karena itu khusus untuk infrastruktur kami.
sumber
(90 - z[1]) / z[0]
sebagai gantinya.