Мониторинг Bind9 в Zabbix

На примере опишу вариант мониторинга DNS сервера Bind9 в Zabbix.

Для начала включим статистику Bind9, откроем файл конфигурации в текстовом редакторе, например nano (Ctrl+X для выхода, y/n для сохранения или отмены изменений):

sudo nano /etc/bind/named.conf

И добавим следующие строки (где первый IP и порт — интерфейс на котором будет видна статистика, а следующие — с которых разрешен к ней доступ):

statistics-channels {
     inet 192.168.10.1 port 8053 allow { 127.0.0.1; 192.168.10.1; 192.168.10.15;};
};

И перезапустим Bind чтобы применить изменения:

sudo /etc/init.d/bind9 restart

После этого в браузере набрав http://192.168.10.1:8053/ можно увидеть статистику Bind9.

Установим необходимые компоненты необходимые для получения статистики из терминала:

sudo apt-get install xml2 curl

Проверим отображается ли статистика:

curl http://192.168.10.1:8053/ 2>/dev/null | xml2 | grep -A1 queries

Теперь допишем к конфигурацию Zabbix агента /etc/zabbix/zabbix_agentd.conf параметры которые будем мониторить:

# Количество udp соединений к DNS:
UserParameter=bind.net.udp,netstat -nua | grep :53 | wc -l
# Количество tcp соединений к DNS:
UserParameter=bind.net.tcp,netstat -nta | grep :53 | wc -l
# Количество входящих и исходящих запросов:
UserParameter=bind.queries.in[*],curl http://192.168.10.1:8053/ 2>/dev/null | xml2 | grep -A1 "/isc/bind/statistics/server/queries-in/rdtype/name=$1$" | tail -1 | cut -d= -f2
UserParameter=bind.queries.out[*],curl http://192.168.10.1:8053/ 2>/dev/null | xml2 | grep -A1 "/isc/bind/statistics/views/view/rdtype/name=$1$" | tail -1 | cut -d= -f2

И перезапустим Zabbix агент чтобы применить изменения:

sudo /etc/init.d/zabbix-agent restart

Добавим элементы данных и графики нужному узлу сети или шаблону в Zabbix сервере (тип — Zabbix агент, примеры ключей ниже):

bind.queries.in[A]
bind.queries.out[A]
bind.queries.in[AAAA]
bind.queries.out[AAAA]
bind.queries.in[NS]
bind.queries.out[NS]
bind.queries.in[MX]
bind.queries.out[MX]
bind.queries.in[PTR]
bind.queries.out[PTR]
bind.queries.in[SOA]
bind.queries.out[SOA]
bind.queries.in[TXT]
bind.queries.out[TXT]
bind.queries.in[ANY]
bind.queries.out[ANY]
и т.д.

Добавить комментарий