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

Конфигурация

Всё настраивается через переменные окружения; ни одна не обязательна. Файла конфигурации для монтирования нет.

ПеременнаяПо умолчаниюНазначение
DUMBMONIT_BIND0.0.0.0:8080Адрес прослушивания API и веб-интерфейса внутри контейнера.
PUID / PGID65532Пользователь и группа, от имени которых работает сервер, когда контейнер стартует от root (user: "0:0", как в поставляемом docker-compose.yml): каталог данных передаётся им при запуске, затем root отбрасывается. Значение 0 отклоняется. DUMBMONIT_PUID / DUMBMONIT_PGID имеют приоритет. В остальных случаях игнорируются. См. Права доступа.
DUMBMONIT_DATA_DIR/dataПостоянный каталог: dumbmonit.db (SQLite), secret.key, vm/ (встроенная VictoriaMetrics) и webchange/ (скриншоты изменений сайтов).
DUMBMONIT_VM_URL(не задано)Базовый URL внешней VictoriaMetrics (http://host:8428). Если задан, встроенная не запускается; см. ниже.
DUMBMONIT_SECRET(генерируется)Секрет экземпляра. Если пуст, читается из <data dir>/secret.key, генерируется при первом запуске. Шифрует учётные данные мониторов, секреты каналов и токены агентов с помощью AES-256-GCM.
DUMBMONIT_MAX_CONCURRENT_PROBES64Максимум одновременных проб, всеми сборщиками вместе.
DUMBMONIT_WEBSITE_MAX_CONCURRENT10Максимум одновременных проверок состояния сайтов, от 1 до 256, в пределах лимита выше.
DUMBMONIT_WEBSITE_MAX_PER_HOST1Максимум одновременных проверок сайтов к одному домену (www.example.com и shop.example.com считаются одним), от 1 до 16.
DUMBMONIT_WEBSITE_HOST_SPACING_SECS2Минимум секунд между двумя проверками сайтов к одному домену, от 0 до 3600. Опция сайта host_spacing_seconds переопределяет его после проверки этого сайта.
DUMBMONIT_WEBSITE_CHANGE_CHECK_MINUTES360Период по умолчанию, в минутах, сравнения метаданных сайта (заголовок, описание, canonical, конечный адрес, robots.txt), от 0 до 10080; 0 сравнивает при каждой проверке. Доступность всё равно проверяется при каждом интервале опроса. Опция сайта change_check_minutes переопределяет его.
DUMBMONIT_PROBE_TIMEOUT_SECS10Жёсткий тайм-аут одной пробы. У мониторов сервисов есть собственная, более короткая опция timeout_seconds.
DUMBMONIT_FLUSH_INTERVAL_SECS5Период пакетной записи в VictoriaMetrics.
DUMBMONIT_FLUSH_BATCH5000Число буферизованных отсчётов, при котором запись запускается до истечения периода.
DUMBMONIT_WORKERSmin(4, CPUs)Потоки асинхронной среды выполнения. Сервер проводит время в ожидании сети: четырёх хватает для домашней лаборатории, увеличивайте только для сотен мониторов.
DUMBMONIT_DB_POOL4Максимум открытых соединений SQLite. Каждое стоит поток и страничный кеш в 2 МБ; простаивающие соединения закрываются через пять минут.
DUMBMONIT_LOGinfoФильтр логов, синтаксис tracing: debug, warn, dumbmonit=debug,sqlx=warn…
DUMBMONIT_AGENT_DIR/agentsКаталог бинарных файлов агентов, отдаваемых по /download/. Пуст или отсутствует: команда установки завершается с 404, сервер продолжает работать.
DUMBMONIT_RESET_PASSWORD(выкл.)1, true, yes или on: очистить пароль и все сессии при запуске. Интерфейс снова покажет /setup. Уберите её после этого.
DUMBMONIT_COOKIE_SECURE(выкл.)1, чтобы всегда устанавливать атрибут Secure для cookie сессии. Только за HTTPS: по обычному HTTP браузер никогда не отправит cookie обратно. Без неё атрибут всё равно добавляется, когда браузер находится на странице https:// (об этом говорит его Origin или доверенный прокси отправляет X-Forwarded-Proto: https), поэтому обычный HTTP в локальной сети продолжает работать.
DUMBMONIT_TRUSTED_PROXIES(пусто)Обратные прокси, чьим X-Forwarded-For, X-Forwarded-Proto и X-Forwarded-Host верят, в виде адресов или диапазонов CIDR через запятую (10.0.0.5, 172.16.0.0/12). Ограничитель частоты входа и журнал безопасности тогда видят реальный адрес клиента вместо адреса прокси; без неё все посетители за прокси делят одну корзину. Ссылки страниц статуса (RSS-лента, письма подписчикам) и адрес возврата единого входа также используют перенаправленный хост только от этих прокси. Заголовки игнорируются от любого другого адреса, поэтому клиент не может выбрать собственную корзину или адрес ссылки.
DUMBMONIT_OIDC_AUTO_CREATE(выкл.)true, чтобы создавать учётную запись для неизвестной идентичности при её первом едином входе. Если выключено, войти могут только существующие учётные записи (уже связанные или сопоставленные по email, подтверждённому провайдером). Как и другие переменные DUMBMONIT_OIDC_*, читается, только пока в интерфейсе не сохранены настройки единого входа.
DUMBMONIT_OIDC_ALLOW_HTTP(выкл.)1, чтобы принимать эмитента OpenID Connect по обычному http://. Если выключено, экран настроек отклоняет всё, кроме https://: эмитент в открытом виде отдаёт код авторизации и секрет клиента тому, кто слушает сеть. Только для тестового провайдера на loopback.
DUMBMONIT_SETUP_CODE(генерируется)Код, который запрашивает /setup, пока нет администратора. Если не задан, случайный код выводится в логе сервера при каждом запуске; задайте его для автоматизированного развёртывания. См. Установка с Docker.
DUMBMONIT_PUBLIC_URL(не задано)Адрес, по которому браузеры обращаются к DumbMonit (https://monit.example.org). Используется для ссылок в уведомлениях и письмах страниц статуса, URI перенаправления единого входа и контакта, передаваемого push-сервисам (только HTTPS). Значение, сохранённое в интерфейсе (политика уведомлений, настройки SSO), имеет приоритет.
DUMBMONIT_API_CORS_ORIGINS(любой origin)Origin, которым разрешено вызывать API кросс-доменно с bearer-токеном и обращаться к конечной точке MCP: список через запятую или off для отсутствия. См. HTTP API.
DUMBMONIT_OIDC_ISSUER(не задано)URL эмитента провайдера OpenID Connect; discovery читается из {issuer}/.well-known/openid-configuration. Должен быть https://, если не задана DUMBMONIT_OIDC_ALLOW_HTTP.
DUMBMONIT_OIDC_CLIENT_ID(не задано)Идентификатор клиента, зарегистрированный у провайдера.
DUMBMONIT_OIDC_CLIENT_SECRET(не задано)Секрет клиента.
DUMBMONIT_OIDC_PROVIDER_NAMESSOПодпись кнопки «Continue with …».
DUMBMONIT_OIDC_SCOPESopenid profile emailЗапрашиваемые области (scopes), через пробел.
DUMBMONIT_OIDC_GROUPS_CLAIMgroupsClaim токена, перечисляющий группы пользователя.
DUMBMONIT_OIDC_ADMIN_GROUPS(пусто)Группы через запятую, участники которых становятся администраторами.
DUMBMONIT_OIDC_OPERATOR_GROUPS(пусто)Группы через запятую, остальные участники которых становятся операторами. См. Единый вход.
DUMBMONIT_METRICS_PUBLIC(выкл.)1, чтобы отдавать /metrics, /federate и /prometheus/api/v1/… без токена API. Любой, кто может достучаться до порта, тогда читает каждое измерение каждого монитора и состояние экземпляра; задавайте только там, где что-то другое уже ограничивает доступ к порту. См. Метрики.
DUMBMONIT_ALERT_INTERVAL_SECS30Период оценки оповещений. Значения меньше 10 повышаются до 10.
DUMBMONIT_ALERT_HISTORY_DAYS90Срок хранения истории оповещений, в днях.
DUMBMONIT_BACKUP_ENABLED1Локальные резервные копии базы данных по расписанию. 0, false, no или off, чтобы прекратить их запись. См. Резервное копирование и восстановление.
DUMBMONIT_UPDATE_CHECK1off отключает ежедневную проверку последнего релиза на GitHub (изолированные экземпляры). См. Обновление.
DUMBMONIT_BACKUP_DIR<data dir>/backupsКуда записываются резервные копии по расписанию. Укажите второй том, чтобы пережить потерю первого.
DUMBMONIT_BACKUP_INTERVAL_HOURS24Часов между двумя копиями, от 1 до 8760. Первая создаётся через один интервал после запуска, а не при запуске.
DUMBMONIT_DEMO(выкл.)1 для демо-версии только для чтения с фиксированным вымышленным парком, вход demo / demo. Пересоздаёт базу данных при каждом запуске: никогда не используйте на реальном томе данных. См. Запуск демо-экземпляра.
DUMBMONIT_BACKUP_KEEP7Сколько копий хранится, от 1 до 365. Самые старые удаляются вместе с их .key.
DUMBMONIT_BROWSER_URL(не задано)Headless Chromium, используемый для скриншотов изменений сайтов, в виде http://host:9222 (его порт DevTools). Добавьте службу chromedp/headless-shell в файл Compose, как показано в разделе Снимки экрана. Если не задан: только текстовое сравнение.

Срок хранения базовых линий (60 дней) и 14-дневный период обучения не настраиваются.

До сентября 2026 DumbMonit назывался EzyMonit. Каждая переменная DUMBMONIT_* также читается под своим старым именем EZYMONIT_* как запасной вариант, с одним предупреждением при запуске на каждую переменную, всё ещё заданную таким образом (EZYMONIT_X is deprecated, use DUMBMONIT_X). Старый файл базы данных /data/ezymonit.db переименовывается в dumbmonit.db при запуске, а токены агентов ezym_… остаются действительными (новые имеют вид dmon_…). Cookie сессии теперь называется dumbmonit_session: первый запуск после переименования один раз выводит всех из системы.

Образ содержит бинарный файл VictoriaMetrics. Если не задан DUMBMONIT_VM_URL, сервер запускает её как дочерний процесс при старте, пересылает её строки журнала в лог сервера, перезапускает её с задержкой (backoff), если она падает, и останавливает при завершении работы (SIGTERM, 20 с на завершение, затем kill; stop_grace_period файла Compose оставляет для этого запас).

ПеременнаяПо умолчаниюНазначение
DUMBMONIT_VM_BINARY/victoria-metrics-prodПуть к запускаемому бинарному файлу VictoriaMetrics.
DUMBMONIT_VM_LISTEN127.0.0.1:8428Адрес прослушивания внутри контейнера. По умолчанию loopback: с ней разговаривает только сервер. Оверлей разработки задаёт 0.0.0.0:8428 и публикует порт.
DUMBMONIT_VM_RETENTION12Срок хранения в синтаксисе -retentionPeriod: число месяцев или длительность, например 30d или 2y.
DUMBMONIT_VM_MEMORY256MBБюджет кешей VictoriaMetrics (-memory.allowedBytes). Без бюджета VM рассчитывает их на 60 % ОЗУ хоста, и её резидентная память растёт днями. Несколько десятков мониторов умещаются в 256 МБ; увеличивайте для сотен хостов.

Её данные находятся в <data dir>/vm, на том же томе, что и база данных. Три флага зафиксированы сервером и не настраиваются: -search.maxUniqueTimeseries=100000 (неуправляемый запрос не может исчерпать бюджет), -search.maxConcurrentRequests=4 (один интерфейс плюс движок оповещений) и -dedup.minScrapeInterval=10s (дублирующиеся точки ближе десяти секунд схлопываются; при 30-секундном ритме сборщиков ничего не теряется).

Если задан DUMBMONIT_VM_URL, ничего из этого не применяется: сервер использует указанный вами экземпляр, а встроенный никогда не запускается. GET /api/health сообщает, в каком вы случае (victoria.embedded).

Поставляемый docker-compose.yml не читает ни одной переменной и не требует файла .env. Всё задаётся в environment: службы или правкой самого файла; см. Дополнительные параметры (порт, секрет, срок хранения и память, внешняя VictoriaMetrics, сброс пароля, снимки экрана). Оверлей разработки docker-compose.dev.yml читает DUMBMONIT_VM_PORT (по умолчанию 8428) — порт хоста для встроенной VictoriaMetrics.

ПортКонтейнерНазначение
8080/tcpdumbmonitВеб-интерфейс, API, установщики и загрузки агентов, приём данных агентов. Единственный порт, который нужно публиковать.
8428/tcpdumbmonitHTTP API встроенной VictoriaMetrics, на loopback контейнера. Публикуется только оверлеем разработки.

Исходящие: SNMP (по умолчанию UDP 161) к мониторам, HTTPS к Proxmox, PBS, Synology и сервисам уведомлений, плюс всё, на что нацелены ваши мониторы сервисов. ICMP ping требует sysctl net.ipv4.ping_group_range, заданный в файле Compose (без capability).

Один том, dumbmonit-data, смонтированный в /data. Его имя зафиксировано в файле Compose, как бы ни назывался проект.

Путь (в контейнере)ТомСодержимое
/data/dumbmonit.dbdumbmonit-dataМониторы, учётные данные (зашифрованные), правила, состояние и история оповещений, базовые линии, silences, каналы, токены агентов, хеш пароля, сессии.
/data/secret.keydumbmonit-dataСекрет экземпляра. Сделайте его резервную копию. Без него зашифрованные учётные данные невосстановимы, а сервер отказывается запускаться.
/data/backups/dumbmonit-dataЛокальные резервные копии по расписанию: dumbmonit-<timestamp>.db (онлайн-копия SQLite) и соответствующий .key. По умолчанию ежедневно, хранятся семь.
/data/vm/dumbmonit-dataВременные ряды встроенной VictoriaMetrics, по умолчанию 12 месяцев. Пусто, когда задан DUMBMONIT_VM_URL.
/agents/образБинарные файлы агентов. Смонтируйте другой каталог и задайте DUMBMONIT_AGENT_DIR, чтобы поставлять свои.
/etc/ssl/certs/ca-certificates.crtобразКорневые сертификаты TLS для исходящего HTTPS. Смонтируйте сюда свой набор, чтобы доверять частному удостоверяющему центру.
Окно терминала
# add DUMBMONIT_RESET_PASSWORD: "1" under environment: in docker-compose.yml
docker compose up -d
# open the UI: /setup asks for a new password
# remove the line again, then:
docker compose up -d

Сброс очищает пароль и все сессии; мониторы, правила и каналы не затрагиваются.

У агента есть собственные переменные и файл конфигурации: см. Агент для Linux, macOS, FreeBSD и Windows.

Что измеряет агент и, соответственно, сколько рядов производит одна машина. Значения по умолчанию удерживают хост с десятками контейнеров в пределах нескольких сотен рядов; каждый ключ — это запись в agent.yaml, переопределяемая своей переменной окружения.

КлючПеременнаяПо умолчаниюНазначение
interfaces_ignoreDUMBMONIT_AGENT_INTERFACES_IGNORE^(veth|br-|docker|virbr|lo$|vEthernet)Исключаемые сетевые интерфейсы: интерфейсы контейнеров и ВМ, loopback. Список точных имён или регулярных выражений (без привязки; всё, что содержит метасимвол, — регулярное выражение). Значение заменяет значение по умолчанию; пустой список оставляет все интерфейсы.
interfaces_onlyDUMBMONIT_AGENT_INTERFACES_ONLY(пусто)Список разрешённых, тот же синтаксис. Если задан, сообщаются только эти интерфейсы, а interfaces_ignore не учитывается.
mounts_ignoreDUMBMONIT_AGENT_MOUNTS_IGNORE^/(var/lib/docker/|run/(user|docker|containerd|snapd|credentials|systemd|lock|udev|netns|lxc|lxd)/|sys/|proc/|dev/|snap/)Точки монтирования, исключаемые из использования файловых систем и дискового ввода-вывода, тот же синтаксис. Съёмные диски в /run/media/ остаются. Псевдофайловые системы (overlay, tmpfs, squashfs, fuse.portal, cgroup2…) всегда пропускаются, каким бы ни был путь.
cpu_per_coreDUMBMONIT_AGENT_CPU_PER_COREfalseОдин ряд cpu_core_usage_percent на каждое ядро, сверх общей загрузки. cpu_count сообщается в любом случае.
docker_max_containersDUMBMONIT_AGENT_DOCKER_MAX_CONTAINERS200Контейнеры, детализируемые за цикл, сначала работающие. Сверх этого контейнеры только подсчитываются (container_count, container_running_count остаются точными), а container_series_skipped сообщает, сколько их. 0 считает без детализации.

В окружении списки разделяются запятыми (^veth, ^br-, docker0); в YAML — либо список, либо одна строка через запятую. Счётчики дискового ввода-вывода (disk_read_bytes, disk_written_bytes) несут только метку device: один ряд на блочное устройство, сколько бы раз оно ни было смонтировано.