Server perusahaan membutuhkan pemantauan real-time, dan ketika ruang pengguna penuh, operasi gagal, atau ketika pengecualian program terjadi, pengingat waktu nyata diperlukan untuk memfasilitasi manajemen jaringan dan penyesuaian programmer, sehingga sistem pemantauan waktu nyata real-time dibagi menjadi dua bagian.
Bagian 1: Pemantauan Sistem Real-Time (pemanfaatan CPU, suhu CPU, ukuran memori total, ukuran memori yang digunakan)
Bagian 2: Alarm real-time tidak disegarkan dan real-time, sehingga mereka hanya dapat menggunakan AJAX. dan operasi pada sistem yang mendasari umumnya diselesaikan oleh JN. Runtime digunakan di sini.
* Dapatkan CPU dan informasi memori di bawah sistem Linux * * * / kelas akhir publik linuxsystemtool { / ** * Dapatkan memori dengan info yang digunakan * * @return int [] hasil * result.length == 4; dalam t [0] = Memtotal; int [1] = memfree; int [2] = swaptotal; int [3] = swapfree; * @throws ioException * @throws InterruptedException */ public static int [] dapat File baru (/proc/meminfo "); while (str = br.readline ())! = null) {token = new StringTokenizer (str); ()) Lanjutkan; if (str.equalsignorecase ("memtotal:")) hasil [0] = integer.parseint (token.nextToken ()); = Integer.parseint (token.nextToken ()); Swaptotal: ")) hasil [2] = integer.parseint (token.nextToken ()); else if (str.equalsigno recase (" swapfree: ")) hasil [3] = integer.parseint (token.nextoken ()) ; /proc/stat "); bufferedReader br = new bufferedReader (inputStreamReader baru (fileinpu tstream (file))); stringTokenizer token = new stringTokenizer (br.readline ()); token.nextoken (); int user1 = integer.parseintline ()); Token.nextoken (); int user1 = integer.parsparseint ()); Token.nextoken (); int user1 = integer.parsparseint ()); (Token.NextToken ()); ; Token.NextToken ()); (float) ((user2 + sys2 + nice2) - (user1 + sys1 + nice1)) / (float) ((user2 + nice2 + sys2 + idle2) - (user1 + nice1 + sys1 + idle1));
Berikut adalah dua metode, izinkan saya menjelaskannya.
Metode 1 File "/proc/meminfo" berisi informasi memori, dan menukar informasi. Misalnya:
$ CAT /PROC /MEMINFO Total: Digunakan: GRATIS: Bersama: Buffer: di -cache: mem: 1057009664 851668992 205340672 0 67616768 367820800 SWAP: 2146787328 164429824 198 2357504 MEMTOT: MEMTOT;
Dengan cara ini, Anda dapat menggunakan metode penyadapan string untuk mendapatkan informasi memori Linux.
Metode 2 berisi informasi CPU dalam file "/proc/stat". Setiap centang dari setiap CPU digunakan dalam file ini. Angka -angka berikut adalah: pengguna, bagus, sys, idle, iowait. Beberapa versi kernel tidak memiliki item Iowait. Nilai -nilai ini menunjukkan di mana setiap centang CPU digunakan dari awal komputer. Misalnya:
CPU0 256279030 0 11832528 1637168262
Artinya, karena CPU0 dimulai, 256279030 kutu digunakan untuk konsumsi pengguna, dan 11832528 digunakan untuk konsumsi SYS. Jadi, jika Anda ingin menghitung beban CPU per satuan waktu (misalnya, 1s), Anda hanya perlu menghitung perbedaan antara nilai sebelum dan sesudah 1 detik dibagi dengan jumlah kutu per detik.
Oke, masih ada suhu CPU yang tersisa, bagaimana melakukannya?
Mungkin seperti ini:
Suhu: 68C
Tetapi tidak setiap mesin Linux memiliki THM ini. Baca file ini, saya percaya semua orang akan melakukan hal berikut, cukup baca konten dan kemudian membagi string untuk mendapatkan 68 ini. Oke, semua informasi dasar sistem selesai, dan kemudian ok, hanya ada satu hal sekarang, yang mana, yang mana adalah menggunakannya AJAX Calls kelas ini untuk mendapatkan informasi dasar dan kemudian kembali ke halaman.
Berikut ini adalah efek pemantauan sistem.
Pada titik ini, bagian pertama dari bagian pemantauan sistem telah selesai.
1. Suhu dan CPU melebihi nilai pengenal perlu diperingatkan
2. Sistem operasi pengguna gagal, dan ruang penyimpanan pengguna tidak cukup. disimpan dalam database.
3. Alarm harus real-time. Dari WarningList di mana tanggal> Tanggal baru ()+ AjaxTime, kemudian menemukan bahwa waktunya sangat salah, penundaan jaringan, waktu pemrosesan program, (informasi CPU menggunakan fungsi tidur), dll. Anda sering menemukan bahwa beberapa informasi alarm dengan kejam dilepaskan, Dan kadang -kadang ada data berulang, saya berpikir untuk menggunakan ID. Data setelah ID ini (yaitu, saya memasukkan pemantauan data terbaru setelah sistem) dan sesi menyimpan ID maksimum baru. Informasi dapat dijamin menjadi yang terbaru ketika Ajax mengambilnya, dan tidak ada duplikasi.
Buat tabel `warnlist` (` id` bigint (20) bukan null auto_increment, `warnleave` tinyint (2) bukan null default '0', // level alarm: keparahan alarm` fromguy` varchar (20) bukan nu Ll, // peringatan `warncontent` varchar (100) bukan null, // konten alarm, seperti tingkat penggunaan CPU melebihi 80%` aviliblevalue` varchar (12) nol default, // nilai resmi seperti 85% `warnvalue` varchar (12) nol default, // nilai alarm 80 `warntime` datetime not null, // waktu alarm` stackinfo` varchar (255) null, // Information stack pengecualian`dealwith` tinyint (2) not n ull default '0 ', // hasil pemrosesan `versi` int (11) default null, // versi` org orgorizerid` varchar (20) default null, // ID organisasi `des` varchar (255) nol default, kunci utama (` i d ` )) Engine = innodb charset default = utf8;
Misalkan saya mendapatkan informasi dari sistem, maka saya perlu menulis logika, jika (cputempature> 75c) atau jika (cpuuserd> 80%) ditulis ke database, dan kemudian meminta informasi alarm yang lebih besar dari ID maksimum AJAX Ajax Basis data yang dikirim terakhir kali (jika kesalahan berikut terjadi selama periode ini ditemukan bersama: Ruang penyimpanan pengguna tidak cukup, dan alarm kegagalan operasi bisnis perusahaan kami, pengecualian, dll.), Loop ke dalam kelas parsing XML, mungkin formulirnya adalah Ajax Mengembalikan XML ini untuk informasi ekstraksi halaman
<spesponse> <cpuSe> 67 </cpuSed> <cputemp> 76 <cputemp> <Bory> 1023422 </ memory> <freemeMory> 43244 </freememory> <wannlist> <Warning> 2 </ Warnid> <war ncontent> Penyimpanan ruang yang tidak memadai </ warningcontent> <rowuguy> kakaluyi </prowuguy> ...... </wanrlist> <warninglist> <warnid> 3 </ warnid> <darningcontent> suhu cpu terlalu tinggi </ warningcontent> <famruid> > Sistem </FrowGuy> <GRIGID> SISTEM </GRID> <ParningValue> 78 </ParningValue> ............ </parninglist> ..... ... </spesponse>
Kode tampilan informasi sistem terkait dengan gambar di atas:
var cpuused = req .responsexml.geteLementsbytagname ('cpuused') [0] .firstchild.nodevalue; GetElementsbyTagname ('Freememory') [0] .FirstChild.nodevalue; ') .InnerHTML = TotalMemory;
Penggunaan CPU Server:
</td> <td class = "text"> <font color = "#ff0000" size = "+2"> <label id = "cpuused"> </label> </font> <alarm ambang batas pra-ditentukan: 80 %> </td> </tr> .........
Lalu ada masalah tampilan halaman.
var length = req.responsexml.getElementsbyTagname ('warnlist') .length; if (length> 0) {var trlength = document.geteLementsbyTagname ('tabel') [4] .Childnodes [0] .ChildNodes.Leng +Panjang-1> 50) // Jika lebih dari 50 item, cari tabel daftar alarm, dapatkan simpul anak dari informasi alarm, dan kemudian hapus informasi alarm ekstra paling awal {var tbody = document.getElementsByTagname ('Tabel') [4] .Childnodes [0]; ;}
Kemudian masukkan pesan alarm baru.
untuk (var i = 0; i <panjang; i ++) {var onewarnlist = req.responsexml.getElementsbyTagname ('warnlist') [i] .childnodes; cuti = alarm tingkat perusahaan "; = OneWarnList [3] .FirstChild.nodevalue; [6]. 'Warntable'); var tr = document.createelement ('tr'); } x ++; (TD '); InnerHTML = Tr .AppendChild (TD2); createelement (TD '); .innerHtml = '<font color = "#ff0000">' + warnvalue + '</font>'; TT D6.InnerHTML = waktu peringatan; = Document.creeelement ('TD');
Oke, semuanya selesai, berikut ini adalah efek akhir