web-dev-qa-db-fra.com

Comment surveiller et enregistrer l'utilisation de la mémoire / CPU des processus au fil du temps?

Je cherche un moyen de diagnostiquer des problèmes, tels que la mort de swap, où un processus de mémoire de ballon remplit le swap et tue toute la machine (comme Apache).

J'utilise déjà des cactus et je peux configurer des nagios (bien que je ne préfère pas) ou des munins mais pour autant que je sache, ils ne peuvent pas enregistrer l'utilisation de programme individuel - juste le statut général.

Je sais que je peux rouler un script >> dans un fichier toutes les 30 secondes, mais j'aimerais voir si une solution mature existante existe déjà.

Encore une fois, idéalement, cela:

  • enregistrer l'utilisation de la mémoire des processus toutes les N secondes
  • enregistrer l'utilisation du processeur des processus toutes les N secondes
  • graphiques et historique du support
  • moyennes de support - comme mysqld a utilisé 43% de CPU au cours du dernier jour et en moyenne 400 Mo de mémoire
  • être libre et open source

Les noms des processus ne sont pas et ne devraient pas être connus à l'avance - l'idée est simplement de le laisser surveiller et de jeter un coup d'œil aux principaux délinquants.

Mon système est Linux (OpenSUSE).

32
Artem Russakovskii

Si vous ne voulez que les meilleurs délinquants, envisagez d'exécuter top avec un intervalle relativement long (60 secondes et plus) en mode batch. Vous devrez peut-être exécuter plus d'un top pour capturer les principaux délinquants sur plusieurs ressources. J'ai configuré des systèmes pour exécuter top pendant quelques cycles lorsqu'une ressource était surutilisée.

Envisagez d'exécuter sar en mode batch pour capturer l'utilisation des ressources. Je me rends compte que cela est basé sur le serveur, mais il est utile de déterminer les moments où des problèmes se produisent.

Exécutez munin et activez les notifications. Cela peut vous donner une chance d'entrer et de regarder le serveur tomber en panne. Vous pourrez peut-être corriger le problème avant qu'il ne tombe en panne.

Pour les fuites de mémoire, une augmentation constante de l'utilisation du swap indique un problème. Une fois, j'ai vu un serveur mourir lentement pendant plusieurs jours. Le service de problème était un programme surveillant d'autres processus pour les fuites de mémoire. L'administrateur système a continué d'insister sur le fait que l'utilisation croissante des swaps n'était pas un problème, jusqu'à ce que le serveur cesse de répondre.

Vous pouvez constater que la détection d'anomalies de cfengine peut être utilisée pour déclencher un script pour capturer l'état du système en cas de problème. Vous voudrez peut-être beaucoup d'informations en plus des processus utilisant le plus de ressources. Pour un afflux soudain d'utilisation, vous souhaiterez peut-être une liste de connexions réseau (par adresse et non par nom). L'utilisation de la mémoire est également utile.

16
BillThor

sysstat est fait à peu près exactement pour votre type d'objectif.

12
Peter Eisentraut

Je l'ai utilisé au sommet avant:

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

"Au sommet est un ASCII moniteur de performances plein écran qui est capable de signaler l'activité de tous les processus (même si les processus se sont terminés pendant l'intervalle), la journalisation quotidienne du système et l'activité des processus pendant une longue période). analyse des termes, mettant en évidence les ressources système surchargées à l'aide de couleurs, etc. À intervalles réguliers, il affiche l'activité au niveau du système liée au processeur, à la mémoire, aux swaps, aux disques et aux couches réseau, et pour chaque processus actif, il montre l'utilisation du processeur, le croissance de la mémoire, priorité, nom d'utilisateur, état et code de sortie. "

9
NinjaCat

Avez-vous essayé collectd?
C'est très puissant et personnalisable.
Possède de nombreux plugins et pourrait être intégré à nagios.

http://collectd.org/features.shtml

