Monitorizar Utilización de recursos en servidor Debian

Iniciado por jerem, 4 Septiembre 2010, 07:05 AM

0 Miembros y 1 Visitante están viendo este tema.

jerem

Buenas!
Necesito monitorizar los recursos de un servidor de correo qmail sobre Debian Lenny.
Estoy buscando un software que informe la "utilización por procesos" de los recursos: disco, RAM, CPU y red.
Busqué bastante y no encontré ningún comando que brinde esta info para todos los recursos que necesito. El servidor a monitorizar no tiene instalada ninguna interfaz gráfica así que tiene que ser un comando en modo texto.

Por las dudas, aclaro a que me refiero con "utilización" (no es lo mismo que "uso"):
Uso de un recurso (por ejemplo: RAM) -> es la cantidad del recurso que está ocupando un proceso en el sistema. Ej: 500kb de RAM. (varios de los comandos que vi informan %RAM que se refiere a esto, no a la utilización)
Utilización de un recurso -> es la fracción de tiempo que el recurso está ocupado. Ej: si monitorizamos un recurso (Ej CPU) durante T segundos y encontramos que el recurso estuvo ocupado durante B seguntos, su utilización B/T.

Por procesos: esto quiere decir que, en la definición de utilización, hay que tener en cuenta el tiempo que el recurso estuvo ocupado atendiendo a cada proceso en el sistema (Bp), para obtener las utilizaciones "individuales": Bp/T.

Espero que alguien pueda ayudarme.
Saludos y gracias de antemano!

Foxy Rider

El disco lo podés supervisar con iostat, la ram con el comando top/pmap, la cpu podés supervisar con top y/o vmstat y en cuando a red no recuerdo ... pero por lo que veo en google ntop parece hacer el trabajo ...

Saludos.

jerem

Cita de: vertex@Symphony en  4 Septiembre 2010, 08:14 AM
El disco lo podés supervisar con iostat, la ram con el comando top/pmap, la cpu podés supervisar con top y/o vmstat y en cuando a red no recuerdo ... pero por lo que veo en google ntop parece hacer el trabajo ...

Saludos.

Hola, muchas gracias por la respuesta
el problema con iostat es que no informa los valores por procesos sino sólo la utilización global para cada disco/partición.
top: informa %MEM por procesos, pero según veo en http://linux.die.net/man/1/top, ese valor corresponde a la cantidad de memoria compartida usada por el proceso. Esto no es lo que busco...
pmap: me informa el mapa de memoria pero no la utilización...
top: sí informa la utilización de CPU, así que este me sirve.
vmstat: no me sirve porque sólo informa estadísticas globales (no por procesos).
ntop: lo probé y hasta ahora no encontré ningún porcentaje de utilización (porcentaje de tiempo ocupado respecto del período de observación) de la tarjeta de red. Mucho menos discriminada por procesos!

En realidad, la idea es correr un sólo monitor para no generar demasiada carga.. Pero no sé si se va a poder ya que hace bastante que busco y hasta ahora no encontré uno que me sirva.
Aclaro que necesitaría monitorizar con un intervalo de 1 segundo y que los valores de utilización se almacenen en un archivo para luego hacer cálculos estadísticos (promedio, extremos, etc)

Saludos y gracias nuevamente

Foxy Rider

R.A.M : Entonces depende que quieras obtener, por que decir "uso de memoria" es muy genérico ...pmap -d, así como top cumplen con lo de "uso de memoria"... pero no con lo que querés ...para lo que querés entonces /proc/[pid]/smaps sirve, te discrimina el mapa de memoria entero discriminando además páginas compartidas/privadas/swap/etc

Disco : Entonces pidstat -d debería cumplir la tarea

Red : Entonces ni idea, tocará google o algún otro user aportará sobre esto, por que no uso Linux y no lo sé :$

En realidad con correr un pequeño script a intervalos de 2 segundos debería estar bien, muchas de estas estadísticas ya las provee el kernel y estas tools lo que hacen es nada más mostrarlas de forma "linda", salvo que uses algo como valgrind, lo que mencionamos en este post genera nada de carga ...

Saludos.

P.S : perdón, había leído el mensaje rápido y no te entendí ^^"

jerem

Cita de: vertex@Symphony en  5 Septiembre 2010, 00:03 AM
R.A.M : Entonces depende que quieras obtener, por que decir "uso de memoria" es muy genérico ...pmap -d, así como top cumplen con lo de "uso de memoria"... pero no con lo que querés ...para lo que querés entonces /proc/[pid]/smaps sirve, te discrimina el mapa de memoria entero discriminando además páginas compartidas/privadas/swap/etc

Disco : Entonces pidstat -d debería cumplir la tarea

Red : Entonces ni idea, tocará google o algún otro user aportará sobre esto, por que no uso Linux y no lo sé :$

En realidad con correr un pequeño script a intervalos de 2 segundos debería estar bien, muchas de estas estadísticas ya las provee el kernel y estas tools lo que hacen es nada más mostrarlas de forma "linda", salvo que uses algo como valgrind, lo que mencionamos en este post genera nada de carga ...

Saludos.

P.S : perdón, había leído el mensaje rápido y no te entendí ^^"


Buenas
Revisé lo que me comentaste:
RAM: /proc/[pid]/smaps no contiene nada parecido a un cociente de tiempos (según la utilización definida en el post inicial), el cual tendría que ser un valor entre 0 y 1 (o porcentaje) sin unidades.
Disco: pidstat -d  muestra las siguientes columnas:
      Tiempo    PID    kB_rd/s    kB_wr/s   kB_ccwr/s    Command
      en este caso tampoco informa el valor de utilización que busco.

Gracias igualmente por la respuesta.
Saludos

Foxy Rider

Sencillo : te hacés un script y lo calculás  ! .. no hay comandos tan "te lo sirvo en bandeja de plata" y la idea es que le pongas algo de onda ...

Saludos.

jerem

Cita de: vertex@Symphony en  7 Septiembre 2010, 06:59 AM
Sencillo : te hacés un script y lo calculás  ! .. no hay comandos tan "te lo sirvo en bandeja de plata" y la idea es que le pongas algo de onda ...

Saludos.


jaja, seguro es "algo de onda" lo que me está faltando... jajaja
En realidad, no lo veo tan sencillo como "te hacés un script y lo calculas". Claro que no busco un soft que entrege la información procesada, ordenada y sólo la info que estoy buscando.  Entiendo que voy a tener que procesar un archivo pasa sacar la info que no me interesa y calcular si es necesario, los valores de utilización que estoy buscando.
Sin embargo, los comandos que sugeriste (y otros que vi hasta ahora) no informan nada relacionado con lo que estoy pidiendo... para realizar cálculos, por supuesto que necesito los datos "base" o datos "en crudo"; en este caso, sería: tiempo de utilización de cada recurso (por procesos). Con esto puedo calcular los porcentajes de utilización que estoy buscando.
Si no sabés cómo puedo obtener esta info, entonces no es sencillo y hace falta un poco más que "onda"...

Saludos y gracias por tus respuestas

Foxy Rider

Datos desde que arrancó o tiempos anteriores no los tenés (el sistema no los guarda, ni de casualidad ... por eso, con los datos actuales el uso en un período de tiempo lo sacás vos ...), salvo que arranques desde un init script  ... y en ese caso el código es el mismo que lo que te planteo .... de armar un script que empieze a recabar datos y almacenarlos desde tal período de tiempo a tal ...  con ayuda de esos comandos que te puse (no son más de 15 líneas de bash)

Saludos.