Kami makan gajah secara berpecah-belah. Strategi pemantauan kesihatan aplikasi dengan contoh

Hello!

Syarikat kami terlibat dalam pembangunan perisian dan sokongan teknikal seterusnya. Sokongan teknikal memerlukan bukan sahaja membetulkan ralat, tetapi memantau prestasi aplikasi kami.

Sebagai contoh, jika salah satu perkhidmatan telah ranap, maka anda perlu merekodkan masalah ini secara automatik dan mula menyelesaikannya, dan tidak menunggu pengguna yang tidak berpuas hati menghubungi sokongan teknikal.

Kami mempunyai sebuah syarikat kecil, kami tidak mempunyai sumber untuk mengkaji dan menyelenggara sebarang penyelesaian yang kompleks untuk memantau aplikasi, kami perlu mencari penyelesaian yang mudah dan berkesan.

Kami makan gajah secara berpecah-belah. Strategi pemantauan kesihatan aplikasi dengan contoh

Strategi pemantauan

Bukan mudah untuk menyemak kefungsian aplikasi; tugas ini bukan remeh, malah boleh dikatakan kreatif. Adalah amat sukar untuk mengesahkan sistem berbilang pautan yang kompleks.

Bagaimana anda boleh makan gajah? Hanya dalam bahagian! Kami menggunakan pendekatan ini untuk memantau aplikasi.

Intipati strategi pemantauan kami:

Pecahkan aplikasi anda kepada komponen.
Buat semakan kawalan untuk setiap komponen.

Komponen dianggap beroperasi jika semua pemeriksaan kawalannya dilakukan tanpa ralat. Sesuatu aplikasi dianggap sihat jika semua komponennya berfungsi.

Oleh itu, mana-mana sistem boleh diwakili sebagai pokok komponen. Komponen kompleks dipecahkan kepada yang lebih mudah. Komponen mudah mempunyai pemeriksaan.

Kami makan gajah secara berpecah-belah. Strategi pemantauan kesihatan aplikasi dengan contoh

Penanda aras tidak dimaksudkan untuk melaksanakan ujian berfungsi, ia bukan ujian unit. Pemeriksaan kawalan harus menyemak perasaan komponen pada masa semasa, sama ada terdapat semua sumber yang diperlukan untuk berfungsi dan sama ada terdapat sebarang masalah.

Tiada keajaiban; kebanyakan semakan perlu dibangunkan secara bebas. Tetapi jangan takut, kerana dalam kebanyakan kes satu semakan mengambil 5-10 baris kod, tetapi anda boleh melaksanakan sebarang logik dan anda akan memahami dengan jelas bagaimana semakan itu berfungsi.

Sistem pemantauan

Katakan kita membahagikan aplikasi kepada komponen, menghasilkan dan melaksanakan semakan untuk setiap komponen, tetapi apa yang perlu dilakukan dengan keputusan semakan ini? Bagaimanakah kita tahu jika sesetengah cek gagal?

Kami memerlukan sistem pemantauan. Dia akan melaksanakan tugas berikut:

  • Terima keputusan ujian dan gunakannya untuk menentukan status komponen.
    Secara visual, ini kelihatan seperti menyerlahkan pokok komponen. Komponen berfungsi bertukar hijau, yang bermasalah bertukar merah.
  • Lakukan pemeriksaan am di luar kotak.
    Sistem pemantauan boleh melakukan beberapa pemeriksaan sendiri. Mengapa mencipta semula roda, mari kita gunakannya. Sebagai contoh, anda boleh menyemak sama ada halaman tapak web dibuka atau pelayan sedang melakukan ping.
  • Hantar pemberitahuan masalah kepada pihak yang berminat.
  • Visualisasi data pemantauan, penyediaan laporan, graf dan statistik.

Penerangan ringkas tentang sistem ASMO

Adalah lebih baik untuk menerangkan dengan contoh. Mari kita lihat bagaimana pemantauan prestasi sistem ASMO diatur.

