Zabbix: Как можно отследить время выполнения скрипта?

Zabbix: Как можно отследить время выполнения скрипта?

Я полный новичок в Zabbix, и это мое первое задание... Мне нужно создать монитор с использованием Zabbix и отслеживать, как долго выполняется один скрипт. Скрипт выглядит так:

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

Скрипт создает файл с именем , aggregator.lockкоторый гарантирует, что скрипт запустится только один раз, скрипт настроен в Crontab на запуск каждую минуту. Я создал следующие элементы: введите описание изображения здесь введите описание изображения здесь Пока aggregator.lockфайл существует, Zabbix vfs.file.existsвозвращает: 1.

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

И vfs.file.timeпроверка возвращает: 1400057821 (время Unix).

Пока aggregator.lockфайл не существует, Zabbix возвращает: 0. А vfs.file.timeпроверка возвращает: ZBX_NOTSUPPORTED.

Проверка запускается каждые 30 секунд, чтобы минимизировать трафик в сети, но скрипт запускается примерно на 10-20 секунд каждый раз. Поэтому мне нужно найти лучший способ контролировать время выполнения скрипта, какой будет лучшим способом достижения этой цели?

решение1

Нужно ли вам отслеживать длительность выполнения процесса или оповещать, если процесс занимает слишком много времени?

Если это первый вариант, вы можете изменить скрипт так, чтобы он отправлял информацию о времени выполнения с помощью zabbix_sender, например так:

#!/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

Здесь «sleep 5» — это ваша команда «java».

Если это последний вариант, вы можете изменить скрипт так, чтобы он отправлял значение «1» при запуске скрипта и значение «0» при его завершении, например:

#!/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

Затем вы можете создать триггер, аналогичный следующему, чтобы оповещать, если процесс занимает слишком много времени:

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

Если изменение скрипта невозможно, вы можете использовать элемент proc.num[]:

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

Сделайте так, чтобы проверка производилась каждые 15 секунд, и оповещайте, если последние три значения (за 30 секунд) показывают, что процесс запущен:

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

Это также может быть самым простым решением.

Связанный контент