Bonjour,
Je voudrais récupérer les infos lors d'une montée en charge d'un serveur :
- le nom de l'appli responsable
- son pid
- l'heure
Mais uniquement quand il y a une activité au delà d'un certain seuil de CPU, disque, mémoire.
Je veux juste monitorer "rapidement" sans avoir besoin de mettre en place un Nagios, ou équivalent.
Existe-il un moyen de récupérer ces infos sans avoir besoin de scripter un truc trop long ?
Le package sysstat, avec sar et mpstat permettent pas de chose.
Je veux juste avoir le "nom" de l'appli coupable ?
Merci d'avance de vos retours.
# script simple
Posté par Axioplase ıɥs∀ (site web personnel) . Évalué à 3.
uptime pour avoir la charge.
si la charge est plus grande que SEUIL
alors
loop 10 fois
1/ top > stats pour voir qui tourne
2/ un coup de perl sur ce fichier stats pour stocker l'utilisation mémoire/CPU de chaque PID dans un hash (en additionant à la valeur précédente)
fin loop
divise les valeurs de ta table de hash par 10 pour choper la moyenne
retourne le PID qui a la plus grosse.
fin si
[^] # Re: script simple
Posté par Old Geek . Évalué à 1.
Le plus de CPU :
ps xua | sort -n -k3 | tail -3
Le plus de Mémoire :
ps xua | sort -n -k4 | tail -3
(bizarre d'ailleurs le "ps --sort %cpu uax" fonctionne mais pas le "ps --sort %mem uax",
un bug ???)
[^] # Re: script simple
Posté par defmonkey . Évalué à 1.
Ok si tu veux effectivement agir en fontion de la moyenne du CPU moyennée sur les dernières 1/5/15 minutes. Si tu as besoin de plus de granularité, tu peux partir su vmstat. Genre sur ma machine, pour faire un check toutes les secondes et ne néclancher l'outil de diagnostic que si le CPU est > 10% du total (à adapter selon la machine, ou regarder les indexes des champs en début de script pour les mapper dynamiquement dans le awk) :
> seuil=10; vmstat 1 | awk '/^[^a-z]*$/ {print $13 + $14; fflush ();}' | while read cpu; do case `expr $cpu \< $seuil` in 0) echo "`date` pOwned";; esac; done
Si par contre tu veux faire ça en fonction d'1 nombre restreint de processus, alors tu peux utiliser `top -n 1' et grepper sur les lignes qui t'interressent.
Et attention au machines multicoeurs: avec 4 coeurs, 1 process à fond sur 1 coeur prend 25% de CPU.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.