Monitorar o uso de RAM e CPU no servidor remoto?

3

Eu quero monitorar o uso da CPU e da RAM no meu servidor remoto e configurar um sistema de notificação que me avisa quando o uso da RAM é alto e mata automaticamente esse processo.

Eu tentei o plugin Nagios, mas houve alguns erros.

Alguma alternativa para isso?

Editar : por favor, não sugira htop , free , top e similares, pois não vou manter o ssh'ing no servidor remoto e verificar sua saúde repetidamente !

    
por Tasdik Rahman 18.04.2015 / 12:41

2 respostas

1

Você está familiarizado com top ? Mostra o uso de CPU e RAM (e mais) para cada processo e também a soma total.

você também pode executar top -u USER para ver apenas os processos de um usuário específico. apenas comece com a execução de top sem argumentos. pressione q para sair.

EDITAR

e para usar em um script: tente top -b -n1 para execução no modo não interativo. Você pode então analisar os dados com head , sed e grep da maneira que desejar.

    
por talz 18.04.2015 / 13:21
1

Eu criei um script personalizado. Não é solução completa para você, mas talvez ajude.

#!/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

depois disso, adicione também a regra crontab para enviar o log para alguns e-mails a cada 5 min com o arquivo de log. Também execute o script a cada 5 min

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
    
por 2707974 18.04.2015 / 14:07