Grep от Log & Calculate затем оповещение

У меня есть файл журнала, в котором есть следующие строки. Мне нужен скрипт bash, который принимает значения, выделенные полужирным шрифтом (4092.1M / 20.1G), выполняет математические операции и затем извещает из Zabbix

[Eden: 3728,0M(3728,0M)->0,0B(3952,0M) Выжившие: 368,0M->144,0M Куча: 4092,1M(48,0G)->144,0M (48,0G)]

[Eden: 3568,0M(3568,0M)->0,0B(3568,0M) Выжившие: 528,0M->528,0M Куча: 20,1G(48,0G)->16,7G(48,0G)]

Он должен предупреждать, если значение больше 30G, и должен предупреждать, если значение больше 35G.

Пожалуйста, найдите MB / GB, как указано в приведенном выше примере. Мне нужно определить, какой это формат и прочитать значение соответственно.

Можете ли вы помочь мне здесь

1 ответ

Вы можете использовать это как отправную точку и адаптировать к своему вкусу:

#!/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
Другие вопросы по тегам