Zabbix: Ich versuche, die Laufzeit eines Skripts zu überwachen. Wie geht das?

Zabbix: Ich versuche, die Laufzeit eines Skripts zu überwachen. Wie geht das?

Ich bin ein absoluter Zabbix-Neuling und dies ist meine erste Aufgabe ... Ich muss mit Zabbix einen Monitor erstellen und überwachen, wie lange ein Skript läuft. Das Skript sieht folgendermaßen aus:

device0="/home/build/aggregator/scripts/aggregator.lock"
if [ -e "$device0" ]
then
echo process is already running
else

touch $device0
java -Xms6g  -Xmx6g -jar /home/build/aggregator/aggregator-1.0-SNAPSHOT-jar-with-dependencies.jar
rm $device0
fi

Das Skript erstellt eine Datei namens aggregator.lock, die sicherstellt, dass das Skript nur einmal ausgeführt wird. Das Skript ist in Crontab so konfiguriert, dass es jede Minute ausgeführt wird. Ich habe die folgenden Elemente erstellt: Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben Solange die aggregator.lockDatei vorhanden ist, gibt Zabbix vfs.file.existsFolgendes zurück: 1.

[root@zabbix ~]# zabbix_get -s 10.200.X.X -k vfs.file.exists[/home/build/aggregator/scripts/aggregator.lock]
1
[root@zabbix ~]#

Und vfs.file.timedie Prüfung gibt zurück: 1400057821 (Unix-Zeit).

Solange die aggregator.lockDatei nicht existiert, gibt Zabbix zurück: 0. Und vfs.file.timedie Prüfung gibt zurück: ZBX_NOTSUPPORTED .

Die Prüfung wird alle 30 Sekunden ausgeführt, um den Datenverkehr im Netzwerk zu minimieren, aber das Skript läuft jedes Mal etwa 10 bis 20 Sekunden. Ich muss also den besten Weg finden, die Laufzeit des Skripts zu überwachen. Was wäre der beste Weg, um dieses Ziel zu erreichen?

Antwort1

Müssen Sie überwachen, wie lange ein Prozess läuft oder müssen Sie eine Warnung ausgeben, wenn der Prozess zu lange dauert?

Wenn Ersteres zutrifft, möchten Sie das Skript möglicherweise so ändern, dass es Informationen zur Laufzeit sendet zabbix_sender, etwa wie folgt:

#!/bin/bash

date1=$(date '+%s')
sleep 5
date2=$(date '+%s')

duration=$(($date2-$date1))

zabbix_sender -z 127.0.0.1 -s 'my host' -k duration -o $duration

Hier ist „sleep 5“ Ihr „Java“-Befehl.

Wenn Letzteres zutrifft, möchten Sie das Skript möglicherweise so ändern, dass es beim Start des Skripts den Wert „1“ und beim Ende den Wert „0“ sendet, wie folgt:

#!/bin/bash

zabbix_sender -z 127.0.0.1 -s 'my host' -k started -o 1
sleep 5
zabbix_sender -z 127.0.0.1 -s 'my host' -k started -o 0

Anschließend können Sie einen Trigger ähnlich dem folgenden erstellen, der Sie warnt, wenn der Vorgang zu lange dauert:

{my host:started.last()}=1 & {my host:started.nodata(45)}=1

Wenn das Ändern des Skripts keine Option ist, können Sie das Element proc.num[] verwenden:

proc.num[java,,,aggregator-1.0-SNAPSHOT-jar-with-dependencies.jar]

Führen Sie alle 15 Sekunden eine Prüfung durch und geben Sie eine Warnung aus, wenn die letzten drei Werte (über einen Zeitraum von 30 Sekunden) anzeigen, dass der Prozess ausgeführt wird:

{my host:proc.num[java,,,aggregator-1.0-SNAPSHOT-jar-with-dependencies.jar].min(#3)}=1

Dies könnte auch die einfachste Lösung sein.

verwandte Informationen