AdGuard Home
Сам DNS-фильтр: включена ли защита, работает ли его DNS-сервер, что он ответил и блокировал, обновляются ли ещё его списки фильтров, отвечают ли его внешние серверы, и доступна ли более новая версия.
Сломанный DNS-фильтр не выглядит сломанным. Страницы продолжают открываться, со своей рекламой. Обычные отказы тихие: защита поставлена на паузу «на час» из приложения на телефоне и никогда не включена обратно, списки фильтров перестали загружаться недели назад, внешний сервер DNS-over-HTTPS больше не отвечает, так что каждый запрос ждёт следующего.
DumbMonit читает REST API AdGuard Home (/control) с базовой аутентификацией
HTTP. Проверено на AdGuard Home v0.107.79 (и проверке версии v0.107.78).
Что отслеживается
Заголовок раздела «Что отслеживается»Все метрики с префиксом dumbmonit_adguard_. Показатели запросов и
блокировок — это суммы за окно статистики AdGuard Home (24 часа, если
не изменено в Settings → General settings), а не счётчики: они растут и
падают по мере скольжения окна, и хранятся как есть.
| Метрика | Что | Метки |
|---|---|---|
running | 1, когда DNS-сервер работает | |
protection_enabled | 1, когда защита включена | |
protection_paused_seconds | время, оставшееся до возврата защиты на паузе, 0 без паузы | |
version_info | значение 1 | version |
dns_queries | запросы в окне статистики | |
blocked_filtering | запросы, блокированные списками фильтров и собственными правилами | |
replaced_safebrowsing, replaced_parental, replaced_safesearch | ответы, заменённые Browsing security, Parental control, Safe search | |
blocked_percent | доля блокированных запросов (фильтры, Browsing security, Parental control); отсутствует без единого запроса | |
avg_processing_seconds | среднее время ответа | |
stats_window_seconds, stats_enabled | окно статистики и хранится ли статистика (0.107.30 и новее) | |
upstream_responses, upstream_avg_seconds | ответы и среднее время ответа на внешний сервер в окне, как показывает Top upstreams панели (не более 8) | upstream |
upstream_up | 1, когда собственная проверка AdGuard Home этого внешнего сервера проходит; 0 — когда отказывает или не отвечает за 4 секунды (не более 8). Метка — это внешний сервер, как его записывает AdGuard Home в своей статистике (https://dns10.quad9.net:443/dns-query, 192.0.2.1:53); для внешнего сервера, оставшегося молчащим, — строка как настроена. | upstream |
filtering_enabled | 1, когда фильтрация включена в Settings → General settings | |
filters, filters_enabled | настроенные списки блокировки, и включённые | |
filter_rules | правила, загруженные из включённых списков | |
filter_rules_count, filter_update_age_seconds | на каждый включённый список (не более 32) | filter |
filter_oldest_update_age_seconds | возраст самого старого обновления среди включённых списков | |
filters_never_updated | включённые списки, которые никогда не загружались | |
filter_update_interval_hours | как часто обновляются списки; 0 отключает обновления | |
update_check_enabled | 0, когда AdGuard Home работает с отключённой проверкой версии | |
update_available | 1, когда последняя проверка версии объявила более новую версию; отсутствует, когда проверка отключена | latest |
scrape_errors | второстепенные вызовы, завершившиеся ошибкой при последней проверке |
Проверка версии отключена в официальном образе Docker и в большинстве
пакетов дистрибутивов, которые обновляют AdGuard Home сами: там
update_available никогда не записывается, и его правило молчит.
Статистика внешних серверов считает только ответы: внешний сервер, который перестаёт отвечать, не оставляет в ней следа. Поэтому DumbMonit просит AdGuard Home проверять каждый внешний сервер при каждой проверке — тот же тест, что кнопка Test upstreams в Settings → DNS settings: один DNS-запрос от AdGuard Home к этому серверу. Мёртвый внешний сервер заставил бы AdGuard Home ждать дважды его собственный таймаут (по умолчанию 20 секунд); DumbMonit перестаёт ждать через 4 секунды и сообщает его как недоступный. Снимите отметку с опции Test upstream servers, чтобы это отключить.
Применяемые встроенные правила: «Защита AdGuard Home выключена», «DNS AdGuard Home не работает», «Внешний DNS AdGuard Home не отвечает», «Списки фильтров AdGuard Home устарели», «Доступно обновление AdGuard Home», плюс «Монитор недоступен».
Страница монитора
Заголовок раздела «Страница монитора»Панель над графиками читает то, что сохранила проверка; открытие страницы никогда не подключается к AdGuard Home. Она сообщает, включены ли защита и DNS-сервер (и когда заканчивается пауза), затем — запросы, блокировки и время ответа за окно статистики, внешние серверы с результатом их проверки и временем ответа, и списки фильтров с их правилами и последним обновлением.
Добавление пользователя для DumbMonit в AdGuard Home
Заголовок раздела «Добавление пользователя для DumbMonit в AdGuard Home»-
У AdGuard Home нет учётной записи только для чтения: каждый пользователь, перечисленный в AdGuardHome.yaml, может менять каждую настройку. Дайте DumbMonit собственного пользователя, чтобы его можно было удалить, не трогая вашего. Сначала создайте bcrypt-хеш длинного случайного пароля (htpasswd идёт с пакетом apache2-utils или httpd-tools):
htpasswd -B -C 10 -n -b dumbmonit 'LONG-RANDOM-PASSWORD' -
Остановите AdGuard Home, откройте AdGuardHome.yaml (рядом с бинарным файлом AdGuardHome, либо в папке conf тома Docker) и добавьте эту строку под «users:», с тем же отступом, что уже есть у строки «- name:». Замените HASH тем, что htpasswd вывел после «dumbmonit:». Запустите AdGuard Home снова.
- { name: dumbmonit, password: "HASH" }Тогда раздел читается так:
users:- { name: dumbmonit, password: "$2y$10$…" }- name: yournamepassword: $2a$10$… -
Проверьте с хоста DumbMonit, что пользователь принят:
curl -u dumbmonit http://adguard.lan/control/status -
В DumbMonit введите адрес веб-интерфейса AdGuard Home, например «adguard.lan» (порт 80) или «http://adguard.lan:3000», затем пользователя dumbmonit и его пароль.
-
DumbMonit читает только статус, статистику, списки фильтров и последнюю проверку версии. Он никогда не читает журнал запросов. При каждой проверке он просит AdGuard Home протестировать каждый внешний DNS-сервер, как делает кнопка Test upstreams; снимите отметку с Test upstream servers ниже, чтобы это остановить.
AdGuard Home должен быть остановлен, пока вы редактируете файл: он перезаписывает AdGuardHome.yaml при каждом изменении настройки и отбросил бы строку, добавленную во время работы.
Учётные данные
Заголовок раздела «Учётные данные»| Учётные данные | Поля |
|---|---|
| Имя пользователя / пароль | Выделенный пользователь, добавленный в AdGuardHome.yaml, отправляется как базовая аутентификация HTTP. |
| Без аутентификации | Только для AdGuard Home вообще без пользователей в AdGuardHome.yaml. |
Адрес: имя хоста или IP (adguard.lan), host:port, или полный URL с
префиксом пути за обратным прокси (https://dns.lan/adguard); завершающий
/control игнорируется. Опции: протокол (по умолчанию HTTP), порт (80),
проверка сертификата, таймаут запроса (5 с) и тест внешних серверов
(включён).
| Вызов | Почему |
|---|---|
GET /control/status | работа, защита, версия: единственный вызов, чей отказ проваливает проверку |
GET /control/stats, GET /control/stats/config | запросы, блокировки, ответы внешних серверов, окно статистики |
GET /control/filtering/status | списки фильтров |
POST /control/version.json с {"recheck_now": false} | результат последней проверки версии, как его читает веб-интерфейс при каждой загрузке страницы; никогда не форсирует новую проверку |
GET /control/dns_info, затем POST /control/test_upstream_dns на каждый внешний сервер | настроенные внешние серверы и bootstrap-серверы, затем тест внешнего сервера; не меняет ни одну настройку |