FORUM Syndrome-OC - Jacky-PC


  Programmation


  Langage interprété(Php, Perl...)


  Okillerd Like (Gkillerd) récuperation des processus

 




1 utilisateur anonyme et 13 utilisateurs inconnus

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Okillerd Like (Gkillerd) récuperation des processus

n°7850
G r i b o ​u i l l e
House Music
Posté le 27-02-2008 à 22:28:24  profilanswer
 

Yop,
/* Pour les flemmards sauter directement au paragraphe en gras pour le vif du sujet */

 

Ceux qui bossent avec OVH doivent bien connaitre notre ami Okillerd, pour les autres je résume :
Okillerd est un processus qui tourne sur les offres mutualisés d'OVH (je pense pas pour les virtualisés) et qui surveille l'activité des processus pour éviter dérapages et appropriation des resources à un seul utilisateur.
En cas d'excès il alerte ceux qui doivent l'être et kill le processus.

 

Je cherche pour ma part à coder un Gkillerd avec pour principale fonction de surveiller l'utilisation processeur (pas mémoire, réseau ou disque dans un premier temps).
Pour cela je dispose de connaissances en développement sur plateformes unix, et des languages Ruby, Perl, PHP. Toute la gestion de la tolérance, de la communication avec les systèmes d'alerte de kill et autre seront codés dans un de ces languages.

 

Problématique, pour récuperrer l'utilisation processeur à un instant t d'un processus p je ne sais pas à quoi faire appel.
Soit à « top » en non interractif et parser le résultat ce qui est over-gore et dépendant de la façon dont « top » formate sa sortie et ensutie complêter avec un « ps » pour paufiner les informations retournés.
OU : existe-il une façon propre d'extraire l'état des processus (charge processeur, mémoire, etc.) directement au travers d'un module perl, fonction PHP, ou outil cli système?
Le problème est vraiment limité à collecte des informations, le reste ne pose pas de problème.

 

Merci pour vos réponses :)

PS: si des bibliothèques C le permettent je peut être interessé mais je ne touche pas grand chose en language compilé, juste assez pour faire un mini-programme qui formatera les donnés pour les exploiter avec un script Perl/Ruby/PHP. Pour les alternatives en Java je ne suis pas prenneur.


Message édité par G r i b o u i l l e le 27-02-2008 à 22:34:26
mood
Google
Posté le 27-02-2008 à 22:28:24  profilanswer
 

n°7852
Dr Lous
I see old password
Posté le 27-02-2008 à 23:13:48  profilanswer
 

regarde dans /proc/<pid>/stat
 
:)

n°7853
G r i b o ​u i l l e
House Music
Posté le 27-02-2008 à 23:25:45  profilanswer
 

Oki merci beaucoup.
 
Je suis actuellement en train de lire ceci  

Code :
  1. #!/bin/bash
  2. THIS_SCRIPT=$0
  3. ROOT_UID=0   # Only users with $UID 0 have root privileges.
  4. E_NOTROOT=65
  5. E_NOPARAMS=66
  6. if [ "$UID" -ne "$ROOT_UID" ]
  7. then
  8.   echo "Must be root to run this script."
  9.   # "Run along kid, it's past your bedtime."
  10.   exit $E_NOTROOT
  11. fi 
  12. # Modified significantly by E. Hymel 11/2007, starting from:
  13. # March-13-2006
  14. # CPUuse trigger script by Noel
  15. #
  16. # bash code to watch a running program's CPU usage.
  17. # if it's above a set value, it will auto send an email/kill the process.
  18. # You will need to set a Cron job to run this script every xx minutes
  19. #
  20. # Set some needed things:
  21. #
  22. processToWatch="httpd"
  23. emailAddress="root"
  24. logFile="/var/log/killed-processes"
  25. # identify process using up at least this percentage CPU power
  26. cpuPercentTriggerValue=3  # DO NOT USE a DOT or COMMA!
  27. # identify process that has been active for at least this long (in minutes)
  28. cpuTimeTriggerValue=9   # DO NOT USE a DOT or COMMA!
  29. tempFileName="/tmp/tmp-cpu"
  30. tempFileName1="/tmp/tmp-cpu1"
  31. top -b -n 1 |grep httpd > $tempFileName
  32. export LINE
  33. (
  34. read LINE
  35. while [ -n "$LINE" ]
  36. do
  37.   set $LINE
  38.   read LINE
  39.   if [ $(echo "$9" | sed -e 's/\.[0-9]*//g') -gt $cpuPercentTriggerValue ]; then
  40.     if [ $(echo "${11}" | sed -e 's/\:[0-9]*//g' | sed -e 's/\.[0-9]*//g') -gt $cpuTimeTriggerValue ]; then
  41.       touch $tempFileName1
  42.       echo "Killing httpd with PID $1:" >> $tempFileName1
  43.       echo "  $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ${11} ${12}" >> $tempFileName1
  44.       echo "" >> $tempFileName1
  45. #      /bin/cat $tempFileName1
  46.       /bin/kill -9 $1
  47.     fi
  48.   fi
  49. done
  50. ) < $tempFileName
  51. if [ -f $tempFileName1 ]; then
  52. #  /bin/cat $tempFileName1 | /bin/mail -s "httpd process killed" $emailAddress
  53.   /bin/echo "************" >> $logFile
  54.   /bin/date >>$logFile
  55.   /bin/cat $tempFileName1 >> $logFile
  56.   /bin/rm -f $tempFileName1
  57.  
  58.   # if we just killed a script, then there may be more to kill now that fewer processess
  59.   # are contributing to the %cpu time. So, run this script again.
  60.   $THIS_SCRIPT
  61. fi


Qui a l'air de satisfaire mes besoins premiers.
 
On va voir ce que ça donne


Message édité par G r i b o u i l l e le 14-03-2008 à 18:41:52
mood
Google
Posté le 27-02-2008 à 23:25:45  profilanswer
 


Aller à :
Ajouter une réponse

  FORUM Syndrome-OC - Jacky-PC


  Programmation


  Langage interprété(Php, Perl...)


  Okillerd Like (Gkillerd) récuperation des processus

 

Hit Parade