DNS — одна из важных служб, работа которой, является критичной как с точки зрения удобства пользователей, так и с точки зрения работы многих других системных служб предприятия.
Несмотря на важность, многие администраторы почему-то опускают мониторинг данной службы, хотя своевременное реагирование на эксплуатационные проблемы позволит избежать простоев связанных, например, с внешним воздействием (DDoS-атаки, взлом и т.д.), отказом в обслуживании в связи с программными ошибками (переполнение памяти и т.д.) или ошибками в результате ошибок конфигурирования.
Наиболее открытая и распространённая реализация DNS — это BIND. Bind обеспечивает выполнение преобразования DNS-имени в IP-адрес и обратно.
Для мониторинга Bind будем использовать Cacti.
На официальном сайте в разделе «Template» уже есть написанный шаблон. Я разбавил инструкцию картинками и переписал не понравившийся мне скрипт для сбора статистики.
Готовим сервер.
Проверяем наличия файла статистики, если его нет, то необходимо добавить соответствующий параметр в конфигурацию named.conf и выполнить рестарт демона.
[dns]# grep "statistics-file" /etc/named.conf options { statistics-file "/var/named/data/named_stats.txt"; } |
Если файл статистики есть, то заливаем два скрипта dnsstats.pl и runstats.sh в /etc/snmp/
Во втором файле надо исправить пути согласно вашим установкам.
[dns]#cat runstats.sh #!/bin/sh /usr/sbin/rndc stats cat /var/named/data/named_stats.txt | /etc/snmp/dnsstats.pl |
И выполняем runstats.sh. Если все сделано правильно, то при выполнении мы должны получить следующий «страшный» вывод:
[dns]# ./runstats.sh a:314562 a6:950 aaaa:93244 any:2200 cname:326 mx:15440 naptr:1 ns:4852 ptr:1153286 soa:4960 spf:899 srv:5944 txt:7963 rsnx: rsfail: rserr: rsipv4qs:42 rsipv4rr:42 rsmismatch:1 rsqr:4 rsqt:4 rsrtt10:2 rsrtt100500:14 rsrtt10100:32 rsrtt1600: rsrtt500800:1 rsrtt8001600:1 sockopen:1351 sockclosed:1347 sockbf:1 consest:42 recverr: |
Добавляем в snmpd.conf extend
[dns]# grep "extend" snmpd.conf extend .1.3.6.1.4.1.18689.0.1 dnscache-stats /etc/snmp/runstats.sh |
Перезапускаем SNMPd и незабываем сделать проверку локально или с хоста мониторинга.
[mon]# snmpwalk -v2c -c comm_name dns_host_name .1.3.6.1.4.1.18689.0.1 |
В одной из строчек вывода нужно увидеть тот самый страшный вывод.
Далее…
Уходим на сервер мониторинга и добавляем query_bind_server.php в папку скриптов /…/cacti/scripts/
Через Console->Import Template делаем импорт настроек cacti_host_template_bind9_7.xml
В систему добавятся 4 шаблона, их мы и будем использовать для мониторинга Bind.
У меня распределенная система (holder-resolver) DNS с нескольким десятком нод спрятанным за SLB и графики несколько своеобразные, хотя тот что в начале поста, как раз с боевой системы.
В идеале должно получиться примерно так (фото с темы данного шаблона с cacti форума):
На сегодня все. Встретимся в сети.