El servidor de la compañía necesita monitoreo en tiempo real, y cuando el espacio del usuario está lleno, la operación falla, o cuando ocurre la excepción del programa, se necesitan recordatorios en tiempo real para facilitar la gestión de la red y los ajustes del programador, de modo que el sistema de monitoreo en tiempo real se divide en dos partes.
Parte 1: Monitoreo del sistema en tiempo real (utilización de la CPU, temperatura de la CPU, tamaño total de memoria, tamaño de memoria usado)
Parte 2: Las alarmas en tiempo real no son renovadas y en tiempo real, por lo que solo pueden usar AJAX. y las operaciones en el sistema subyacente generalmente se completan por JN. . El tiempo de ejecución se usa aquí.
* Obtenga información de CPU y memoria en el sistema Linux * * * * / public Final Clase LinuxSystemTool { / ** * Obtener memoria mediante información usada * * @return int [] resultado * resultado.length == 4; en t [0] = Memtotal; int [1] = memfree; int [2] = swaptotal; int [3] = swapfree; nuevo archivo ("/Proc/MemInfo"); while ((str = br.readline ())! = NULL) {token = new StringTokenizer (str) ()) continuar; = Integer.ParseInt (token.nextToken ()); Swaptotal: ")) resultado [2] = Integer.ParseInt (token.nexttoken ()); else if (str.equalsigno recase (" swapfree: ")) resultado [3] = integer.parseInt (token.nextToken ()) ;} Resultado de retorno; /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 + NICE2) - (User1 + SYS1 + NICE1)) / (FLOAT) ((USER2 + NICE2 + SYS2 + Idle2) - (User1 + NICE1 + SYS1 + Idle1));
Aquí hay dos métodos, déjame explicarlo.
Método 1 El archivo "/Proc/Meminfo" contiene información de memoria e información de intercambio. Por ejemplo:
$ Cat /Proc /Meminfo Total: Usado: Free: Shared: Buffers: almacenado en caché: MEM: 1057009664 8516668992 205340672 0 67616768 367820800 Swap: 2146787328 164429824 198 2357504 Memtotal: 103236 KB Memfree
De esta manera, puede usar el método de interceptar cadenas para obtener información de memoria de Linux.
El método 2 contiene información de CPU en el archivo "/proc/stat". Cada garrapata de cada CPU se usa en este archivo. Los siguientes números son: usuario, agradable, sys, inactivo, iowait. Algunas versiones del kernel no tienen el artículo de Iowait. Estos valores indican dónde se usa cada tic de la CPU desde el inicio de la computadora. Por ejemplo:
CPU0 256279030 0 11832528 1637168262
Es decir, dado que CPU0 comenzó, las garrapatas 256279030 se utilizan para el consumo de usuarios, y 11832528 se usa para el consumo de SYS. Entonces, si desea calcular la carga de la CPU por unidad de tiempo (por ejemplo, 1S), solo necesita calcular la diferencia entre los valores antes y después de 1 segundo dividido por el número de garrapatas por segundo.
Ok, todavía queda temperatura de la CPU, ¿cómo hacerlo?
Probablemente sea así:
Temperatura: 68c
Pero no todas las máquinas de Linux tienen esta THM. Lea este archivo, creo que todos harán lo siguiente, solo lean el contenido y luego divide la cadena para obtener este 68. Ok, toda la información básica del sistema se completa, y luego, ok, solo hay una cosa ahora, que ahora, que ahora, que ahora, que ahora, que ahora. es usarlo AJAX llama a esta clase para obtener información básica y luego regresa a la página.
El siguiente es el efecto del monitoreo del sistema.
En este punto, la primera parte de la parte de monitoreo del sistema se ha completado.
1. La temperatura y la CPU exceden el valor nominal deben ser alertados
2. El sistema operativo del usuario falla, y el espacio de almacenamiento del usuario es insuficiente. Guardado en la base de datos.
3. Las alarmas deben ser en tiempo real. Desde WarningList Where Date> New Date ()+ Ajaxtime, luego descubrió que el tiempo es muy incorrecto, retraso de la red, tiempo de procesamiento del programa, (la información de la CPU utiliza la función del sueño), etc. A menudo encuentra que la información de la alarma es despiadada, se suelta despiadadamente, Y a veces hay datos repetidos, por lo que pensé en usar ID. Los datos después de esta identificación (es decir, ingreso los datos más recientes después del sistema) y la sesión guarda la nueva ID máxima. ¡Se puede garantizar que la información sea la última cuando Ajax la obtiene, y no hay duplicación!
Crear tabla `warnlist` (` id` bigint (20) no null auto_incement, `warnleAve` tinyint (2) no nulo predeterminado '0', // nivel de alarma: la gravedad de la alarma` fromguy` varchar (20) no nu Ll, // Advertencia `WarnContent` Varchar (100) no nulo, // Contenido de alarma, como la tasa de uso de la CPU excede el 80%` AviliableValue` varchar (12) NULL, // Valor autorizado como 85% `WarnValue` varChar (12) NULL predeterminado, // Valor de alarma 80 `Warntime` dateTime no NULL, // Tiempo de alarma` stackInfo` varchar (255) NULL predeterminado, // Exceptores ', // Procesamiento de resultado `Version` int (11) predeterminado NULL, // Versión` OrganizerId` Varchar (20) NULL predeterminado, // ID de organización `Des` Varchar (255) NULL predeterminado, clave primaria (` I D' )) Motor = innodb predeterminado charset = utf8;
Supongamos que obtengo información del sistema, entonces necesito escribir una lógica, IF (CPutempurt> 75C) o IF (CPUUSERD> 80%) se escribe en la base de datos y luego consulta la información de alarma mayor que la ID máxima del AJAX base de datos enviada la última vez (si se encuentran los siguientes errores durante este período: el espacio de almacenamiento del usuario es insuficiente, y la alarma de falla de la operación comercial de nuestra empresa, excepción, etc.), ingresa a una clase de análisis XML, probablemente el formulario es AJAX Devuelve este XML para la información de extracción de página
<Spuesta> <Cpuused> 67 </cpuused> <cputemp> 76 <Cputemp> <MACES> 1023422 </ememy> <freememory> 43244 </freememory> <wannlist> <advertencia> 2 </ warnid> <war ncontent> sistema sistema Almacenamiento de espacio insuficiente </sarningContent> <fromguy> kakaluyi </ fromguy> ...... </ wanrlist> <arninglist> <arnid> 3 </arnid> <arningcontent> la temperatura de la CPU es demasiado alta </sarningcontent> <Fromguy > Sistema </ Fromguy> <Gid> System </ orgid> <WARNINGVALUE> 78 </ WarningValue> ............ </ WarningList> ..... ... </spuesta>
El código de visualización de la información del sistema está relacionado con la imagen de arriba:
var cpuused = req .Responsexml.getElementsByTagName ('cPuused') [0] .FirstChild.NodeValue; getElementsByTagName ('freememory') [0] .FirstChild.nodeValue; ') .innerhtml = TotalMemory;
Uso de la CPU del servidor:
</td> <td class = "text"> <font color = "#ff0000" size = "+2"> <etiqueta id = "cpuused"> </label> </font> <umbral pre-determinado de alarma: 80 %> </td> </tr> .........
Luego está el problema de la pantalla.
Var longitud = req.Responsexml.getElementsByTagName ('WarnList') .Length; +Longitud-1> 50) // Si es mayor de 50 elementos, busque la tabla de la lista de alarmas, obtenga el nodo infantil de la información de alarma y luego elimine la información de alarma más temprana adicional {var tbody = document.getElementsBytagName ('tabla') [4] .ChildNodes [0]; ;
Luego inserte un nuevo mensaje de alarma.
para (var i = 0; i <longitud; i ++) {var onewarnlist = req.Responsexml.getElementsByTagName ('warnlist') [i] .childNodes; Leave = "Alarma de nivel empresarial"; = OneWarnList [3] .FirstChild.nodeValue; [6]. 'Warntable'); } x ++; ('td'); Innerhtml = de; CreateElement ('td'); .innerhtml = '<font color = "#ff0000">' + warnvalue + '</font>'; tt d6.innerhtml = tiempo de advertencia; = document.createElement ('td');
Ok, todo está hecho, el siguiente es el efecto final