101 lines
5.7 KiB
Markdown
101 lines
5.7 KiB
Markdown
|
# Отслеживание изменений всех типов 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).
|