ASMO ialah sistem sokongan meteorologi automatik. Sistem ini membantu pakar perkhidmatan jalan memahami di mana dan bila perlu untuk merawat jalan dengan bahan penyah ais. Sistem mengumpul data dari titik kawalan jalan. Titik kawalan jalan ialah tempat di jalan di mana peralatan dipasang: stesen cuaca, kamera video, dsb. Untuk meramalkan situasi berbahaya, sistem menerima ramalan cuaca daripada sumber luar.

Kami makan gajah secara berpecah-belah. Strategi pemantauan kesihatan aplikasi dengan contoh

Jadi, komposisi sistem agak tipikal: laman web, ejen, peralatan. Mari kita mulakan pemantauan.

Memecahkan sistem kepada komponen

Komponen berikut boleh dibezakan dalam sistem ASMO:

1. Akaun peribadi
Ini adalah aplikasi web. Sekurang-kurangnya, anda perlu menyemak sama ada aplikasi itu tersedia di Internet.

2. Pangkalan Data
Pangkalan data menyimpan data yang penting untuk pelaporan, dan anda mesti memastikan bahawa sandaran pangkalan data berjaya dibuat.

3. Pelayan
Dengan pelayan yang kami maksudkan adalah perkakasan yang mana aplikasi dijalankan. Ia adalah perlu untuk menyemak status HDD, RAM, CPU.

4. Ejen
Ini ialah perkhidmatan Windows yang melaksanakan pelbagai tugas mengikut jadual. Sekurang-kurangnya, anda perlu menyemak sama ada perkhidmatan sedang berjalan.

5. Tugas ejen
Hanya mengetahui bahawa ejen bekerja tidak mencukupi. Ejen boleh bekerja, tetapi tidak melaksanakan tugas yang diberikan. Mari bahagikan komponen ejen kepada tugas dan semak sama ada setiap tugas ejen berfungsi dengan jayanya.

6. Titik kawalan jalan (bekas semua MPC)
Terdapat banyak titik kawalan jalan raya, jadi mari kita gabungkan semua MPC dalam satu komponen. Ini akan menjadikannya lebih mudah untuk membaca data pemantauan. Apabila melihat status komponen "sistem ASMO", ia akan segera jelas di mana masalahnya: dalam aplikasi, perkakasan atau dalam sistem kawalan maksimum.

7. Titik kawalan jalan (satu had maksimum)
Kami akan menganggap komponen ini boleh diservis jika semua peranti pada MPC ini boleh diservis.

8. Peranti
Ini ialah kamera video atau stesen cuaca yang dipasang pada had kepekatan maksimum. Ia adalah perlu untuk memeriksa sama ada peranti berfungsi dengan betul.

Dalam sistem pemantauan, pokok komponen akan kelihatan seperti ini:

Kami makan gajah secara berpecah-belah. Strategi pemantauan kesihatan aplikasi dengan contoh

Pemantauan Aplikasi Web

Jadi, kami telah membahagikan sistem kepada komponen, kini kami perlu membuat semakan untuk setiap komponen.

Untuk memantau aplikasi web kami menggunakan semakan berikut:

1. Menyemak pembukaan halaman utama
Pemeriksaan ini dilakukan oleh sistem pemantauan. Untuk melaksanakannya, kami menunjukkan alamat halaman, serpihan tindak balas yang dijangkakan dan masa pelaksanaan permintaan maksimum.

2. Menyemak tarikh akhir pembayaran domain
Pemeriksaan yang sangat penting. Apabila domain masih belum dibayar, pengguna tidak boleh membuka tapak. Menyelesaikan masalah mungkin mengambil masa beberapa hari, kerana... Perubahan DNS tidak digunakan serta-merta.

3. Menyemak sijil SSL
Pada masa kini, hampir semua laman web menggunakan protokol https untuk akses. Untuk protokol berfungsi dengan betul, anda memerlukan sijil SSL yang sah.

Di bawah ialah komponen "Akaun Peribadi" dalam sistem pemantauan:

Kami makan gajah secara berpecah-belah. Strategi pemantauan kesihatan aplikasi dengan contoh

