comment surveiller le time et le time d'arrêt d'un service Linux

Comment surveiller le time et les time d'arrêt d'un service Linux.

J'ai créé un service pour mon application en utilisant chkconfig (RHEL 6.3). Je veux surveiller lorsque le service est démarré et arrêté.

Je peux surveiller le service en écrivant dans le file journal tout en donnant le service test start/stop mais cela n'attraperait pas mon application si elle se bloquait ou se terminait anormalement.

Si vous voulez surveiller de nombreuses applications sur un server différent, alors allez à NagiOS, si vous voulez surveiller une application spécifique, la propriété des files, puis n'importe quoi, alors allez pour Monit.

Vous pouvez utiliser Monit

Pour surveiller les process démon ou les programmes similaires exécutés sur localhost. Monit est particulièrement utile pour surveiller les process du démon, tels que ceux démarrés au démarrage du système à partir de /etc/init.d/. Par exemple sendmail, sshd, apache et mysql.

Contrairement à de nombreux systèmes de surveillance, Monit peut agir si une situation d'erreur se produit, par exemple; si sendmail n'est pas en cours d'exécution, Monit peut redémarrer sendmail automatiquement ou si apache utilise trop de ressources (par exemple si une attaque DoS est en cours) Monit peut arrêter ou redémarrer apache et vous envoyer un message d'alerte. Monit peut également surveiller les caractéristiques du process, tels que; combien de cycles de memory ou de processeur un process utilise

Mise à jour :: Partie de configuration

Monit est plus facile à installer via aptitude ou apt-get

 sudo aptitude install monit 

Une fois les téléchargements téléchargés, vous pouvez append des programmes et des process au file de configuration

 vim /etc/monit/monitrc set daemon 3 # check services at 3-second intervals set logfile /var/log/monit.log # you can see what monit is doing set alert [email protected] # receive all alerts include /etc/monit.d/* # add monit script path 

Créez ensuite un script monit pour votre application, regardez l'exemple de script suivant:

Il suffit de créer un script /etc/monit.d/ dans /etc/monit.d/ comme /etc/monit.d/httpd.monit puis recharger le service monit et vérifier les logs de monit tail -f /var/log/monit.log

Pour Apache

 check process apache with pidfile /usr/local/apache/logs/httpd.pid start program = "/etc/init.d/httpd start" with timeout 60 seconds stop program = "/etc/init.d/httpd stop" if cpu > 60% for 2 cycles then alert if cpu > 80% for 5 cycles then restart if totalmem > 200.0 MB for 5 cycles then restart if children > 250 then restart if loadavg(5min) greater than 10 for 8 cycles then stop if failed host www.tildeslash.com port 80 protocol http and request "/monit/doc/next.php" then restart if failed port 443 type tcpssl protocol http with timeout 15 seconds then restart if 3 restarts within 5 cycles then timeout depends on apache_bin group server 

Pour Safesquid Proxy

 # Check if the safesquid process is running by monitoring the PID recorded in /opt/safesquid/safesquid/run/safesquid.pid check process safesquid with pidfile /opt/safesquid/safesquid/run/safesquid.pid group root start program = "/etc/init.d/safesquid start" stop program = "/etc/init.d/safesquid stop" mode active # If safesquid process is active it must be updating the performance log at # /opt/safesquid/safesquid/logs/performance/performance.log every 2 seconds. # If the file is more than 3 seconds old we definitely have a problem check file "safesquid-PERFORMANCELOG" with path /opt/safesquid/safesquid/logs/performance/performance.log if timestamp > 3 SECOND then alert 

Si vous connaissez le pid du service que vous souhaitez surveiller, je l'ai écrit il y a un certain time pour le suivi de l'utilisation des ressources de certaines choses sur un server:

http://cognitivedissonance.ca/cogware/plog

Il est complètement stable, très bas profil, et assez simple à utiliser. Il signale une version un peu plus détaillée de ce que vous pourriez voir en haut, mais à une fréquence plus basse et des rapports à un file journal. Ainsi, par exemple, vous pouvez le configurer pour vérifier le process toutes les minutes ou cinq minutes – ce qui ne vous donnera probablement pas beaucoup d'indices sur la cause, mais il vous donnera une window pour savoir quand il s'est arrêté.

Dans les commentaires, vous avez mentionné que vous essayez de surveiller un server Web JBoss.

Vous avez demandé comment surveiller votre service , pas votre process. Peu importe si JBoss est toujours en cours d'exécution, si le process a été bloqué et ne répond plus aux requêtes. Vous voulez savoir si le service ne fonctionne pas, pas seulement si le process meurt.

Si vous ne souhaitez pas exécuter un package de surveillance de service à grande échelle comme Nagios ou Icinga ou Zabbix ou OpenNMS ou Shinken ou Zenoss , vous pouvez toujours utiliser un curl comme curl ou wget .

Créez un script, appelons-le /root/bin/check_web , et lancez-le dans un crontab:

 */5 * * * * /root/bin/check_web http://www.example.com [email protected] 

Le script pourrait ressembler à quelque chose comme:

 #!/bin/bash if [[ $1 !~ ^https?://[az][az.]+ ]]; then echo "ERROR: that doesn't look like a URL ($1)" >&2 exit 1 elif [[ $2 !~ .+@[a-z0-9.-]+ ]]; then echo "ERROR: that doesn't look like an email address ($2)" >&2 exit 1 fi flag="/tmp/m-${1//[^[:alnum:]:.-]/_}" wget -O /dev/null -q "$1" result=$? if [[ $result -eq 0 ]]; then if [ -f "$flag" ]; then date | Mail -s "Clear: $1" "$2" rm -f "$flag" fi else if [ ! -f "$flag" ]; then echo "error: $?" | Mail -s "OFFLINE: $1" "$2" touch "$flag" fi fi 

Le nid de if s aide à réduire le bruit de votre messagerie en cas de problème. Vous n'avez pas besoin d'être distrait avec un autre avis toutes les 5 minutes pendant que vous travaillez sur la résolution du problème. Mais il est agréable d'avoir un avis que les choses sont returnnées, au cas où le problème se produit à partir d'un redémarrage spontané ou d'une panne de réseau transitoire.

Avec un script légèrement générique comme celui-ci, vous pouvez surveiller plusieurs sites et configurer plusieurs destinataires de courrier électronique pour la notification.

Créez un peu plus de ces scripts et ajoutez peut-être des fonctionnalités pour émettre des AVERTISSEMENTS pour les réponses lentes qui diffèrent des CRITIQUES lorsque le service se déconnecte complètement, puis fournissez une interface Web pour parcourir et gérer l'état des différents hôtes et créer un démon dédié qui exécute ces derniers au lieu de cron, et vous avez Nagios. 🙂

Avez-vous envisagé de courir Nagios?