Grep de Log & Calcular, em seguida, alertar

0

Eu tenho um arquivo de log, que tem as linhas abaixo nele. Eu preciso de um script bash, que leva os valores em negrito (4092.1M / 20.1G) & faça as contas & então avise do Zabbix

[Eden: 3728,0M (3728,0M) - > 0,0B (3952,0M) Sobreviventes: 368,0M- > 144,0M Heap: 4092,1 M (48,0 G) - > 144,0 M (48,0 G)]

[Eden: 3568,0 M (3568,0 M) - > 0,0 B (3568,0 M) Sobreviventes: 528,0 M - > 528,0 M Pilha: 20,1 G (48,0 G) - > 16,7 G (48,0 G)]

Deverá avisar se o valor for superior a 30G e deverá alertar se o valor for superior a 35G.

Por favor, procure por MB / GB como dado no exemplo acima. Preciso identificar qual formato é e ler o valor de acordo.

Você pode por favor me ajudar aqui

    
por user324391 18.02.2015 / 02:43

1 resposta

1

Você pode usar isso como ponto de partida e se adaptar ao seu gosto:

#!/bin/bash

logfile="/var/log/file.log"

while read line; do
   value='echo $line | awk -F: '{print $4}' | awk -F'(' '{print $1}' | sed 's/^.//''

   if [ "'echo $value | grep -o ".$"'" == "M" ]; then
      value='echo $value | awk -F'.' '{print $1}''
      value=$((value/1000))

   elif [ "'echo $value | grep -o ".$"'" == "G" ]; then
        value='echo $value | awk -F'.' '{print $1}''
   fi

   if [ $value -gt 30 ] && [ $value -lt 35 ]; then
      echo "Warning: value is greater than 30G"
   elif [ $value -gt 35 ]; then
      echo "Alert: value is greater than 35G"
   fi
done < $logfile
    
por 16.02.2016 / 03:21