Перейти к содержимому

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), а не счётчики: они растут и падают по мере скольжения окна, и хранятся как есть.

МетрикаЧтоМетки
running1, когда DNS-сервер работает
protection_enabled1, когда защита включена
protection_paused_secondsвремя, оставшееся до возврата защиты на паузе, 0 без паузы
version_infoзначение 1version
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_up1, когда собственная проверка AdGuard Home этого внешнего сервера проходит; 0 — когда отказывает или не отвечает за 4 секунды (не более 8). Метка — это внешний сервер, как его записывает AdGuard Home в своей статистике (https://dns10.quad9.net:443/dns-query, 192.0.2.1:53); для внешнего сервера, оставшегося молчащим, — строка как настроена.upstream
filtering_enabled1, когда фильтрация включена в 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_enabled0, когда AdGuard Home работает с отключённой проверкой версии
update_available1, когда последняя проверка версии объявила более новую версию; отсутствует, когда проверка отключена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»
  1. У AdGuard Home нет учётной записи только для чтения: каждый пользователь, перечисленный в AdGuardHome.yaml, может менять каждую настройку. Дайте DumbMonit собственного пользователя, чтобы его можно было удалить, не трогая вашего. Сначала создайте bcrypt-хеш длинного случайного пароля (htpasswd идёт с пакетом apache2-utils или httpd-tools):

    htpasswd -B -C 10 -n -b dumbmonit 'LONG-RANDOM-PASSWORD'
  2. Остановите 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: yourname
    password: $2a$10$…
  3. Проверьте с хоста DumbMonit, что пользователь принят:

    curl -u dumbmonit http://adguard.lan/control/status
  4. В DumbMonit введите адрес веб-интерфейса AdGuard Home, например «adguard.lan» (порт 80) или «http://adguard.lan:3000», затем пользователя dumbmonit и его пароль.

  5. 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-серверы, затем тест внешнего сервера; не меняет ни одну настройку