Semua semakan di atas akan berfungsi untuk kebanyakan aplikasi dan tidak memerlukan pengekodan. Ini sangat keren kerana anda boleh mula memantau mana-mana aplikasi web dalam masa 5 minit. Di bawah ialah semakan tambahan yang boleh dilakukan untuk aplikasi web, tetapi pelaksanaannya lebih kompleks dan khusus aplikasi, jadi kami tidak akan membincangkannya dalam artikel ini.

Apa lagi yang anda boleh semak?

Untuk memantau aplikasi web anda dengan lebih lengkap, anda boleh melakukan semakan berikut:

  • Bilangan ralat JavaScript setiap tempoh
  • Bilangan ralat pada bahagian aplikasi web (bahagian belakang) untuk tempoh tersebut
  • Bilangan respons aplikasi web yang tidak berjaya (kod respons 404, 500, dsb.)
  • Purata masa pelaksanaan pertanyaan

Memantau perkhidmatan windows (ejen)

Dalam sistem ASMO, ejen memainkan peranan sebagai penjadual tugas, yang melaksanakan tugas yang dijadualkan di latar belakang.

Jika semua tugas ejen berjaya diselesaikan, ejen berfungsi dengan baik. Ternyata untuk memantau ejen, anda perlu memantau tugasnya. Oleh itu, kami membahagikan komponen "Agen" kepada tugas. Untuk setiap tugas, kami akan mencipta komponen berasingan dalam sistem pemantauan, di mana komponen "Agen" akan menjadi "ibu bapa".

Kami membahagikan komponen Ejen kepada komponen anak (tugas):

Kami makan gajah secara berpecah-belah. Strategi pemantauan kesihatan aplikasi dengan contoh

Jadi, kami telah memecahkan komponen yang kompleks kepada beberapa komponen yang mudah. Sekarang kita perlu membuat semakan untuk setiap komponen mudah. Sila ambil perhatian bahawa komponen induk "Ejen" tidak akan mempunyai sebarang semakan, kerana sistem pemantauan akan mengira statusnya secara bebas berdasarkan status komponen anaknya. Dalam erti kata lain, jika semua tugasan berjaya diselesaikan, maka ejen itu berjalan dengan jayanya.

Terdapat lebih daripada seratus tugasan dalam sistem ASMO, adakah perlu membuat semakan unik untuk setiap tugas? Sudah tentu, kawalan akan menjadi lebih baik jika kita membuat dan melaksanakan semakan khas kita sendiri untuk setiap tugas ejen, tetapi dalam kebanyakan kes ia sudah cukup untuk menggunakan semakan universal.

Sistem ASMO hanya menggunakan semakan universal untuk tugasan dan ini sudah cukup untuk memantau prestasi sistem.

Menyemak kemajuan
Semakan yang paling mudah dan berkesan ialah semakan pelaksanaan. Semakan mengesahkan bahawa tugasan selesai tanpa ralat. Semua tugas mempunyai semakan ini.

Memeriksa algoritma

Selepas setiap pelaksanaan tugas, anda perlu menghantar hasil semakan SUCCESS kepada sistem pemantauan jika pelaksanaan tugas berjaya, atau ERROR jika pelaksanaan selesai dengan ralat.

Semakan ini boleh mengesan masalah berikut:

  1. Tugasan berjalan tetapi gagal dengan ralat.
  2. Tugas telah berhenti berjalan, sebagai contoh, ia telah beku.

Mari kita lihat bagaimana masalah ini diselesaikan dengan lebih terperinci.

Isu 1 – Tugasan berjalan tetapi gagal dengan ralat
Di bawah ialah kes di mana tugasan dijalankan tetapi gagal antara 14:00 dan 16:00.

Kami makan gajah secara berpecah-belah. Strategi pemantauan kesihatan aplikasi dengan contoh

Angka tersebut menunjukkan bahawa apabila tugas gagal, isyarat dihantar dengan serta-merta ke sistem pemantauan dan status semakan yang sepadan dalam sistem pemantauan menjadi penggera.

Sila ambil perhatian bahawa dalam sistem pemantauan, status komponen bergantung pada status pengesahan. Status penggera semakan akan menukar semua komponen peringkat lebih tinggi kepada penggera, lihat rajah di bawah.

