Eu quero projetar um scipt para enviar alerta para uso de swap mais de 85%

0
cat /proc/meminfo | grep Swap

SwapCached:            460248 kB
SwapTotal:             8388600 kB
SwapFree:              1031900 kB

Eu quero usar essas informações para compará-las com um valor limite. Quando o limite é atingido, um aviso deve ser enviado. Eu poderia obter alguma ajuda sobre isso?

    
por Mohit Joshi 08.04.2015 / 12:25

5 respostas

1

Em uma linha:

if [[ $(swapon -s | grep -v Size | awk '{print $4/$3*100}'| awk -F "." '{print $1}') -ge 85 ]]; then echo 'Swap alert'|wall -n;fi

Você pode testá-lo alterando 85 para outro valor para ter certeza de que funciona.

    
por 08.04.2015 / 13:31
0

Estritamente para "buscar os números", eu usaria:

$ grep Swap /proc/meminfo | tr -d "[a-zA-Z :]"
7228
3141628
3091688

Ou, se você precisar dos valores em uma linha:

$ echo 'grep Swap /proc/meminfo | tr -d "[a-zA-Z :]"'
7228 3141628 3091688
    
por 08.04.2015 / 13:02
0

Você poderia começar com algo como abaixo:

#!/bin/bash

totalSwap=$(cat /proc/meminfo | sed -n 's/^SwapTotal: \+\([0-9]\+\) \+[a-zA-Z]\+$//p')
freeSwap=$(cat /proc/meminfo | sed -n 's/^SwapFree: \+\([0-9]\+\) \+[a-zA-Z]\+$//p')
usedSwap=$(( $totalSwap - $freeSwap ))
usedPctSwap=$(( 100 * $usedSwap / $totalSwap ))

swapThreshold=85

if [[ $usedPctSwap -gt $swapThreshold ]]
then
    echo "Swap utilisation is at $usedPctSwap %" | mail -s "SWAP Utilisation Alert" your.email@yourdomain
fi

Obviamente, sinta-se à vontade para mudar isso para atender às suas necessidades específicas. por exemplo. você pode ter um método de alerta que é melhor do que um simples e-mail.

Você pode agendar isso adicionando-o ao crontab

    
por 08.04.2015 / 13:05
0

Que tal:

#!/bin/bash
threshold=$(( 8388600 * 15 / 100 ))
current=$(sed -n '/SwapFree/s/[^[:digit:]]*\([[:digit:]]*\).*//p' /proc/meminfo)
[[ $current -lt $threshold ]] && echo "There is a problem" || echo "No problem"

Aqui, calculamos o limite tomando SwapFree como referência, se a porcentagem de troca livre for menor que 15%, um alerta será enviado.

Em vez de echo "There is a problem" , faça o que deseja fazer, como enviar um e-mail ou qualquer outra coisa.

Você deve executar isso como um trabalho cron (pode ser a cada 5 minutos).

    
por 08.04.2015 / 12:58
0

Você receberá total e free , números:

cat /proc/meminfo |                  #read data
  grep -E "Swap((Total:)|(Free:))" | #just the two records that we need
  sed -re "s/[[:blank:]]+/ /g" |     #only one space field separator
  cut -d" " -f2                      #just the field that we need

Você então precisa fazer algo com eles. Talvez isto:

(cat /proc/meminfo | 
   grep -E "Swap((Total:)|(Free:))" | 
   sed -re "s/[[:blank:]]+/ /g" | 
   cut -d" " -f2 && 
   echo "100 * r / 100 r - p" ) | 
     dc
    
por 08.04.2015 / 12:48

Tags