Si vous avez été administrateur pendant un certain temps, vous avez certainement découvert des situations dans lesquelles un serveur augmente son utilisation du processeur ou de la mémoire et / ou des niveaux de charge. Lancer "top" ne vous donnera pas toujours la réponse non plus. Alors, comment trouvez-vous ces processus sournois qui grugent les ressources de votre système pour pouvoir les tuer?
Le script suivant pourrait vous aider. Il a été écrit pour un serveur Web, il contient donc certaines parties qui recherchent spécifiquement les processus httpd et certaines parties qui traitent de MySQL. En fonction de votre déploiement de serveur, commentez / supprimez simplement ces sections et ajoutez-en d'autres. Il doit être utilisé comme point de départ.
Les prérequis pour cette version du script sont des logiciels gratuits publiés sous la licence publique générale GNU appelée mytop (disponible sur
http://jeremy.zawodny.com/mysql/mytop/
) qui est un outil fantastique pour vérifier les performances de MySQL. Il vieillit, mais fonctionne toujours très bien pour nos besoins ici.
De plus, j'utilise mutt comme mailer - vous pouvez changer le script pour utiliser simplement l'utilitaire `mail` intégré à Linux. Je l'exécute via cron toutes les heures; ajustez comme bon vous semble. Oh - et ce script doit s'exécuter en tant que root car il lit à partir de certaines zones protégées du serveur.
Alors commençons, d'accord?
Tout d'abord, définissez vos variables de script:
#! / Bin / Bash
#
# Script pour vérifier les niveaux moyens de charge du système pour essayer de déterminer
# quels processus le prennent trop haut ...
#
# 07Jul2010 tjones
#
# définir l'environnement
dt = `date +% d% b% Y-% X`
# Évidemment, changez les répertoires suivants dans lesquels vos fichiers journaux sont réellement conservés
tmpfile = "/ tmp / checkSystemLoad.tmp"
logfile = "/ tmp / checkSystemLoad.log"
msgLog="/var/log/messages"
mysqlLog="/var/log/mysqld.log"
# le premier mailstop est un e-mail standard pour les rapports. Le deuxième est pour le téléphone portable (avec un rapport épuré)
mailstop = "[email protected]"
mailstop1 = "[email protected]"
machine = `hostname`
# Les trois suivants sont destinés à une utilisation mytop - utilisez un utilisateur de base de données disposant de droits décents
dbusr = "nom d'utilisateur"
dbpw = "mot de passe"
db = "yourdatabasename"
# Ce qui suit est le niveau de charge à vérifier - 10 est vraiment élevé, vous voudrez peut-être le réduire.
levelToCheck = 10
Ensuite, vérifiez votre niveau de charge pour voir si le script doit continuer:
# Définir les variables du système:
loadLevel = `cat / proc / loadavg | awk '{print $1}' '
loadLevel = $ (printf "% 0.f" $ loadLevel)# si le niveau de charge est supérieur à ce que vous souhaitez, démarrez le processus de script. Sinon, quittez 0
si [ $loadLevel -gt $levelToCheck ]; puis
echo ""> $ tmpfile
echo "**************************************" >> $ tmpfile
echo "Date: $ dt" >> $ tmpfile
echo "Vérifier la charge du système et les processus" >> $ tmpfile
echo "**************************************" >> $ tmpfile