¿Cómo monitorear y registrar el uso de memoria / CPU de los procesos a lo largo del tiempo? [cerrado]


30

Estoy buscando una forma de diagnosticar problemas, como la muerte por intercambio, donde un proceso de memoria inflable llena el intercambio y mata toda la máquina (como apache).

Ya estoy usando cactus y puedo configurar nagios (aunque preferiría que no) o munin, pero por lo que puedo decir, no pueden registrar el uso individual del programa, solo el estado general.

Sé que puedo transferir un script que >> a algún archivo cada 30 años, pero me gustaría ver si ya existe una solución madura existente.

De nuevo, idealmente sería:

  • registrar el uso de memoria de los procesos cada N segundos
  • registrar el uso de CPU de los procesos cada N segundos
  • gráficos de soporte e historia
  • promedios de soporte, como mysqld ha usado 43% de CPU en el último día y promedió 400 MB de memoria
  • ser libre y de código abierto

Los nombres de los procesos no son y no deben conocerse de antemano; la idea es simplemente dejar que supervise y luego echar un vistazo a los principales infractores.

Mi sistema es Linux (OpenSUSE).


¿Desea monitorear algún proceso que pueda tener una pérdida de memoria (los principales cerdos de memoria N) o está buscando monitorear un conjunto definido de procesos (por ejemplo, el servidor web Apache y un proceso Tomcat)? Este último es factible con algunos complementos simples de Nagios o Cacti. Lo primero es más difícil. Deberías aclarar esto.
Stefan Lasiewski

Ya lo aclaré en la publicación, pero para aclarar nuevamente: quiero saber el estado del sistema cuando se cae debido a la muerte por intercambio. Quiero saber quiénes son los peores delincuentes. Y por cierto, no tiene que ser una pérdida de memoria, solo una afluencia de tráfico, o lo que sea que cause un alto uso de memoria. Entonces, de nuevo, no se debe configurar ningún conocimiento previo de nombres binarios.
Artem Russakovskii


Warren, esa es una pregunta completamente diferente.
Artem Russakovskii

8
Cerrar una publicación de tan buena calidad fue algo malo, especialmente después de 4 años retroactivamente.
Peter dice reinstalar a Mónica el

Respuestas:


16

Si desea solo a los delincuentes principales, considere ejecutar topcon un intervalo relativamente largo (más de 60 segundos) en modo por lotes. Es posible que necesite más de una topejecución para capturar a los principales delincuentes en múltiples recursos. He configurado los sistemas para que se ejecuten topdurante algunos ciclos cuando se está utilizando un recurso en exceso.

Considere ejecutar saren modo por lotes para capturar la utilización de recursos. Me doy cuenta de que esto está basado en el servidor, pero es útil para determinar los momentos en que se producen problemas.

Ejecuta muniny habilita las notificaciones. Esto puede darle la oportunidad de entrar y ver cómo se cae el servidor. Es posible que pueda corregir el problema antes de que desaparezca.

Para pérdidas de memoria, un aumento constante en el uso de intercambio indica un problema. Una vez vi un servidor morir lentamente durante un período de días. El servicio del problema era un programa que supervisaba otros procesos para detectar pérdidas de memoria. El administrador del sistema siguió insistiendo en que el uso creciente de intercambio no era un problema, hasta que el servidor dejó de responder.

Puede descubrir que cfenginela detección de anomalías se puede utilizar para activar un script para capturar el estado del sistema cuando las cosas salen mal. Es posible que desee mucha información además de los procesos que utilizan la mayoría de los recursos. Para una afluencia repentina de uso, es posible que desee una lista de conexiones de red (por dirección, no por nombre). El uso de la memoria también es útil.


12

sysstat está hecho exactamente para su tipo de propósito.


Aquí es dónde deberías empezar. No puede saber dónde comenzar un examen hasta que sepa dónde podría tener las mejores posibilidades. Sysstat es lo que estás buscando (también tiene gráficos bonitos). Una vez que sepa más, use systemtap.
Allen

9

He usado encima antes:

http://freshmeat.net/projects/atop/

"Encima es un monitor de rendimiento de pantalla completa ASCII que es capaz de informar la actividad de todos los procesos (incluso si los procesos han finalizado durante el intervalo), el registro diario del sistema y la actividad del proceso para el análisis a largo plazo, destacando los recursos del sistema sobrecargados mediante el uso colores, etc. A intervalos regulares, muestra la actividad a nivel del sistema relacionada con la CPU, la memoria, el intercambio, los discos y las capas de red, y para cada proceso activo muestra la utilización de la CPU, el crecimiento de la memoria, la prioridad, el nombre de usuario, el estado, y el código de salida ".


encima no parece tener un informe que me proporcione lo que quería. Por favor corrígeme si estoy equivocado.
Artem Russakovskii

Se encarga de sus dos primeros puntos (memoria / CPU por proceso). Puede usar la biblioteca para recopilar estas estadísticas y luego hacer su historial / gráficos basados ​​en los datos.
NinjaCat

44
@ artem-russakovskii: de forma predeterminada, registra los datos en un archivo cada diez minutos. Si su servidor se bloqueó a las 3:45 con la que podría comenzar atop -r log_filename, presione mpara cambiar a la vista de uso de memoria por proceso y luego presione tpara avanzar en incrementos de 10 minutos hasta las 3:40. Puede leer más sobre los conceptos básicos del uso de top en lwn.net/Articles/387202 y ver un ejemplo de identificación de una pérdida de memoria en atoptool.nl/download/case_leakage.pdf
sciurus

