Что это и зачем: http://www.zabbix.com/documentation/2.0/manual/config/items/itemtypes/external
Создаем папку под скрипты:
Создаем тестовый скрипт для проверки https (стандартно Zabbix это не умеет):
Активируем флаг исполнения:
Далее создаем item со следующими параметрами:
Создаем папку под скрипты:
mkdir -p /etc/zabbix/externalscripts
vi /etc/zabbix/externalscripts/check_https.sh
Создаем тестовый скрипт для проверки https (стандартно Zabbix это не умеет):
#!/bin/bash
curl --connect-timeout 3 -3 -k https://$1 > /dev/null 2>&1
if [ "$?" -ne "0" ]; then
# ERROR
echo "0"
else
# OK
echo "1"
fi
Активируем флаг исполнения:
chmod +x /etc/zabbix/externalscriptsПроверяем (в случае успеха должна выдаваться 1, в случае неудачи - 0):
/etc/zabbix/externalscripts/check_https.sh paypal.com
0
Далее создаем item со следующими параметрами:
Description: https checkИ теперь идем в раздел: Latest Data и ждем метрик. После этого не забываем сделать триггер.
Type: External check
Key: check_https.sh["{HOST.CONN}"]
Type of information: Numeric unsigned
Data type: Decimal
Спасибо, помог ваш пост ;)
ReplyDelete1097:20160325:145334.391 error reason for "billing checks:script2.sh" changed: Received value [/usr/bin/iconv: illegal input sequence at position 311/usr/bin/iconv: illegal input sequence at position 311awk: cmd. line:1: BEGIN{print int(/)}awk: cmd. line:1: ^ unterminated regexpawk: cmd. line:2: BEGIN{print int(/)}awk: cmd. line:2: ^ unexpected newline or end of string/usr/bin/iconv: illegal input sequence at position 311/usr/lib/zabbix/externalscripts/script2.sh: line 7: [: : integer expression expected] is not suitable for value type [Numeric (unsigned)] and data type [Decimal]
ReplyDeleteПроверка падает раз в 1-2 месяца с такой ошибкой. Помогает перезагрузка заббикс-сервера. Конечно это не выход, как понять почему со временем проверка перестаёт проходить. держать дебаг лог 2 месяца включённым это через чур как и ребут сервера.
Падает потому, что в условии if [ "$?" -ne "0" ]; then используется проверка INT значений "-ne", но если присмотреться внимательно, то станет понятно, что в условии допущена ошибка! В условии сравниваются 2 строки оператором, который сравнивает цифры INT :)
ReplyDeleteПравильно будет так:
if [ $? -ne 0 ]; then
$? - никогда не будет пустой.
Есть конечно альтернативный вариант:
if [ "$?" != "0" ]; then
Но я бы оставил сравнение цифр.
P.S. Кстати zabbix 2.4 и выше вполне умеет такое проверять штатными средствами через "Web scenarios": https://www.zabbix.com/documentation/2.4/manual/web_monitoring
По поводу дебага, можно же stderr отправить в файл и получить желанную проблему, для этого нужно изменить код скрипта:
ReplyDeletecurl --silent --connect-timeout 3 -3 -k https://$1 1>/dev/null 2>/var/log/zabbix/${0}.log
--silent - уберет лишнюю "говорливость" curl
1>/dev/null - stdout отправится в /dev/null
2>/var/log/zabbix/${0}.log - stderr отправится в файл.