Конфигурация
Всё настраивается через переменные окружения; ни одна не обязательна. Файла конфигурации для монтирования нет.
| Переменная | По умолчанию | Назначение |
|---|---|---|
DUMBMONIT_BIND | 0.0.0.0:8080 | Адрес прослушивания API и веб-интерфейса внутри контейнера. |
PUID / PGID | 65532 | Пользователь и группа, от имени которых работает сервер, когда контейнер стартует от 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_PROBES | 64 | Максимум одновременных проб, всеми сборщиками вместе. |
DUMBMONIT_WEBSITE_MAX_CONCURRENT | 10 | Максимум одновременных проверок состояния сайтов, от 1 до 256, в пределах лимита выше. |
DUMBMONIT_WEBSITE_MAX_PER_HOST | 1 | Максимум одновременных проверок сайтов к одному домену (www.example.com и shop.example.com считаются одним), от 1 до 16. |
DUMBMONIT_WEBSITE_HOST_SPACING_SECS | 2 | Минимум секунд между двумя проверками сайтов к одному домену, от 0 до 3600. Опция сайта host_spacing_seconds переопределяет его после проверки этого сайта. |
DUMBMONIT_WEBSITE_CHANGE_CHECK_MINUTES | 360 | Период по умолчанию, в минутах, сравнения метаданных сайта (заголовок, описание, canonical, конечный адрес, robots.txt), от 0 до 10080; 0 сравнивает при каждой проверке. Доступность всё равно проверяется при каждом интервале опроса. Опция сайта change_check_minutes переопределяет его. |
DUMBMONIT_PROBE_TIMEOUT_SECS | 10 | Жёсткий тайм-аут одной пробы. У мониторов сервисов есть собственная, более короткая опция timeout_seconds. |
DUMBMONIT_FLUSH_INTERVAL_SECS | 5 | Период пакетной записи в VictoriaMetrics. |
DUMBMONIT_FLUSH_BATCH | 5000 | Число буферизованных отсчётов, при котором запись запускается до истечения периода. |
DUMBMONIT_WORKERS | min(4, CPUs) | Потоки асинхронной среды выполнения. Сервер проводит время в ожидании сети: четырёх хватает для домашней лаборатории, увеличивайте только для сотен мониторов. |
DUMBMONIT_DB_POOL | 4 | Максимум открытых соединений SQLite. Каждое стоит поток и страничный кеш в 2 МБ; простаивающие соединения закрываются через пять минут. |
DUMBMONIT_LOG | info | Фильтр логов, синтаксис 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_NAME | SSO | Подпись кнопки «Continue with …». |
DUMBMONIT_OIDC_SCOPES | openid profile email | Запрашиваемые области (scopes), через пробел. |
DUMBMONIT_OIDC_GROUPS_CLAIM | groups | Claim токена, перечисляющий группы пользователя. |
DUMBMONIT_OIDC_ADMIN_GROUPS | (пусто) | Группы через запятую, участники которых становятся администраторами. |
DUMBMONIT_OIDC_OPERATOR_GROUPS | (пусто) | Группы через запятую, остальные участники которых становятся операторами. См. Единый вход. |
DUMBMONIT_METRICS_PUBLIC | (выкл.) | 1, чтобы отдавать /metrics, /federate и /prometheus/api/v1/… без токена API. Любой, кто может достучаться до порта, тогда читает каждое измерение каждого монитора и состояние экземпляра; задавайте только там, где что-то другое уже ограничивает доступ к порту. См. Метрики. |
DUMBMONIT_ALERT_INTERVAL_SECS | 30 | Период оценки оповещений. Значения меньше 10 повышаются до 10. |
DUMBMONIT_ALERT_HISTORY_DAYS | 90 | Срок хранения истории оповещений, в днях. |
DUMBMONIT_BACKUP_ENABLED | 1 | Локальные резервные копии базы данных по расписанию. 0, false, no или off, чтобы прекратить их запись. См. Резервное копирование и восстановление. |
DUMBMONIT_UPDATE_CHECK | 1 | off отключает ежедневную проверку последнего релиза на GitHub (изолированные экземпляры). См. Обновление. |
DUMBMONIT_BACKUP_DIR | <data dir>/backups | Куда записываются резервные копии по расписанию. Укажите второй том, чтобы пережить потерю первого. |
DUMBMONIT_BACKUP_INTERVAL_HOURS | 24 | Часов между двумя копиями, от 1 до 8760. Первая создаётся через один интервал после запуска, а не при запуске. |
DUMBMONIT_DEMO | (выкл.) | 1 для публичной демо-версии только для чтения с фиксированным вымышленным парком, вход demo / demo. Пересоздаёт базу данных при каждом запуске: никогда не используйте на реальном томе данных. См. Запуск демо-экземпляра. |
DUMBMONIT_BACKUP_KEEP | 7 | Сколько копий хранится, от 1 до 365. Самые старые удаляются вместе с их .key. |
DUMBMONIT_BROWSER_URL | (не задано) | Headless Chromium, используемый для скриншотов изменений сайтов, в виде http://host:9222 (его порт DevTools). Добавьте службу chromedp/headless-shell в файл Compose, как показано в разделе Снимки экрана. Если не задан: только текстовое сравнение. |
Срок хранения базовых линий (60 дней) и 14-дневный период обучения не настраиваются.
Прежние имена EZYMONIT_*
Заголовок раздела «Прежние имена EZYMONIT_*»До сентября 2026 DumbMonit назывался EzyMonit. Каждая переменная DUMBMONIT_*
также читается под своим старым именем EZYMONIT_* как запасной вариант, с одним
предупреждением при запуске на каждую переменную, всё ещё заданную таким образом (EZYMONIT_X is deprecated, use DUMBMONIT_X). Старый файл базы данных /data/ezymonit.db переименовывается в
dumbmonit.db при запуске, а токены агентов ezym_… остаются действительными (новые имеют вид
dmon_…). Cookie сессии теперь называется dumbmonit_session: первый запуск после
переименования один раз выводит всех из системы.
Встроенная VictoriaMetrics
Заголовок раздела «Встроенная VictoriaMetrics»Образ содержит бинарный файл VictoriaMetrics. Если не задан DUMBMONIT_VM_URL,
сервер запускает её как дочерний процесс при старте, пересылает её строки журнала в
лог сервера, перезапускает её с задержкой (backoff), если она падает, и останавливает при завершении работы
(SIGTERM, 20 с на завершение, затем kill; stop_grace_period файла Compose
оставляет для этого запас).
| Переменная | По умолчанию | Назначение |
|---|---|---|
DUMBMONIT_VM_BINARY | /victoria-metrics-prod | Путь к запускаемому бинарному файлу VictoriaMetrics. |
DUMBMONIT_VM_LISTEN | 127.0.0.1:8428 | Адрес прослушивания внутри контейнера. По умолчанию loopback: с ней разговаривает только сервер. Оверлей разработки задаёт 0.0.0.0:8428 и публикует порт. |
DUMBMONIT_VM_RETENTION | 12 | Срок хранения в синтаксисе -retentionPeriod: число месяцев или длительность, например 30d или 2y. |
DUMBMONIT_VM_MEMORY | 256MB | Бюджет кешей 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).
Настройки уровня Compose
Заголовок раздела «Настройки уровня Compose»Поставляемый docker-compose.yml не читает ни одной переменной и не требует
файла .env. Всё задаётся в environment: службы или правкой самого файла; см.
Дополнительные параметры (порт, секрет,
срок хранения и память, внешняя VictoriaMetrics, сброс пароля, снимки экрана).
Оверлей разработки docker-compose.dev.yml читает DUMBMONIT_VM_PORT (по
умолчанию 8428) — порт хоста для встроенной VictoriaMetrics.
| Порт | Контейнер | Назначение |
|---|---|---|
8080/tcp | dumbmonit | Веб-интерфейс, API, установщики и загрузки агентов, приём данных агентов. Единственный порт, который нужно публиковать. |
8428/tcp | dumbmonit | HTTP 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.db | dumbmonit-data | Мониторы, учётные данные (зашифрованные), правила, состояние и история оповещений, базовые линии, silences, каналы, токены агентов, хеш пароля, сессии. |
/data/secret.key | dumbmonit-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.ymldocker 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_ignore | DUMBMONIT_AGENT_INTERFACES_IGNORE | ^(veth|br-|docker|virbr|lo$|vEthernet) | Исключаемые сетевые интерфейсы: интерфейсы контейнеров и ВМ, loopback. Список точных имён или регулярных выражений (без привязки; всё, что содержит метасимвол, — регулярное выражение). Значение заменяет значение по умолчанию; пустой список оставляет все интерфейсы. |
interfaces_only | DUMBMONIT_AGENT_INTERFACES_ONLY | (пусто) | Список разрешённых, тот же синтаксис. Если задан, сообщаются только эти интерфейсы, а interfaces_ignore не учитывается. |
mounts_ignore | DUMBMONIT_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_core | DUMBMONIT_AGENT_CPU_PER_CORE | false | Один ряд cpu_core_usage_percent на каждое ядро, сверх общей загрузки. cpu_count сообщается в любом случае. |
docker_max_containers | DUMBMONIT_AGENT_DOCKER_MAX_CONTAINERS | 200 | Контейнеры, детализируемые за цикл, сначала работающие. Сверх этого контейнеры только подсчитываются (container_count, container_running_count остаются точными), а container_series_skipped сообщает, сколько их. 0 считает без детализации. |
В окружении списки разделяются запятыми (^veth, ^br-, docker0); в
YAML — либо список, либо одна строка через запятую. Счётчики дискового ввода-вывода
(disk_read_bytes, disk_written_bytes) несут только метку device: один
ряд на блочное устройство, сколько бы раз оно ни было смонтировано.