Pagina inicial » como » Script de Monitoramento de Disco Rígido para Servidores Linux Headless

    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 :)