zabbix-helpers/check_dns_records
2024-11-06 10:16:00 +03:00
..
zabbix_jrpc_files Restore repo 2024-11-06 10:16:00 +03:00
zabbix_templates Restore repo 2024-11-06 10:16:00 +03:00
.gitignore Restore repo 2024-11-06 10:16:00 +03:00
docker-compose.yml Restore repo 2024-11-06 10:16:00 +03:00
Dockerfile Restore repo 2024-11-06 10:16:00 +03:00
gitlab-ci.yml Restore repo 2024-11-06 10:16:00 +03:00
README.md Restore repo 2024-11-06 10:16:00 +03:00
run.sh Restore repo 2024-11-06 10:16:00 +03:00
zabbix_create_host.sh Restore repo 2024-11-06 10:16:00 +03:00
zabbix_dns_records_check.sh Restore repo 2024-11-06 10:16:00 +03:00

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