Сервер компании нуждается в мониторинге в режиме реального времени, и когда пространство пользователя заполнено, операция не выполняется или когда происходит исключение программы, необходимы напоминания в режиме реального времени для облегчения управления сетью и настройки программиста, чтобы система мониторинга в реальном времени разделен на две части.
Часть 1: Мониторинг системы в реальном времени (использование ЦП, температура процессора, общий размер памяти, используемый размер памяти)
Часть 2: тревога в реальном времени не обновляется и в режиме реального времени, поэтому они могут использовать только Ajax. и операции в базовой системе обычно завершаются JN. Используется время выполнения.
* Получить информацию о процессоре и памяти в системе Linux * * * * / Public Final Class LinuxSyStemtool { / ** * Получить память с помощью используемой информации * * @return int [] result * result.length == 4; в t [0] = Memtotal; int [1] = memfree; int [2] = swaptotal; int [3] = swapfree; новый файл ("/proc/meminfo"); while (str = br.readline ())! ()) продолжить; = Integer.parseint (token.nexttoken ()); Swaptotal: ")) результат [2] = integer.parseint (token.nexttoken ()); else if (str.equalsigno recase (" swapfree: ")) [3] = integer.parseint (token.nexttoken ()) Результат возврата; /proc/stat "); BufferedReader br = new BufferedReader (new InputStreamReader (new FileInpu tstream (file))); stringTokenizer token = new StringTokenizer (br.readline ()); token.nexttoken (); int user1 = integer.parseint (token.nexttoken ()); ; token.nexttoken ()); (float) ((user2 + sys2 + nect2) - (user1 + sys1 + nect1)) / (float) ((user2 + gite2 + sys2 + idle2) - (user1 + kice1 + sys1 + idle1);
Вот два метода, позвольте мне объяснить это.
Метод 1 Файл "/proc/meminfo" содержит информацию о памяти и информацию об обмене. Например:
$ cat /proc /meminfo Итого: Используется: БЕСПЛАТНО: Общие: Буферы: Кэши: MEM: 1057009664 851668992 205340672 0 67616768 367820800 SWAP: 2146787328 164429824 19857504 MEMTOTAL: 1032236668688824 2357504 MEMTOTAL: 1032236668668688828 2357504: 10322366668686828 23357504: 1032236666868828
Таким образом, вы можете использовать метод перехвата строк для получения информации о памяти Linux.
Метод 2 содержит информацию ЦП в файле "/proc/stat". Каждый тик каждого процессора используется в этом файле. Следующие номера: Пользователь, хороший, SYS, IDLE, IOWAIT. В некоторых версиях ядра нет предмета Айоваита. Эти значения указывают, где каждый тик процессора используется с начала компьютера. Например:
CPU0 256279030 0 11832528 1637168262
То есть с тех пор, как CPU0 начался, для потребления пользователя используются клещи 256279030, а 11832528 используется для потребления SYS. Поэтому, если вы хотите рассчитать загрузку процессора на единицу времени (например, 1S), вам нужно только рассчитать разницу между значениями до и после 1 секунды, разделенного на количество клещей в секунду.
ОК, осталась температура процессора, как это сделать?
Это, наверное, так:
Температура: 68с
Но не у каждой машины Linux есть этот THM. Прочитайте этот файл, я полагаю, что все сделают следующее, просто прочитайте контент, а затем разделите строку, чтобы получить эту 68. Это использовать его Ajax называет этот класс, чтобы получить базовую информацию, а затем возвращается на страницу.
Ниже приведен эффект мониторинга системы.
На этом этапе была завершена первая часть мониторинга системы.
1. температура и процессор превышают номинальное значение
2. Операционная система пользователя не работает, и пространство для хранения пользователя недостаточно. Сохраняется в базе данных.
3. Тревожки должны быть в режиме реального времени. Из WarningList, где дата> Новая дата ()+ ajaxtime, позже обнаружил, что время очень неверно, сетевая задержка, время обработки программы (информация ЦП использует функцию сна) и т. Д. Вы часто обнаруживаете, что некоторая информация о тревоге безжалостно отпускает, И иногда есть повторные данные, поэтому я думал об использовании ID. Данные после этого идентификатора (то есть я ввожу мониторинг последних данных после системы), и сеанс сохраняет новый максимальный идентификатор. Информация может быть гарантированной последней, когда Ajax его приобретает, и нет дублирования.
Создать таблицу `warnlist` (` id` bigint (20) не null auto_increment, `warnleave` tinyint (2) не nul Ll, // предупреждение `warncontent` varchar (100) не нулевой, // содержание тревоги, такие как частота использования процессора, превышает 80%` vailiablevalue` varchar (12) дефолт нуль, // авторизованное значение, такое как 85% `warnvalue` varchar (12) NULL по умолчанию, // значение тревоги 80 `warntime` dateTime не null, // время тревоги` stackinfo` varchar (255) По умолчанию NULL, // Информация о стеке исключений `dealwith` tinyint (2) не n Ull по умолчанию '0 ', // Обработка результата `version` int (11) по умолчанию NULL, // версия` aruarizerId` varchar (20) по умолчанию NULL, // идентификатор организации `des` varchar (255) нулевой, первичный ключ по умолчанию (` i d ` )) Engine = Innodb по умолчанию charset = utf8;
Предположим, я получаю информацию из системы, тогда мне нужно написать логику, если (Cputempatation> 75c) или if (CPUuserd> 80%) записывается в базу данных, а затем запросите информацию о тревоге, больше, чем максимальный идентификатор Ajax База данных отправлена в прошлый раз (если в течение этого периода обнаружены следующие ошибки в течение этого периода: пространство для хранения пользователя недостаточна, а сбоя в сборе, исключение, исключение и т. Д.) Наша компания в классе XML, вероятно, форма Ajax - Ajax. Возвращает этот XML для получения информации о извлечении страниц
<sonsect> <sessons> <puused> 67 </ cpuused> <cputemp> 76 <cputemp> <merive> 1023422 </ memory> <freememory> 43244 </ freememory> <wannlist> <warning> 2 </ warnid> <war ncontent> Система Хранение недостаточное пространство </ warningcontent> <facguy> kakaluyi </ fromguy> ...... </ wanrlist> <warninglist> <warnid> 3 </ warnid> <warningcontent> температура процессора слишком высока </ warningcontent> <fromguy > Система </ fromGuy> <Orgid> System </ orgid> <warningValue> 78 </ warningValue> ............ </ warningList> ..... ... </ response>
Код отображения системной информации связан с изображением выше:
VAR CPUSED = REQ .RESPONSEXML.GETELENTEMSBYTAGNAME ('CPUSED') [0] .firstchild.nodevalue; getElementsbytagname ('freememory') [0] .firstchild.nodevalue; ') .innerhtml = TotalMemory;
Использование процессора сервера:
</ td> <td class = "text"> <font color = "#ff0000" size = "+2"> <label id = "cpuEding"> </ label> </ font> <Предварительно определенный порог тревоги: 80 % > </ td> </ tr> .........
Тогда есть проблема с дисплеем страницы.
var length = req.responsexml.getelementsbytagname ('warnlist') .length; +Length-1> 50) // Если это больше 50 пунктов, ищите таблицу списка тревоги, получите дочерний узел информации о тревоге, а затем удалите дополнительную самую раннюю информацию о тревоге {var tbody = document.getelementsbytagname (Таблица ') [4] .ChildNodes [0]; ;
Затем вставьте новое сообщение о тревоге.
for (var i = 0; i <length; i ++) {var onewarnlist = req.responsexml.getelementsbytagname ('warnlist') [i] .childnodes; оставить = "Аварийный сигнал на уровне предприятия"; = OneWarnlist [3]. Firstchild.nodevalue; [6]. 'Warntable'); } x ++; (TD '); innerhtml = от; Createelement (TD '); .innerhtml = '<font color = "#ff0000">' + warnvalue + '</font>'; TT D6.Innerhtml = предупреждение; = Document.CreateElement ('TD');
Хорошо, все сделано, следующее - последний эффект