Grep von Log & Calculate und dann Alarm

298
user324391

Ich habe eine Protokolldatei, die die folgenden Zeilen enthält. Ich brauche ein Bash-Skript, das die Werte in Fett (4092.1M / 20.1G) übernimmt und die Mathematik und dann den Alarm von Zabbix ausführt

[Eden: 3728,0 M (3728,0 M) → 0,0 B (3952,0 M) Überlebende: 368,0 M 144,0 M Haufen: 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) Überlebende: 528,0 M 528,0 M Haufen: 20,1 G (48,0 G) → 16,7 G (48,0 G)]

Es sollte warnen, wenn der Wert mehr als 30 G beträgt, und es sollte gewarnt werden, wenn der Wert mehr als 35 G beträgt.

Suchen Sie nach MB / GB wie im obigen Beispiel. Ich muss herausfinden, welches Format es ist und den Wert entsprechend lesen.

Kannst du mir bitte hier helfen?

0
Ich fühle mich zu faul, es selbst zu programmieren, aber ich würde awk verwenden, dieses Feld nach dem Heap-Schlüsselwort extrahieren, dann das G durch '* 1000' ersetzen und einfach alle Ms entfernen und die Berechnung in awk selbst durchführen. Darf nicht mehr als ein Einzeiler sein. curious_cat vor 9 Jahren 0

1 Antwort auf die Frage

1
GreenTeaTech

Sie können dies als Ausgangspunkt verwenden und sich Ihren Wünschen anpassen:

#!/bin/bash  logfile="/var/log/file.log"  while read line; do value=`echo $line | awk -F: '' | awk -F'(' '' | sed 's/^.//'`  if [ "`echo $value | grep -o ".$"`" == "M" ]; then value=`echo $value | awk -F'.' ''` value=$((value/1000))  elif [ "`echo $value | grep -o ".$"`" == "G" ]; then value=`echo $value | awk -F'.' ''` 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