Zabbix моніторинг DNS серверів

У цій статті буде детально розглянуто спосіб моніторингу dns серверів на основі зовнішнього самописного скрипту з використанням утиліти host у системі моніторингу zabbix, реалізований через функцію зовнішньої перевірки в елементі даних.

Відразу слід зазначити, що система моніторингу zabbix досить гнучка, дозволяє організувати моніторинг за DNS серверами різними способами, наприклад, за допомогою агента zabbix або використовуючи зовнішні скрипти (зовнішні перевірки). Розглянемо докладніше другий варіант моніторингу серверів dns.

Скрипт моніторингу серверів DNS.

Створимо для початку скрипт, який перевірятиме роботу DNS серверів.

У скрипті будемо перевіряти резолвується домен чи ні за допомогою стандартної утиліти "host", що входить за замовчуванням у всі дистрибутиви linux.

Утиліта "host" призначена для виконання запитів до серверів DNS.

Опис алгоритму роботи скрипта.

Синтаксис: host [domain-name] [dns-server]

Як приклад: [domain-name] – mail.ru; [dns-sever] – 8.8.8.8 (гуглові dns).

2. Обробимо висновок команди "host" утилітою "grep". Зауважимо, що у потрібних нам рядках міститься набір символів "has address", за цим набором і фільтруватимемо.

3. Ще раз обробимо отриманий висновок тепер утилітою "wc" c ключем "-l", буде підраховано кількість рядків.

4. Сам скрипт складається з простої умови, а саме якщо результат виконання команди описаної вище дорівнює нулю (тобто хост нерезолвиться), то скрипт видасть помилку - 0, а якщо інше число то 1 (тобто хост резолвуватися). У скрипті будемо використовувати дві вхідні змінні "HOST" і "DNS_SERVER".

Запуск скрипта ./host-dns.sh mail.ru

Налаштування zabbix для моніторингу DNS серверів за допомогою скрипта або зовнішньоїперевірки

1. Покладемо цей скрипт наприклад директорію "/usr/local/etc/externalscripts/host-dns.sh".

2. Змінимо власника файлів, щоб zabbix зміг його запускати.

$ сhown root:zabbix /etc/zabbix/externalscripts/host-dns.sh

3. Відредагуємо файл налаштувань "zabbix_server.conf". У мене він лежить у директорії "/usr/local/etc/zabbix_server.conf". Цей файл може бути в іншому місці.

3.1. Правимо секцію "Option: ExternalScripts". Вказуємо шлях до директорії зі скриптом.

3.2. Правимо секцію "Option: Timeout". Збільшуємо Timeout до 30 с. Це робимо для того, щоб наш скрипт встиг виконатися і видати результат.

5. Створимо нову групу DNS. Налаштування --> Групи вузлів мережі --> Створити групу вузлів мережі --> Ім'я групи: CHECK-DNS --> Додати.

zabbix

6. Створимо шаблон. Налаштування --> Шаблони --> Створити шаблон --> Ім'я шаблону: Telmpate_check_dns --> Групи: CHECK-DNS --> Додати.

серверів

7. Додаємо елемент даних у шаблон. Налаштування --> Шаблони --> Група: CHECK-DNS --> Елементи даних --> Створити елемент даних --> Заповнюємо форму.

Тип: Зовнішня перевірка

Тип інформації: Числовий (ціле позитивне)

Тип даних: Десятковий

Інтервал поновлення (у сек): 35

8. Додаємо тригер у шаблон. Налаштування --> Шаблони --> Група: CHECK-DNS --> Тригери --> Створити тригер --> Заповнюємо форму.

9. Створимо вузол мережі та приєднаємо до нього шаблон. Налаштування --> Вузли мережі --> Створити вузол мережі --> Заповнюємо форму.

Видиме ім'я: DNS-GOOGLE

--> Шаблони --> Поєднати з новими шаблонами --> Вибрати шаблон Telmpate_check_dns --> Додати --> Вузли мережі --> Додати.