Конфигурация¶
Всё настраивается через переменные окружения; ни одна не обязательна. Файла конфигурации для монтирования нет.
Сервер¶
| Переменная | По умолчанию | Назначение |
|---|---|---|
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_*¶
До сентября 2026 DumbMonit назывался EzyMonit. Каждая переменная DUMBMONIT_*
также читается под своим старым именем EZYMONIT_* как запасной вариант, с одним
предупреждением при запуске на каждую переменную, всё ещё заданную таким образом (EZYMONIT_X is deprecated,
use DUMBMONIT_X). Старый файл базы данных /data/ezymonit.db переименовывается в
dumbmonit.db при запуске, а токены агентов ezym_… остаются действительными (новые имеют вид
dmon_…). Cookie сессии теперь называется dumbmonit_session: первый запуск после
переименования один раз выводит всех из системы.
Встроенная 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¶
Поставляемый 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.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_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: один
ряд на блочное устройство, сколько бы раз оно ни было смонтировано.