يحتاج خادم الشركة إلى مراقبة الوقت الفعلي ، وعندما تكون مساحة المستخدم ممتلئة ، تفشل العملية ، أو عندما يحدث استثناء البرنامج ، هناك حاجة إلى تذكيرات في الوقت الفعلي لتسهيل إدارة الشبكة وتعديلات المبرمجين ، بحيث يكون نظام المراقبة في الوقت الفعلي ينقسم إلى جزأين.
الجزء 1: مراقبة النظام في الوقت الفعلي (استخدام وحدة المعالجة المركزية ، درجة حرارة وحدة المعالجة المركزية ، حجم الذاكرة الكلي ، حجم الذاكرة المستخدمة)
الجزء 2: لا يتم تحديث الإنذارات في الوقت الفعلي والوقت الفعلي ، بحيث لا يمكن استخدام Ajax فقط. ويتم الانتهاء من العمليات على النظام الأساسي بشكل عام بواسطة JN. يتم استخدام وقت التشغيل هنا.
* احصل على وحدة المعالجة المركزية ومعلومات الذاكرة ضمن نظام Linux * * * / الفئة النهائية العامة LinuxSystemTool { / ** * احصل memtotal ؛ int [1] = memfree ؛ int [2] = swaptotal ؛ int [3] = swapfree ؛ ملف جديد (/proc/meminfo ") ؛ بينما (str = br.readline ()! = null) {token = stringtokenizer (str) ؛ ()) متابعة ؛ = integer.parseint (token.nextToken ()) ؛ swaptotal: ")) النتيجة [2] = integer.parseint (token.nextToken ()) ؛ else if (str.equalsigno recase (" swapfree: ")) ؛ /proc/stat ") ؛ bufferedReader BR = جديد bufferedReader (new inputStreamReader (new FileInpu tstream (file))) (Token.NextToken ()) ؛ ؛ Token.NextToken () ؛ (تعويم) ((user2 + sys2 + nice2) - (user1 + sys1 + nice1)) / (تعويم) ((user2 + nice2 + sys2 + idle2) - (user1 + nice1 + sys1 + idle1)) ؛
فيما يلي طريقتان ، اسمحوا لي أن أشرح ذلك.
الطريقة 1 ملف "/proc/meminfo" يحتوي على معلومات الذاكرة ومعلومات المبادلة. على سبيل المثال:
$ cat /proc /meminfo الإجمالي: المستخدم: مجاني: مشترك: المخازن المؤقتة: in cached: mem: 1057009664 851668992 205340672 0 67616768 367820800 SWAP: 2146787328 16442924 198357504 MEMTOTAL:
وبهذه الطريقة ، يمكنك استخدام طريقة اعتراض السلاسل للحصول على معلومات ذاكرة Linux.
تحتوي الطريقة 2 على معلومات وحدة المعالجة المركزية في الملف "/proc/stat". يتم استخدام كل علامة من كل وحدة المعالجة المركزية في هذا الملف. الأرقام التالية هي: المستخدم ، لطيف ، sys ، الخمول ، ايويت. بعض إصدارات kernel ليس لديها عنصر Iowait. تشير هذه القيم إلى مكان استخدام كل علامة في وحدة المعالجة المركزية من بداية الكمبيوتر. على سبيل المثال:
CPU0 256279030 0 11832528 1637168262
أي منذ بدء CPU0 ، يتم استخدام 256279030 علامة لاستهلاك المستخدم ، ويتم استخدام 11832528 لاستهلاك SYS. لذا ، إذا كنت ترغب في حساب تحميل وحدة المعالجة المركزية لكل وحدة زمنية (على سبيل المثال ، 1S) ، فأنت بحاجة فقط إلى حساب الفرق بين القيم قبل وبعد ثانية واحدة مقسومة على عدد القراد في الثانية.
حسنًا ، لا تزال هناك درجة حرارة وحدة المعالجة المركزية ، كيف وجدت ذلك؟
ربما يكون مثل هذا:
درجة الحرارة: 68C
ولكن ليس كل جهاز Linux يحتوي على THM. اقرأ هذا الملف ، وأعتقد أن الجميع سيفعلون ما يلي ، فقط اقرأ المحتوى ثم قسّم السلسلة للحصول على هذا 68. حسنًا ، يتم الانتهاء من جميع المعلومات الأساسية للنظام ، وبعد ذلك ، هناك شيء واحد فقط ، وهو ما هو استخدامها Ajax يستدعي هذه الفئة للحصول على المعلومات الأساسية ثم العودة إلى الصفحة.
فيما يلي تأثير مراقبة النظام.
في هذه المرحلة ، تم الانتهاء من الجزء الأول من مراقبة النظام.
1. درجة الحرارة ووحدة المعالجة المركزية تتجاوز القيمة المقدرة يجب تنبيهها
2 تم حفظه في قاعدة البيانات.
3. يجب أن تكون الإنذارات في الوقت الفعلي. من WarningList Where Date> New Date ()+ ajaxtime ، وجدت لاحقًا أن الوقت غير صحيح للغاية ، تأخير الشبكة ، وقت معالجة البرنامج ، (تستخدم معلومات وحدة المعالجة المركزية وظيفة النوم) ، إلخ. وأحيانًا هناك بيانات متكررة ، لذلك فكرت في استخدام المعرف. البيانات بعد هذا المعرف (أي ، أدخل مراقبة أحدث البيانات بعد النظام) وتوفر الجلسة الحد الأقصى الجديد للمعرف. يمكن أن تكون المعلومات هي الأحدث عندما يجلب Ajax ذلك ، ولا يوجد أي ازدحام.
إنشاء جدول `warnlist` (` id` bigint (20) وليس null auto_increment ، `warnleave` tinyint (2) ليس فارغا" 0 "، // مستوى التنبيه: شدة المنبه` fromguy` varchar (20) لا nu LL ، // تحذير `WARNCONTENT` varchar (100) وليس NULL ، // محتوى الإنذار ، مثل معدل استخدام وحدة المعالجة المركزية يتجاوز 80 ٪` aviliablevalue` varchar (12) الفار (12) الافتراضي NULL ، // value ariat 80 `warntime` dateTime not null ، // arear time` stackinfo` varchar (255) default null ، // stisply stack infork '، // معالجة نتيجة `الإصدار` int (11) الافتراضي ، // الإصدار `stomerizerid` varchar (20) الافتراضي null ، // معرف المؤسسة` des` varchar (255) الفارغ ، المفتاح الأساسي (`i d` ` )) المحرك = innodb الافتراضي charset = utf8 ؛
لنفترض أنني أحصل على معلومات من النظام ، ثم أحتاج إلى كتابة منطق ، إذا كان (cputempature> 75c) أو إذا تم كتابة (CPUUSERD> 80 ٪) إلى قاعدة البيانات ، ثم استحوذ على معلومات الإنذار الكبرى من المعرف الأقصى لـ AJAX تم إرسال قاعدة البيانات التي تم إرسالها في المرة الأخيرة (إذا حدثت الأخطاء التالية خلال هذه الفترة معًا: مساحة تخزين المستخدم غير كافية ، وإنذار عمل شركتنا ، الاستثناء ، وما إلى ذلك) ، في فئة تحليل XML ، ربما يكون النموذج هو AJAX إرجاع هذا XML لمعلومات استخراج الصفحة
<Response> <CPUUSED> 67 </ CPUUSED> <CPUTEMP> 76 <CPUTEMP> <MAMELS> 1023422 </MAMELY> <FREEMEMORY> 43244 </ FREEMEMORY> التخزين غير كافٍ للمساحة </ warningcontent> <من guy> kakaluyi </ fromguy> ...... </wanrlist> <ArningList> <Arnid> 3 </warnid> > النظام </ fromguy> <Orgid> النظام </ orgid> <ArningValue> 78 </arningvalue> ............ </ warninglist> ..... ... </ response>
يرتبط رمز عرض معلومات النظام بالصورة أعلاه:
var cpuused = req .responsexml.getelementsbytagname ('cpuused') [0] getElementsbytagname ('freememory') [0] ') .innerhtml = totalMemory ؛
استخدام وحدة المعالجة المركزية الخادم:
</td> <td class = "text"> <font color = "#ff0000" size = "+2"> <label id = "cpuused"> </sable> </font> <العتبة المحددة قبل الإنذار: 80 ٪> </td> </r> .........
ثم هناك مشكلة في عرض الصفحة.
VAR LEME = REQ.Responsexml.getElementsByTagname ('Warnlist'). length ؛ +Length-1> 50) // إذا كان أكبر من 50 عنصرًا ، فابحث عن جدول قائمة الإنذار ، واحصل على العقدة الفرعية لمعلومات الإنذار ، ثم حذف معلومات الإنذار الإضافية {var tbody = document.getElementsByTagname ("الجدول") [4] .childnodes [0] ؛ ؛
ثم أدخل رسالة إنذار جديدة.
لـ (var i = 0 ؛ i <length ؛ i ++) {var onewarnlist = req.responsexml.getelementsbytagname ('warnlist') [i] .ChildNodes ؛ LEAD = "إنذار المستوى للمؤسسة" ؛ = OneWarnlist [3] .firstchild.nodevalue ؛ [6]. 'Warntable') ؛ } x ++ ؛ (td ') ؛ innerhtml = from ؛ CreateElement (td ') ؛ .innerhtml = '<font color = "#ff0000">' + warnvalue + '</font>' ؛ tt d6.innerhtml = tr.appendchild ؛ = document.createelement (td ') ؛
حسنًا ، كل شيء يتم ، ما يلي هو التأثير النهائي