6

¿Has probado collectd?
Es muy potente y personalizable.
Tiene muchos complementos y podría integrarse con nagios.

http://collectd.org/features.shtml


Collectd es muy ligero, no es demasiado difícil de configurar y le permitirá ver el crecimiento de la memoria / intercambio con el tiempo. Sin embargo, no detectará los procesos ofensivos, pero tal vez pueda notar y detectar el crecimiento de la memoria a tiempo e inspeccionar la situación manualmente top.
Marius Gedminas

1
Tengo que decir que no probé ese complemento, pero leyendo el manual del complemento de proceso de collectd: "Si se seleccionan los procesos, se recopila la siguiente información. Toda esta información se agrega por el nombre del proceso. Su tamaño de segmento residente, Tiempo de uso del usuario y del sistema, el número de procesos con ese nombre, el número de subprocesos (resumidos en todos los procesos), el número de fallas de página mayores y menores. Números de E / S aproximadas (bytes escritos y leídos debido a syscalls por el proceso).
PiL

Puede seleccionar los procesos o por nombre o por expresiones regulares.
PiL

2

Centreon en la parte superior de Nagios, Nagios junto con NRPE. Luego puede escribir scripts personalizados para informar datos en CUALQUIER formato que desee NRPE. Nagios luego sondea los datos de los servidores remotos con NRPE y Centreon hace un gráfico bonito y agrega una tonelada de flexibilidad al usuario. Lo usamos en http://beyondhosting.net. Tengo una plantilla de Contenedor VZ con configuración de centreon + nagios ya si lo desea.

Graphs centreon construye hostthenpost.org/tyler/2010-07-23_1719.png


Quisiera una solución lista para informar sobre las cosas que mencioné, los procesos más importantes que consumen la mayor cantidad de memoria. Tampoco estoy seguro de qué es VZ.
Artem Russakovskii

2

nmon es una gran herramienta que hace lo que estás buscando. Desarrollado para AIX y Linux. Produce una tonelada de resultados detallados y fáciles de poner en informes. Si lo busca en Google, hay un wiki de IBM que tiene un montón de documentación y utilidades adicionales para analizar los datos.


2

La densidad del servidor hace exactamente lo que usted describe.

Lo uso en uno de nuestros servidores de producción y estoy muy contento. Su característica principal es la capacidad de ver gráficos, hacer clic en un pico y ver el consumo de CPU / memoria del servidor en ese momento, incluidos todos los procesos en ejecución. Lo llaman instantáneas .

Está mejorando constantemente. Una de las últimas características es la detección de anomalías , que le permite detectar fácilmente anomalías. También puedes configurar varios umbrales


1
Ah, olvidé mencionar la pequeña parte donde preferiría que fuera gratis y de código abierto, si es posible. Más de $ 100 por servidor no es realmente lo que estoy buscando gastar (y solo tengo 1 servidor, no 5). serverdensity.com/pricing
Artem Russakovskii


2

Las respuestas sugirieron cuando hice una pregunta similar :

Icapan dijo :

Munin es la forma más fácil de obtener gráficos de tiempo de actividad con un mínimo esfuerzo en la instalación y configuración. También uso sobre el uso agregado de la CPU por algún proceso, pero eso no es lo que pediste.

David Spillet dijo :

Utilizo collectd para registrar la carga del sistema entre otros parámetros. Almacena los datos en tiendas RRD que se pueden graficar y analizar de otro modo utilizando las muchas herramientas y scripts disponibles. Utilizo una versión modificada de este script para mis gráficos ( salida de muestra ).

Collectd tiene complementos para monitorear muchas cosas (todo lo que comúnmente se pide y algunas cosas más arriba), y crear uno propio no debería ser difícil si necesita algo especializado, por lo que es una herramienta muy flexible. La configuración de los gráficos en rrd.cgi es un proceso muy manual, aunque no es difícil, aunque bien podría encontrar una herramienta más conveniente para trabajar con los archivos RRD mantenidos por collectd.

También puede consultar Nagios u OpenNMS , también.


1

Munin hará todo lo que necesita sin necesidad de utilizar Nagios ni ninguna otra herramienta. Hay RPM disponibles para OpenSUSE.


¿Lo hace con un complemento? ¿Si es así, Cuál? No he podido encontrar uno que no requiera una lista de procesos preconfigurados para monitorear.
Artem Russakovskii

No quedó claro en su pregunta original que no desea supervisar una lista de procesos preconfigurada: ¿podría proporcionar más detalles sobre sus requisitos?
gareth_bowles

Aclaración: los nombres de los procesos no son y no deben conocerse de antemano; la idea es simplemente dejar que supervise y luego echar un vistazo a los principales infractores.
Artem Russakovskii

1

¿Quizás el viejo OProfile hace lo que necesita? Es un generador de perfiles a nivel de sistema basado en el núcleo con solo una pequeña sobrecarga (un par de porcentajes).

Luego hay un excelente script de Perl, PSMon , que le permite configurar todo tipo de límites de CPU / memoria. Si se exceden, psmon registrará un error y / o matará el proceso ofensivo.

Este último no le generará ningún informe de perfil, pero si decide matar el mismo proceso una y otra vez, probablemente haya encontrado al desagradable bastardo que estaba buscando. :-)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.