web-dev-qa-db-fra.com

Surveiller RAM et l'utilisation du processeur sur le serveur distant?

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!

3
Tasdik Rahman

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.

1
talz

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
1
2707974