Pemantauan perkhidmatan aplikasi merupakan bahagian penting dalam sistem operasi dan penyelenggaraan pintar. Dalam sistem UAV, siasatan rangka kerja peningkatan middleware (MOF) menyediakan potret aplikasi dan fungsi pengumpulan data prestasi Fungsi pengumpulan data terutamanya mengumpul empat jenis data: data masa nyata, data potret, penjanaan data pautan panggilan dan data analisis data benang. . Untuk mencapai pengumpulan data masa nyata, UAVStack mereka bentuk rangka kerja CaptureFramework untuk menyediakan gelagat tangkapan data bersatu dan keupayaan untuk menjana hasil tangkapan.
JavaAssist
Sistem tangkapan monitor
precap/docap
Mata tangkapan: Menyokong titik tangkap Tomcat, MSCP, Springboot dan Jeti.
Tunggal UAVServer: Sebagai titik masuk tangkapan bersatu, ia menyediakan kaedah segerak dan tak segerak.
StandardMonitor: Ia melaksanakan antara muka Monitor dan merupakan kelas pelaksanaan tangkapan data masa nyata Ia menyediakan kaedah doCapture, yang bertanggungjawab untuk kelakuan tangkapan dan menjana hasil tangkapan.
MonitorElemCapHandler: Logik rangkak yang berbeza dan antara muka biasa titik rangkak melaksanakan logik pengebumian yang berbeza, menyediakan kaedah gelagat rampasan, preCap dan doCap, dan kaedah menjana hasil rangkakan.
StandardMonitorRepository: Menyimpan struktur data tangkapan data masa nyata.
DataObserver: Mendedahkan data antara muka JMX/HTTP.
Pantau pemantauan masa nyata terutamanya bermula dari kelas DefaultMonitorSupporter untuk memulakan objek StandardMonitor dan memasang objek monitor ke objek DataStore melalui tengah CaptureFramework.
DataObserver menyediakan perkhidmatan JMX/HTTP untuk merangkak MA seterusnya Perkhidmatan Http telah mendaftarkan tiga pengendali, iaitu HttpJEEJVMObserver, HttpJEEMonitorObserver, dan HttpJEEProfileObserver. Pengendali yang berbeza mendedahkan antara muka yang berbeza.
Kelas Pengendali di bawah pakej MonitorHandler secara khusus mengendalikan pengiraan dan statistik data penunjuk Monitor.
Rangka kerja CaptureFrameWork menyediakan titik masuk tangkapan bersatu, dan menyediakan kaedah segerak dan kaedah tak segerak dalam UAVServer:
Titik masuk tangkapan segerak: runMonitorCaptureOnServerCapPoint
Titik masuk tangkapan tak segerak: runMonitorAsyncCaptureOnServerCapPoint
Sama ada titik masuk tangkapan segerak atau titik masuk tangkapan tak segerak, kaedah doCapture akan dilaksanakan Coretan kod adalah seperti berikut:
monitor.doCapture Ia memanggil doCapture dalam antara muka Monitor, dan kelas pelaksanaannya ialah StandardMonitor.
Gelung melalui tatasusunan MonitorElement, dapatkan kelas pelaksanaan data tangkapan, dapatkan pengendali yang sedang dilaksanakan berdasarkan kelas pelaksanaan, dan akhirnya tentukan peringkat tangkapan (precap/docap) berdasarkan pengendali yang diperolehi pada masa ini , dan kemudian lakukan pemprosesan yang sepadan. Pengendali yang berbeza menjana MonitorElementInstance berdasarkan ciri yang berbeza, dan akhirnya menyimpan keputusan dalam struktur data StandardMonitorRepository.
Ambil ServerEndRespTimeCapHandler (kelakuan merangkak sebelah pelayan) sebagai contoh:
kaedah preCap: hanya merekodkan masa permintaan mula perkhidmatan.
kaedah doCap: lakukan pemprosesan logik yang berbeza mengikut monitorElemId yang berbeza, akhirnya merangkum contoh MonitorElementInstance, dan kemudian memproses keputusan tingkah laku tangkapan, termasuk penyingkiran puncak nilai maksimum, nilai maksimum , nilai minimum, kembalikan kod status, kemas kini cap masa, pengiraan dan pemprosesan data lain yang sepadan.
Iaitu, data masa jalan, yang merujuk kepada maklumat yang dijana apabila program berjalan. CPU, memori timbunan, maklumat JVM yang diduduki oleh program, dan maklumat statistik yang berkaitan dengan akses perkhidmatan dan panggilan pelanggan (purata masa tindak balas, kiraan akses, dll.).
Pelaksanaan DefaultMonitorSupporter
Pengumpulan data sisi pelayan menggunakan DefaultMonitorSupporter.start sebagai titik masuk untuk bina tika monitor :
Secara lalai, tika StandardMonitor jenis perkhidmatan dibina, yang mengandungi tika StandardMonitorRepository mendaftarkan monitor Contoh MonitorElement dan menyimpan semua tika MonitorElement dalam atribut elemsMap.
Atribut elemsMap menyimpan pengendali kelas koleksi yang berbeza mengikut objek koleksi yang berbeza:
ServerEndRespTimeCapHandler: mengumpul masa tindak balas dan kiraan pemuatan Pelayan, APP, URL, dll.
JVMStateCapHandler: Mengumpul status jvm, termasuk penggunaan Heap, kiraan GC, kiraan benang, CPU, kiraan kelas, dll.
Coretan kod adalah seperti berikut:
Pelaksanaan DefaultClientMonitorSupporter
Pengumpulan data pelanggan menggunakan DefaultClientMonitorSupporter.start sebagai titik masuk untuk membina contoh monitor:
Bina klien taip StandardMonitor secara lalai Instance, yang mengandungi instance StandardMonitorRepository, instance StandardMonitorRepository mendaftarkan monitor, satu instance mengandungi berbilang tika MonitorElement, dan menyimpan semua tika MonitorElement dalam atribut elemsMap.
elemsMap: Atribut hanya menyimpan kelas koleksi ClientRespTimeCapHandler.
ClientRespTimeCapHandler: Mengumpul masa tindak balas dan kiraan pemuatan pelanggan, dsb.
Sama ada pengumpulan data pihak klien atau pengumpulan data sebelah pelayan, monitor akan dipasang ke dalam DataObserver dan akhirnya berjaya dibina monitor akan diikat Tetapkan kepada kaedah tangkapan yang ditentukan (iaitu precap dan docap).
DataObServer menyediakan dua mod untuk mendedahkan data antara muka, iaitu JMX dan HTTP:
Mod HTTP: oleh HttpDataObserverWorker .start digunakan sebagai titik masuk, dan tiga pengendali didaftarkan masing-masing, iaitu pengendali untuk mendapatkan data JVM, Data pantau dan data profil. Setiap pengendali mendedahkan antara muka yang unik, tetapi mereka semua mengembalikan data dalam format JSON.
Kaedah JMX: Ejen JMX memperoleh antara muka terdedah melalui kaedah getMBeanInfo untuk mendapatkan data.
DataObServer juga menyediakan kaedah untuk memasang dan menyahpasang monitor, menambah dan mengalih keluar pendengar serta mendapatkan profil dan monitor:
Atas ialah kandungan terperinci Cara melakukan analisis rangka kerja CaptureFramework. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!