Sudah 5 bulan sejak Anda mengajukan pertanyaan ini, dan mudah-mudahan Anda menemukan sesuatu. Saya akan membuat beberapa saran berbeda di sini, berharap Anda dapat menggunakannya di skenario lain.
Untuk kasus penggunaan Anda, saya tidak berpikir Anda perlu melihat algoritma deteksi lonjakan.
Jadi begini: Mari kita mulai dengan gambar kesalahan yang terjadi pada timeline:
Yang Anda inginkan adalah indikator numerik, "ukuran" seberapa cepat kesalahan terjadi. Dan ukuran ini harus sesuai dengan ambang batas - sysadmin Anda harus dapat menetapkan batas yang mengontrol dengan kesalahan sensitivitas apa yang berubah menjadi peringatan.
Ukur 1
Anda menyebutkan "paku", cara termudah untuk mendapatkan lonjakan adalah menggambar histogram setiap interval 20 menit:
Sysadmin Anda akan menetapkan sensitivitas berdasarkan ketinggian bar, yaitu kesalahan yang paling dapat ditoleransi dalam interval 20 menit.
(Pada titik ini Anda mungkin bertanya-tanya apakah panjang jendela 20 menit itu tidak dapat disesuaikan. Dapat, dan Anda dapat menganggap panjang jendela sebagai pendefinisian kata bersama dalam kesalahan frasa yang muncul bersama-sama .)
Apa masalah dengan metode ini untuk skenario khusus Anda? Nah, variabel Anda adalah bilangan bulat, mungkin kurang dari 3. Anda tidak akan menetapkan ambang ke 1, karena itu hanya berarti "setiap kesalahan adalah peringatan" yang tidak memerlukan algoritma. Jadi pilihan Anda untuk ambang batas akan menjadi 2 dan 3. Ini tidak memberikan sysadmin Anda banyak kontrol halus.
Ukur 2
Alih-alih menghitung kesalahan di jendela waktu, catat jumlah menit antara kesalahan saat ini dan terakhir. Ketika nilai ini menjadi terlalu kecil, itu berarti kesalahan Anda menjadi terlalu sering dan Anda perlu meningkatkan peringatan.
Sysadmin Anda mungkin akan menetapkan batas pada 10 (yaitu jika kesalahan terjadi kurang dari 10 menit, itu masalah) atau 20 menit. Mungkin 30 menit untuk sistem misi yang kurang kritis.
Ukuran ini memberikan lebih banyak fleksibilitas. Tidak seperti Measure 1, di mana ada set kecil nilai yang bisa Anda gunakan, sekarang Anda memiliki ukuran yang memberikan nilai 20-30 bagus. Karena itu sysadmin Anda akan memiliki lebih banyak ruang untuk fine-tuning.
Nasihat yang ramah
Ada cara lain untuk mendekati masalah ini. Daripada melihat frekuensi kesalahan, dimungkinkan untuk memprediksi kesalahan sebelum terjadi.
Anda menyebutkan bahwa perilaku ini terjadi pada satu server, yang diketahui memiliki masalah kinerja. Anda dapat memantau Indikator Kinerja Utama tertentu pada mesin itu, dan minta mereka memberi tahu Anda kapan kesalahan akan terjadi. Khususnya, Anda akan melihat penggunaan CPU, penggunaan memori, dan KPI yang berkaitan dengan Disk I / O. Jika penggunaan CPU Anda melampaui 80%, sistem akan melambat.
(Saya tahu Anda mengatakan Anda tidak ingin menginstal perangkat lunak apa pun, dan memang benar bahwa Anda dapat melakukan ini menggunakan PerfMon. Tetapi ada alat gratis di luar sana yang akan melakukan ini untuk Anda, seperti Nagios dan Zenoss .)
Dan untuk orang-orang yang datang ke sini berharap menemukan sesuatu tentang deteksi lonjakan dalam rangkaian waktu:
Deteksi Spike dalam Time-Series
x1, x2, . . .
M.k= ( 1 - α ) Mk - 1+ α xk
αxk
Jika nilai baru Anda telah bergerak terlalu jauh dari rata-rata bergerak, misalnya
xk- M.kM.k> 20 %
maka Anda memunculkan peringatan.
Rata-rata bergerak bagus saat bekerja dengan data waktu-nyata. Tapi misalkan Anda sudah memiliki banyak data dalam sebuah tabel, dan Anda hanya ingin menjalankan query SQL untuk menemukan paku.
Saya akan menyarankan:
- Hitung nilai rata - rata deret waktu Anda
- σ
- 2 σ
Lebih banyak hal menyenangkan tentang seri waktu
Banyak seri waktu nyata menunjukkan perilaku siklik. Ada model yang disebut ARIMA yang membantu Anda mengekstrak siklus ini dari seri waktu Anda.
Rata-rata bergerak yang mempertimbangkan perilaku siklik: Holt dan Winters