Kami makan gajah secara berpecah-belah. Strategi pemantauan kesihatan aplikasi dengan contoh

Masalah 2 - Tugas berhenti melaksanakan (beku)
Bagaimanakah sistem pemantauan memahami bahawa tugasan tersekat?

Keputusan semakan mempunyai tempoh sah, contohnya, 1 jam. Jika satu jam berlalu dan tiada keputusan ujian baharu, sistem pemantauan akan menetapkan status ujian kepada penggera.

Kami makan gajah secara berpecah-belah. Strategi pemantauan kesihatan aplikasi dengan contoh

Dalam gambar di atas, lampu telah ditutup pada pukul 14:00 petang. Pada pukul 15:00, sistem pemantauan akan mengesan bahawa keputusan ujian (dari 14:00) busuk, kerana Masa perkaitan telah tamat tempoh (satu jam), tetapi tiada keputusan baharu dan akan menukar semakan kepada status penggera.

Pada pukul 16:00 lampu dihidupkan semula, program akan menyelesaikan tugas dan menghantar hasil pelaksanaan kepada sistem pemantauan, status ujian akan kembali berjaya.

Apakah masa perkaitan semak yang perlu saya gunakan?

Masa perkaitan mestilah lebih besar daripada tempoh pelaksanaan tugas. Saya mengesyorkan menetapkan masa perkaitan 2-3 kali lebih lama daripada tempoh pelaksanaan tugas. Ini adalah perlu untuk mengelak daripada menerima pemberitahuan palsu apabila, sebagai contoh, tugas mengambil masa lebih lama daripada biasa atau seseorang memuatkan semula program.

Menyemak kemajuan

Sistem ASMO mempunyai tugas "Muat Ramalan", yang cuba memuat turun ramalan baharu daripada sumber luaran sekali sejam. Masa yang tepat apabila ramalan baharu muncul dalam sistem luaran tidak diketahui, tetapi diketahui bahawa ini berlaku 2 kali sehari. Ternyata jika tidak ada ramalan baru selama beberapa jam, maka ini adalah perkara biasa, tetapi jika tidak ada ramalan baru selama lebih dari sehari, maka sesuatu telah pecah di suatu tempat. Sebagai contoh, format data dalam sistem ramalan luaran mungkin berubah, itulah sebabnya ASMO tidak akan melihat keluaran ramalan baharu.

Memeriksa algoritma

Tugasan menghantar hasil semakan SUCCESS ke sistem pemantauan apabila ia berjaya mendapat kemajuan (memuat turun ramalan cuaca baharu). Jika tiada kemajuan atau ralat berlaku, maka tiada apa yang dihantar ke sistem pemantauan.

Cek mesti mempunyai selang perkaitan supaya pada masa ini ia dijamin menerima kemajuan baharu.

Kami makan gajah secara berpecah-belah. Strategi pemantauan kesihatan aplikasi dengan contoh

Sila ambil perhatian bahawa kami akan mengetahui tentang masalah dengan kelewatan, kerana sistem pemantauan menunggu sehingga tempoh sah keputusan imbasan terakhir tamat. Oleh itu, tempoh sah semakan tidak perlu dibuat terlalu lama.

Pemantauan pangkalan data

Untuk mengawal pangkalan data dalam sistem ASMO, kami melakukan semakan berikut:

  1. Mengesahkan penciptaan sandaran
  2. Menyemak ruang cakera kosong

Mengesahkan penciptaan sandaran
Dalam kebanyakan aplikasi, adalah penting untuk mempunyai sandaran pangkalan data terkini supaya jika pelayan gagal, anda boleh menggunakan atur cara ke pelayan baharu.

ASMO mencipta salinan sandaran sekali seminggu dan menghantarnya ke storan. Apabila prosedur ini berjaya diselesaikan, hasil semakan kejayaan dihantar ke sistem pemantauan. Keputusan pengesahan sah selama 9 hari. Itu. Untuk mengawal penciptaan sandaran, mekanisme "semakan kemajuan", yang kami bincangkan di atas, digunakan.

