Script de Monitoramento de Disco Rígido para Servidores Linux Headless
Os discos rígidos modernos têm um mecanismo interno chamado S.M.A.R.T. através do qual é possível saber quando um disco rígido está prestes a falhar. Não seria legal do servidor enviar um e-mail para você antes de tal falha?
visão global
Programas como o “mdadm” (para gerenciamento de software RAID) e o “Palimpsest Disk Utility” (usado no Ubuntu LiveCD), usam as informações S.M.A.R.T para informar quando o disco está prestes a ou falhou. No entanto, em um servidor sem cabeçalho (sem GUI) não há serviço que irá informá-lo sobre a desgraça pendente antes que seja tarde demais. Além disso, como você saberia sobre isso sem fazer login manualmente no servidor??
Esse script, quando executado uma vez ao dia com o cron, alertará se qualquer contagem de setores defeituosos das unidades de disco rígido do sistema atingiu um limite que é deliberadamente inferior ao limite "o disco está ruim" e envia o aviso por email para o administrador da máquina.
Pré-requisitos e suposições
- Você já configurou o suporte por e-mail para o servidor usando o guia "Como configurar e-mail de alertas no Linux".
- Você está usando um sistema baseado em Debian.
- Você não está usando um controlador RAID de hardware *.
- Você vai me ver usar o VIM como o programa de edição, isso é só porque eu estou acostumado com isso ... você pode usar qualquer outro editor que você gostaria.
* Porque é muito possível que o controlador RAID de hardware bloqueie o acesso do sistema a esta informação.
Configuração
Instale o pacote “smartmontools” que lê as informações do S.M.A.R.T do controlador do disco rígido e apresenta-o para nós.
sudo aptitude instalar smartmontools
Crie o script do monitor:
sudo vim /root/smart-monitor.sh
Faça isso é conteúdo:
#! / bin / bash
######## Função de email ########
email_admin_func ()
echo "To: [email protected]"> $ temp_email_file
echo "From: [email protected]" >> $ temp_email_file
echo "Subject: S.M.A.R.T monitor Threshold breached" >> $ temp_email_file
echo "" >> $ temp_email_file
echo -e $ 1 >> $ temp_email_file
/ usr / sbin / ssmtp -t < $temp_email_file
echo "Enviou um email para o administrador"
smartc_func ()
/ usr / sbin / smartctl -A / dev / $ 1 | grep Reallocated_Sector_Ct | tr -s "| cortar -d" -f11
######## Fim das funções ########
######## Definir o parâmetro de trabalho ########
temp_email_file = / tmp / smart_monitor.txt
allowed_threshold = 5 #set a quantidade de setores ruins com os quais você está disposto a conviver, recomendado 5.
########Motor########
para i em sda sdb; do # Adiciona ou subtrai nomes de discos da lista conforme apropriado para sua configuração.
if [["'smartc_func $ i'" -ge $ permitido_limite]]; então
echo Enviando por email o administrador
email_admin_func "Um dos HDs em" 'hostname' ", atingiu o limite superior !!! nO limite foi definido como: $ allowed_threshold e o status do disco i foi:" 'smartc_func $ i' ""
fi
feito
Os principais pontos a serem observados são:
- Função de e-mail - Defina as informações apropriadas, como o nome da máquina e o e-mail do administrador.
- Limite permitido - Defina este parâmetro para o que você considera apropriado, usei 5 porque o limite definido para os discos rígidos "grau de servidor" usados era 10. (descobri que o limite para unidades de "consumo" é ser tão alto quanto 140).
- Defina os dispositivos que você deseja monitorar ajustando a enumeração de nomes de disco no loop "for". Atualmente dois discos (sda e sdb) estão incluídos, portanto ajuste para sua configuração. Você pode incluir todos os seus discos ou apenas alguns, se você precisar * excluir um disco por algum motivo.
* Na minha configuração original, o primeiro disco era uma unidade flash, portanto, a leitura de suas informações, se possível, não é de muita utilidade..
Torne o script executável:
sudo chmod + x /root/smart-monitor.sh
A configuração é feita.
Programe o script para ser executado automaticamente
Queremos que o script seja executado automaticamente, então criaremos um novo trabalho Cron para ele.
Como indicado no guia "Como configurar alertas por e-mail no Linux", o resultado disso é que, se o próprio script encontrar um erro, o cron nos informará automaticamente por e-mail assim que acontecer..
Abra o agendador de tarefas cron:
sudo crontab -e
Adicione isto ao seu conteúdo:
0 7 * * * /root/smart-monitor.sh> /tmp/last_smart_monitor_run.log
Isto irá definir o script para ser executado todas as manhãs às 07:00.
Todo o seu setor pertence a nós :)