6
PiL

http://studyhat.blogspot.com/2010/08/user-activity-view-processes-display.html

regardez ci-dessus le petit code de lien qui vous donne plus de mémoire, etc.

2
Rajat

nmon est un excellent outil qui fait ce que vous cherchez. Développé pour AIX et Linux. Produit une tonne de sortie détaillée et facile à mettre dans les rapports. Si vous le recherchez sur Google, il existe un wiki IBM qui contient un tas de documentation et des utilitaires supplémentaires pour analyser les données.

2
mattcaffeine

Les réponses suggérées lorsque j'ai posé une question similaire question :

Icapandit :

Munin est le moyen le plus simple d'obtenir des graphiques de disponibilité avec un minimum d'effort lors de l'installation et de la configuration. J'utilise également atop pour une utilisation globale des processeurs par certains processus, mais ce n'est pas ce que vous avez demandé.

David Spilletdit :

J'utilise collectd pour enregistrer la charge du système parmi un certain nombre d'autres paramètres. Il stocke les données dans RRD magasins qui peuvent être représentés graphiquement et autrement analysés à l'aide des nombreux outils et scripts disponibles. J'utilise une version modifiée de ce script pour mon graphique ( exemple de sortie ).

Collectd a des plugins pour surveiller beaucoup de choses (tout ce qui est souvent demandé et quelques choses en haut), et créer votre propre ne devrait pas être difficile si vous avez besoin de quelque chose de spécialisé, donc c'est un outil très flexible. La configuration des graphiques dans rrd.cgi est un processus très manuel, mais pas difficile, bien que vous puissiez trouver un outil plus pratique pour travailler avec les fichiers RRD maintenus par collectd.

Vous pouvez également vérifier Nagios ou OpenNMS , aussi.

2
warren

Densité du serveur fait exactement ce que vous décrivez.

Je l'utilise sur l'un de nos serveurs de production et j'en suis très content. Sa fonctionnalité principale est la possibilité d'afficher des graphiques, de cliquer sur un pic et de voir la consommation CPU/mémoire du serveur à l'heure actuelle, y compris tous les processus en cours d'exécution. Ils l'appellent ( instantanés .

Il s'améliore constamment. L'une des dernières fonctionnalités est la détection d'anomalies , qui vous permet de détecter facilement les anomalies. Vous pouvez également configurer différents seuils

2
Aron Rotteveel

Centreon au sommet de Nagios, Nagios couplé avec NRPE. Vous pouvez ensuite écrire des scripts personnalisés pour signaler les données dans N'IMPORTE QUEL format que vous souhaitez à NRPE. Nagios interroge ensuite les données des serveurs distants avec NRPE et Centreon fait un joli graphique et ajoute une tonne de flexibilité utilisateur. Nous l'utilisons sur http://beyondhosting.net J'ai déjà un modèle de conteneur VZ avec la configuration centreon + nagios si vous le souhaitez.

Graphes centreon builds hostthenpost.org/tyler/2010-07-23_1719.png

2
VisBits

Peut-être que le bon vieux OProfile fait ce dont vous avez besoin? Il s'agit d'un profileur de niveau système basé sur le noyau avec seulement une petite surcharge (quelques pourcentages).

Ensuite, il y a un excellent script Perl, PSMon , qui vous permet de configurer toutes sortes de limites CPU/mémoire. Si ceux-ci sont dépassés, psmon enregistrera une erreur et/ou tuera le processus incriminé.

Ce dernier ne vous produirait aucun rapport de profilage, mais s'il décide de tuer le même processus encore et encore, vous avez probablement trouvé le salaud méchant que vous recherchiez. :-)

1
Janne Pikkarainen

Munin fera tout ce dont vous avez besoin hors de la boîte sans nécessiter Nagios ou tout autre outil. Des RPM sont disponibles pour OpenSUSE.

1
gareth_bowles