Menyemak ruang cakera kosong
Jika tidak ada ruang kosong yang mencukupi pada cakera, pangkalan data tidak akan dapat berfungsi dengan baik, jadi adalah penting untuk mengawal jumlah ruang kosong.

Adalah mudah untuk menggunakan metrik untuk menyemak parameter berangka.

Metrik ialah pembolehubah berangka, yang nilainya dihantar ke sistem pemantauan. Sistem pemantauan menyemak nilai ambang dan mengira status metrik.

Di bawah ialah gambar tentang rupa komponen "Pangkalan Data" dalam sistem pemantauan:

Kami makan gajah secara berpecah-belah. Strategi pemantauan kesihatan aplikasi dengan contoh

Pemantauan pelayan

Untuk memantau pelayan kami menggunakan semakan dan metrik berikut:

1. Ruang cakera kosong
Jika ruang cakera kehabisan, aplikasi tidak akan dapat berfungsi. Kami menggunakan 2 nilai ambang: tahap pertama ialah AMARAN, tahap kedua ialah PENGGERA.

2. Purata nilai RAM dalam peratus sejam
Kami menggunakan purata setiap jam kerana... kami tidak berminat dengan perlumbaan yang jarang berlaku.

3. Purata peratusan CPU sejam
Kami menggunakan purata setiap jam kerana... kami tidak berminat dengan perlumbaan yang jarang berlaku.

4. Semakan ping
Memeriksa sama ada pelayan dalam talian. Sistem pemantauan boleh melakukan semakan ini; tidak perlu menulis kod.

Di bawah ialah gambar tentang rupa komponen "Pelayan" dalam sistem pemantauan:

Kami makan gajah secara berpecah-belah. Strategi pemantauan kesihatan aplikasi dengan contoh

Pemantauan peralatan

Saya akan memberitahu anda bagaimana data diperolehi. Bagi setiap titik kawalan jalan (MPC) terdapat tugas dalam perancang tugas, contohnya, "Tinjauan MPC M2 km 200". Tugasan menerima data daripada semua peranti MPC setiap 30 minit.

Masalah saluran komunikasi
Kebanyakan peralatan terletak di luar bandar; rangkaian GSM digunakan untuk penghantaran data, yang tidak berfungsi dengan stabil (ada rangkaian, atau tidak ada).

Oleh kerana kegagalan rangkaian yang kerap, pada mulanya, menyemak tinjauan MPC dalam pemantauan kelihatan seperti ini:

Kami makan gajah secara berpecah-belah. Strategi pemantauan kesihatan aplikasi dengan contoh

Ia menjadi jelas bahawa ini bukan pilihan yang berfungsi, kerana terdapat banyak pemberitahuan palsu tentang masalah. Kemudian diputuskan untuk menggunakan "semakan kemajuan" untuk setiap peranti, i.e. Hanya isyarat kejayaan dihantar ke sistem pemantauan apabila peranti ditinjau tanpa ralat. Masa perkaitan ditetapkan kepada 5 jam.

Kami makan gajah secara berpecah-belah. Strategi pemantauan kesihatan aplikasi dengan contoh

Sekarang pemantauan menghantar pemberitahuan tentang masalah hanya apabila peranti tidak boleh ditinjau selama lebih daripada 5 jam. Dengan tahap kebarangkalian yang tinggi, ini bukan penggera palsu, tetapi masalah sebenar.

Di bawah ialah gambar tentang rupa peralatan dalam sistem pemantauan:

Kami makan gajah secara berpecah-belah. Strategi pemantauan kesihatan aplikasi dengan contoh

Penting!
Apabila rangkaian GSM berhenti berfungsi, semua peranti MDC tidak ditinjau. Untuk mengurangkan bilangan e-mel daripada sistem pemantauan, jurutera kami melanggan pemberitahuan tentang masalah komponen dengan jenis "MPC" dan bukannya "Peranti". Ini membolehkan anda menerima satu pemberitahuan untuk setiap MPC, dan bukannya menerima pemberitahuan berasingan untuk setiap peranti.

Skim pemantauan ASMO akhir

