zabbix-helpers/check_dns_records/README.md
2024-11-06 10:16:00 +03:00

101 lines
5.7 KiB
Markdown
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Отслеживание изменений всех типов DNS-записей для домена
## Описание
Набор скриптов для мониторинга изменений в DNS для любого количества доменов.
Отслеживаются все записи представленные в БД DNS. Проверку можно осуществлять как просто в консоли, запуская скрипты, так и в интеграции с zabbix. Запуск сервиса может производиться как локально в системе (при помощи cron) так и ввиде docker-контейнера.
В состав сервиса входит:
- zabbix_create_host.sh - позволяет создать в zabbix группу узлов, шаблон, узел. В случае если объект уже есть, то будет получен его идентификатор. Используется Zabbix JSON RPC.
- zabbix_dns_records_check.sh - опрос DNS и получение всех типов записей с добавлением их в zabbix.
- run.sh - для запуска полного цикла проверки
- zabbix_jrpc_files - каталог содержит JSON-файлы с описанием процедур по взаимодействия с zabbix
- zabbix_templates - шаблоны zabbix
## Использование
Получения всех типов записей и создание элементов (items) в zabbix:
```zabbix_dns_records_check.sh read-json-discover```
Для получения данных по конкретному домену:
```zabbix_dns_records_check.sh domain.name.ru```
Для получения данных по конкретному домену и конкретному типу записи (A, MX, NS и т.д.):
```zabbix_dns_records_check.sh domain.name.ru MX```
Так как сервис заточен под работу с zabbix, то вышеозначенная операция сработает только в случае выставления переменной ```ZABBIX_AGENT="TRUE"```. Если значение данной переменной "FALSE", проверка будет производится сразу по всем записям и результат не будет выведен в консоль а будет отправлен в zabbix (при помощи zabbix-sender). Это правило верно и для режима "read-json-discover".
Получение всех записей для домена:
```zabbix_zimbra_domain_status.sh get-domain-records domain.name.ru```
Получение списка всех типов записей для домена:
```zabbix_zimbra_domain_status.sh get-domain-records-type domain.name.ru```
### Настройка переменных окружения для zabbix_zimbra_domain_status.sh
Список переменных с значениями по умолчанию:
```
BIN_DIR=/usr/local/bin
ETC_DIR=/usr/local/etc
# Адрес ДНС сервера
EXT_DNS=8.8.8.8
# Список доменов
DOMAIN_LIST="domain.1 domain.2 domain.n"
# Временные файлы
FILE_ZIMBRA_DOMAIN_STATUS='/tmp/domain_status'
FILE_ZIMBRA_DOMAIN_LIST='/tmp/domain_list'
# конфигурация заббикс-агента
ZABBIX_AGENT=FALSE
ZABBIX_SENDER=/usr/bin/zabbix_sender
ZABBIX_AGENT_CONFIG=/etc/zabbix/zabbix_agentd.conf
# имя узла в zabbix
ZABBIX_HOST="DNS records check"
```
### Настройка переменных окружения для zabbix_create_host.sh и значения по умолчанию
```
BIN_DIR=/usr/local/bin
ETC_DIR=/usr/local/etc
LIB_DIR=/usr/local/lib
# адрес zabbix сервера
ZABBIX_SERVER='http://zabbix.example.com'
# пользователь и пароль для доступа к zabbix-API
# по умолчанию не определены
ZABBIX_USER=
ZABBIX_PASSWORD=
# Название группы узлов в заббикс
ZABBIX_HOST_GROUP='Virtual Hosts'
# название узла в заббикс
ZABBIX_HOST="DNS records check"
# имя шаблона для прикрепления к узлу
ZABBIX_TEMPLATE_NAME="Template_DNS_Check"
```
### Запуск в Docker-контейнере
Предварительно требуется создать файл .env куда прописать имя и пароль пользователя для zabbix:
```
ZABBIX_USER=user
ZABBIX_PASSWORD=password
```
Если требуется переопеределить значения переменных то их можно либо прописать в этом-же файле либо в docker-compose.yml
Сборка контейнера в локальном репозитории:
```docker build --rm -t dns_records_check .```
Запуск осуществляется при помощи docker-compose:
```docker-compose up```
При первых запусках (2-3, связано с таймаутами в zabbix при создании новых элементов) в случае отсутствия в zabbix будут созданы: группа узлов, шаблон, узел, прикреплен к узлу шаблон.
При каждом запуске будет производится автоопределение типов DNS-записей и создание требуемых ключей (items) в заббикс (автообнаружение) для каждого домена.
Контейнер будет перезапускаться каждые 10 минут (настройка в файле run.sh).