Мониторинг сервиса DNS в ZABBIX
В стандартных шаблонах ZABBIX нет возможности мониторить DNS.
Это можно сделать через внешние скрипты.
Обычно они лежат в /usr/lib/zabbix/externalscripts
Создадим такой вот скрипт:
dns-check.sh
#!/bin/sh
HOST_QUERY=$1
if [ `host -W 1 $HOST_QUERY | grep "has address" | wc -l` -eq 0 ]; then
echo "0"
else
echo "1"
fi
Т.е. если у него получается разрезолвить адрес, он вернет 1, если нет, то 0.
Сделаем его исполняемым:
# chmod +x /usr/lib/zabbix/externalscripts/dns-check.sh
Теперь создадим item на том хосте где запущен сервис DNS, не важно какой, bind или Microsoft'овский:
Name: DNS service check
Type: External check
Key: dns-check.sh[google.com {HOST.HOST}]
Type of information: Numeric unsigned
Data type: Boolen
Update interval (in sec): 60
google.com можно заменить на любой адрес, который вам нравится.
Для этого item'а сделаем trigger:
Name: DNS service check
Expression: {hostname.domainname:dns-check.sh[google.com {HOST.HOST}].max(#3)}=0
Severity: Average
Обратите внимание, триггер создается для хоста hostname.domainame, далее указан ключ, в котором видим наш item и условие, если три последние попытки были неудачны, то триггер сработает.
В конфиге сервера ZABBIX увеличьте timeout для внешних проверок:
### Option: Timeout
# Specifies how long we wait for agent, SNMP device or external check (in seconds).
#
# Mandatory: no
# Range: 1-30
# Default:
# Timeout=3
Timeout=30
Чтобы не делать итем и триггер в ручную, я запилил шаблон, его можно скачать по ссылке внизу страницы, там же и скрипт.