Mari kita susun segala-galanya dan lihat jenis skim pemantauan yang kita ada.

Kami makan gajah secara berpecah-belah. Strategi pemantauan kesihatan aplikasi dengan contoh

Kesimpulan

Mari kita ringkaskan.
Apakah yang diberikan oleh pemantauan prestasi ASMO kepada kami?

1. Masa penghapusan kecacatan telah berkurangan
Kami sebelum ini pernah mendengar tentang kecacatan daripada pengguna, tetapi tidak semua pengguna melaporkan kecacatan. Kebetulan kami mengetahui tentang kerosakan komponen sistem seminggu selepas ia muncul. Kini sistem pemantauan memberitahu kami tentang masalah sebaik sahaja masalah dikesan.

2. Kestabilan sistem telah meningkat
Oleh kerana kecacatan mula dihapuskan lebih awal, sistem secara keseluruhan mula berfungsi dengan lebih stabil.

3. Mengurangkan bilangan panggilan ke sokongan teknikal
Banyak masalah kini telah diselesaikan sebelum pengguna mengetahuinya. Pengguna mula kurang kerap menghubungi sokongan teknikal. Semua ini mempunyai kesan yang baik terhadap reputasi kita.

4. Meningkatkan kesetiaan pelanggan dan pengguna
Pelanggan melihat perubahan positif dalam kestabilan sistem. Pengguna menghadapi lebih sedikit masalah menggunakan sistem.

5. Kurangkan kos sokongan teknikal
Kami telah berhenti melakukan sebarang pemeriksaan manual. Sekarang semua semakan adalah automatik. Sebelum ini, kami belajar tentang masalah daripada pengguna; selalunya sukar untuk memahami masalah yang dibincangkan pengguna. Kini, kebanyakan masalah dilaporkan oleh sistem pemantauan; pemberitahuan mengandungi data teknikal, yang sentiasa menjelaskan perkara yang salah dan di mana.

Penting!
Anda tidak boleh memasang sistem pemantauan pada pelayan yang sama tempat aplikasi anda dijalankan. Jika pelayan terputus, aplikasi akan berhenti berfungsi dan tidak akan ada sesiapa yang memberitahu mengenainya.

Sistem pemantauan mesti dijalankan pada pelayan berasingan di pusat data lain.

Jika anda tidak mahu menggunakan pelayan khusus dalam pusat data baharu, anda boleh menggunakan sistem pemantauan awan. Syarikat kami menggunakan sistem pemantauan awan Zidium, tetapi anda boleh menggunakan mana-mana sistem pemantauan lain. Kos sistem pemantauan awan adalah lebih rendah daripada menyewa pelayan baharu.

Cadangan:

  1. Pecahkan aplikasi dan sistem dalam bentuk pokok komponen dengan seberapa terperinci yang mungkin, jadi mudah untuk memahami di mana dan apa yang rosak, dan kawalan akan menjadi lebih lengkap.
  2. Untuk menyemak kefungsian komponen, gunakan ujian. Adalah lebih baik menggunakan banyak semakan mudah daripada satu semakan kompleks.
  3. Konfigurasikan ambang metrik pada sisi sistem pemantauan, bukannya menulisnya dalam kod. Ini akan menyelamatkan anda daripada perlu menyusun semula, mengkonfigurasi semula atau memulakan semula aplikasi.
  4. Untuk semakan tersuai, gunakan margin masa perkaitan untuk mengelak daripada menerima pemberitahuan palsu kerana sesetengah semakan mengambil masa lebih lama untuk diselesaikan daripada biasa.
  5. Cuba buat komponen dalam sistem pemantauan bertukar merah hanya apabila pasti ada masalah. Jika mereka bertukar merah untuk apa-apa, maka anda akan berhenti memberi perhatian kepada pemberitahuan sistem pemantauan, maknanya akan hilang.

Jika anda belum menggunakan sistem pemantauan, mulakan! Ia tidak sesukar yang disangka. Cuba lihat pokok bahan hijau yang anda tanam sendiri.

nasib baik.

Sumber: www.habr.com

Tambah komen