Я хочу отслеживать использование ЦП и ОЗУ на моем удаленном сервере и настроить систему уведомлений, которая уведомляет меня о высокой загрузке ОЗУ и автоматически завершает этот процесс.
Я попробовал плагин Nagios, но были некоторые ошибки.
Есть ли альтернативы этому?
Редактировать : пожалуйста, не предлагайте htop
, free
, top
и тому подобное, так как я не собираюсь держать ssh ' входя в удаленный сервер и неоднократно проверяйте его работоспособность!
Действительно ли Вы знакомы с top
? Шоу Вы ЦП и Использование оперативной памяти (и больше) для каждого процесса и также полной суммы.
можно также работать top -u USER
, чтобы только видеть процессы определенного пользователя. только запустите с выполнения top
без аргументов. нажмите q
для выхода.
РЕДАКТИРОВАНИЕ
и для использования в рамках сценария: попробуйте top -b -n1
за выполнение в не интерактивный режим. можно затем проанализировать данные с head
, sed
, и grep
однако Вам нравится.
Я создаю некоторый пользовательский сценарий. Не полное решение для Вас, но, возможно, помогите.
#!/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
после этого также добавляют правило crontab отправить журнал в некоторую почту на каждых 5 минутах с файлом журнала. Также запустите скрипт на каждых 5 минутах
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