Verifique se há espaço livre no Linux, e-mail, se crítica

2

Eu acabei de lidar com um servidor que ficou sem espaço e gostaria de configurar o monitoramento agora, para evitar que ele seja crítico no futuro.

O que eu gostaria é receber um email enviado para a rootconta (que encaminha para o meu email de trabalho) quando o espaço livre estiver abaixo de xx%, com ele sendo configurável.

Eu sei que posso usar o df -hcomando para obter o layout de texto legível, mas não quero um relatório todos os dias. Eu quero apenas ter um relatório enviado para mim se certas partições / pontos de montagem estiverem sendo preenchidos e tiver menos de uma certa porcentagem ainda livre.

Estou confortável com scripts, mas não sei como eu faria isso. Abaixo está um exemplo de saída do comando que eu executo manualmente de qualquer maneira:

# df -h
Filesystem                                              Size  Used Avail Use% Mounted on
rootfs                                                   74G  6.4G   64G  10% /
udev                                                     10M     0   10M   0% /dev
tmpfs                                                   387M  320K  387M   1% /run
/dev/disk/by-uuid/615e2eca-0e01-4f3f-99d3-5a0560a78f9a   74G  6.4G   64G  10% /
tmpfs                                                   5.0M     0  5.0M   0% /run/lock
tmpfs                                                   773M     0  773M   0% /run/shm
/dev/md0                                                939M   51M  841M   6% /boot
/dev/md3                                                844G  535G  266G  67% /images
/dev/md2                                                2.7T  1.7T  955G  64% /var
Luke canadense
fonte

Respostas:

3

Isso deve fazer você ir:

#!/bin/sh

MOUNTPOINTS="/ /home"
THRESHOLD=90

for MOUNT in ${MOUNTPOINTS}; do

  CURRENT=$(df ${MOUNT} | grep / | awk '{ print $5}' | sed 's/%//g')

  if [ "${CURRENT}" -gt "${THRESHOLD}" ] ; then
    mail -s 'Disk Space Alert' root << EOF

Your ${MOUNT} partition remaining free space is critically low. Used: ${CURRENT}%
EOF

  fi

done

Isto é baseado fora do código por Malik Arjun .

jaquer
fonte
Ou: MOUNTPOINTS=$(df | tail -n +2 | sort -k 6 | uniq -f 2 | awk ‘{ print $6 }’)se você quiser todos os pontos de montagem ... (Mostrando off ... :-)
Zimmi
Eu ajustei um pouco, basicamente enviando a mensagem para stdout, e usando o Cron para executá-lo (que só e-mails se houver saída). Bom encontrar embora
canadense Luke