Je souhaite surveiller la CPU et l'utilisation de la RAM sur mon serveur distant, ainsi que configurer un système de notification qui m'avertit lorsque l'utilisation de la RAM est élevée et automatiquement arrêter ce processus.
J'ai essayé le plugin Nagios mais il y a eu des erreurs.
Des alternatives à cela?
Edit: s'il vous plaît ne suggérez pas htop
, free
, top
etc. sa santé à plusieurs reprises!
Connaissez-vous top
? Montre votre utilisation de la CPU et du RAM (et plus) pour chaque processus ainsi que la somme totale.
vous pouvez également exécuter top -u USER
pour afficher uniquement les processus d'un utilisateur spécifique. commencez simplement par exécuter top
sans arguments. appuyez sur q
pour quitter.
EDIT
et pour l’utiliser dans un script: essayez top -b -n1
pour une exécution en mode non interactif. vous pouvez ensuite analyser les données avec head
, sed
et grep
comme bon vous semble.
Je crée un script personnalisé. Ce n'est pas une solution complète pour vous mais peut-être de l'aide.
#!/bin/bash
#we use output from "uptime" and "w" on every 5 min
UPTIME=`uptime`;
W=`w`;
RAM=`free -m`;
PS=`ps auxf | sort -nr -k 4 | head -15`
DATUM=`date`;
sleep 3
MYSQL=`mysqladmin -u root -pmz567sQld processlist;`
sleep 3
SYN=`netstat -natp | grep SYN`
sleep 3
HTTPD=`pgrep httpd | wc -l`
sleep 3
echo "######################################" >> /var/log/load-result/load_log
echo "$DATE" >> /var/log/load-result/load_log
echo "" >> /var/log/load-result/load_log
echo "UPTIME:" >> /var/log/load-result/load_log
echo "" >> /var/log/load-result/load_log
echo "$UPTIME" >> /var/log/load-result/load_log
echo "" >> /var/log/load-result/load_log
echo "W COMMAND:" >> /var/log/load-result/load_log
echo "" >> /var/log/load-result/load_log
echo "$W" >> /var/log/load-result/load_log
echo "" >> /var/log/load-result/load_log
echo "FREE RAM:" >> /var/log/load-result/load_log
echo "$RAM" >> /var/log/load-result/load_log
echo "" >> /var/log/load-result/load_log
echo "TOP 10 processes:" >> /var/log/load-result/load_log
echo "" >> /var/log/load-result/load_log
echo "$PS" >> /var/log/load-result/load_log
echo "" >> /var/log/load-result/load_log
echo "MYSQL PROCESSLIST:" >> /var/log/load-result/load_log
echo "" >> /var/log/load-result/load_log
echo "$MYSQL" >> /var/log/load-result/load_log
echo "" >> /var/log/load-result/load_log
echo "POTENTIAL ATTACKERS:" >> /var/log/load-result/load_log
echo "" >> /var/log/load-result/load_log
echo "$SYN" >> /var/log/load-result/load_log
echo "" >> /var/log/load-result/load_log
echo "NUMBER OF HTTPD PROCESS (currently maxclients are 64):" >> /var/log/load-result/load_log
echo "" >> /var/log/load-result/load_log
echo "$HTTPD" >> /var/log/load-result/load_log
echo "" >> /var/log/load-result/load_log
echo "CURRENTLY OPENED HTTPD CONNECTIONS:" >> /var/log/load-result/load_log
echo "" >> /var/log/load-result/load_log
echo "#####################################" >> /var/log/load-result/load_log
après cela, ajoutez également la règle crontab pour envoyer le journal à certains messages toutes les 5 minutes avec le fichier journal. Exécuter également le script toutes les 5 minutes
Sudo nano /etc/crontab
*/5 * * * * sh /path_to_script/name_of_script
*/5 * * * * mail -s "insert_subject" some_adress@domain < /var/log/load-result/load_log