リモートサーバーのCPUとRAM使用率を監視し、RAM使用率が高いときに通知する通知システムをセットアップして、そのプロセスを自動的に強制終了します。
Nagiosプラグインを試しましたが、いくつかのエラーがありました。
それに代わるものはありますか?
編集:htop
、free
、top
などを提案しないでください。リモートサーバーにsshし続けてチェックするつもりはないのでその健康を繰り返し!
top
に精通していますか?各プロセスのCPUとRAM使用量(およびその他)、および合計を表示します。
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