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