Пакеты интеграции
Пакет интеграции добавляет тип монитора в DumbMonit без нового релиза. Это
единый файл YAML, который указывает, где читать (HTTP API или страница
Prometheus /metrics на устройстве), что извлекать, и какие правила
оповещений идут с ним. После установки тип пакета появляется в Add
monitor рядом со встроенными, и его мониторы опрашиваются, строятся на
графиках и оповещаются так же, как любые другие.
Пакет декларативен: без кода, без скриптов. DumbMonit сам выполняет каждый запрос, по правилам, которые пакет не может изменить.
Что пакет может и не может
Заголовок раздела «Что пакет может и не может»| Пакет может | Пакет не может |
|---|---|
Вызывать пути GET или POST на собственном адресе монитора | Вызывать любой другой хост, следовать перенаправлению на другой хост, или использовать абсолютный URL |
| Читать JSON (JSONPath), обычный текст (регулярные выражения) или текстовый формат Prometheus | Запускать код, команды shell или шаблоны за пределами {{option.x}} и {{credential.x}} |
| Отправлять учётные данные монитора в заголовке или как basic/bearer аутентификацию | Помещать учётные данные в URL или тело запроса |
| Объявлять опции, показываемые в форме монитора (канал переключателя, порог) | Записывать метрики за пределами собственного префикса dumbmonit_<pack>_ |
| Поставлять правила оповещений по своим метрикам | Менять встроенный тип монитора или встроенное правило |
| Приносить профили SNMP, в формате встроенных | Читать более 4 МиБ на ответ, выполнять более 16 запросов за опрос, или производить более 5000 рядов за опрос |
Адреса loopback и link-local (127.0.0.1, 169.254.x.x) отклоняются, если
не включена опция монитора Allow loopback and link-local targets,
точно как для проверок HTTP. Приватные адреса LAN всегда разрешены.
Эталонные пакеты
Заголовок раздела «Эталонные пакеты»Репозиторий поставляется с тремя пакетами в
packs/, каждый со
своими фикстурами и ожидаемым выводом:
| Пакет | Читает | Правила |
|---|---|---|
node-exporter | отобранное подмножество Prometheus node_exporter (CPU, память, файловые системы, диски, сеть) | файловая система почти заполнена, память почти исчерпана |
shelly-plug | розетки и реле Shelly Gen2+, /rpc/Switch.GetStatus | перегрев |
speedtest-tracker | последний результат API v1 Speedtest Tracker | интернет ниже ожидаемого, тест скорости не проходит |
Установка пакета
Заголовок раздела «Установка пакета»В интерфейсе, как администратор: Settings → Integration packs. Вставьте
YAML пакета или загрузите его pack.yaml, затем Install the pack.
Пакет, не прошедший проверки, отклоняется со списком того, что нужно
исправить; прошедший сохраняется со своими примечаниями, если они есть. Та
же страница включает и отключает пакеты и удаляет их. Установленные типы
появляются в Community packs при добавлении монитора, помеченные
Pack.
Через HTTP API вам нужна сессия администратора или токен API с областью
write (Settings → API & assistants).
# Установить, или обновить до более новой версии того же пакетаcurl -H 'Authorization: Bearer dmt_…' -H 'Content-Type: application/yaml' \ --data-binary @packs/shelly-plug/pack.yaml https://localhost:8080/api/packs
# Перечислить установленноеcurl -H 'Authorization: Bearer dmt_…' https://localhost:8080/api/packsОтвет сообщает, что произошло (created, updated или unchanged), метрики,
которые производит пакет, и сколько правил оповещений было добавлено. Пакет,
не прошедший проверку, отклоняется с полным списком проблем, по одной на
строку.
| Вызов | Делает |
|---|---|
GET /api/packs | установленные пакеты: версия, тип, метрики, правила, мониторы, использующие его |
GET /api/packs/{id} | один пакет |
POST /api/packs | установить или обновить; тело: YAML (application/yaml), или {"yaml": "…"} в JSON |
PUT /api/packs/{id}/disable | остановить опрос мониторов пакета, оставить всё остальное |
PUT /api/packs/{id}/enable | снова опрашивать их |
DELETE /api/packs/{id} | удалить, со своими правилами; отклоняется (409), пока мониторы всё ещё его используют |
С cookie сессии вместо токена добавляйте X-Requested-With: DumbMonit к
каждому POST, PUT и DELETE, как для остального API.
Установка действует немедленно: новый тип доступен в форме монитора без
перезапуска. Единственное исключение — пакет, приносящий профили SNMP; ответ
тогда говорит "restart_required": true, потому что каталог SNMP читается
при запуске.
Обновления и ваши изменения
Заголовок раздела «Обновления и ваши изменения»Обновление пакета (тот же id, новое содержимое) заменяет его извлечение и
описание. Его правила оповещений только добавляются: правило, которое вы
изменили, отключили или удалили, никогда не перезаписывается обновлением.
Отключение пакета забирает его тип монитора и оставляет всё остальное: мониторы, историю, правила. Его мониторы больше не опрашиваются (каждый показывает ошибку конфигурации) и, как любой монитор, переставший отвечать, вызывают Monitor unreachable через три минуты: также приостановите их, если отключаете пакет на время.
Резервные копии
Заголовок раздела «Резервные копии»Установленные пакеты попадают в резервные копии со своим YAML и восстанавливаются раньше мониторов, которые их используют.
Проверка пакета перед установкой
Заголовок раздела «Проверка пакета перед установкой»Бинарный файл сервера проверяет и тестирует пакеты оффлайн:
# Проверки схемы и согласованности, без сервера или базы данныхdocker run --rm -v "$PWD/packs:/packs:ro" ghcr.io/laupernoe/dumbmonit:latest \ pack lint /packs/shelly-plug
# Воспроизвести fixtures/ через реальное извлечение и сравнить с expected.promdocker run --rm -v "$PWD/packs:/packs:ro" ghcr.io/laupernoe/dumbmonit:latest \ pack test /packs/shelly-plugpack test --update перезаписывает expected.prom из фикстур (монтируйте
каталог с правом записи и запускайте с --user "$(id -u)", чтобы файл
остался вашим).
Далее: напишите свой первый пакет за примерно десять минут, либо прочитайте справочник формата.