Наблюдение за самим DumbMonit
Кто следит за наблюдателем? DumbMonit отвечает двумя частями:
- исходящий heartbeat для того, чего он не видит изнутри: хост выключен, контейнер остановлен, движок завис;
- встроенные правила о собственном здоровье для того, что он видит: том данных заполняется, база метрик перезапускается в цикле, опросы застревают, записи не удаются, база аномально растёт.
Оба находятся в Settings → System → DumbMonit itself, где также показано текущее состояние движка.
Исходящий heartbeat
Заголовок раздела «Исходящий heartbeat»DumbMonit обращается к вашему URL через регулярные интервалы (по умолчанию 60 секунд), только пока движок здоров:
- планировщик работает (он завершил цикл за последние две минуты);
- база данных SQLite отвечает;
- VictoriaMetrics отвечает.
Когда что-то из этого не выполняется, ничего не отправляется. Сервис «выключателя мёртвого человека» (dead man’s switch) ждёт этих обращений и оповещает вас, когда они прекращаются, будь причиной весь хост, контейнер или один компонент.
Настройка
Заголовок раздела «Настройка»- Создайте проверку в выбранном вами сервисе и скопируйте её ping URL:
- Healthchecks.io (или собственный Healthchecks): проверка с периодом,
равным интервалу, и временем отсрочки чуть больше
(
https://hc-ping.com/<uuid>); - Uptime Kuma: монитор типа Push
(
https://kuma.example.com/api/push/<token>?status=up&msg=OK&ping=); - Better Stack: heartbeat (
https://uptime.betterstack.com/api/v1/heartbeat/<token>); - любой сервис, принимающий простой
GETи оповещающий, когда обращения прекращаются (Cronitor, Dead Man’s Snitch…).
- Healthchecks.io (или собственный Healthchecks): проверка с периодом,
равным интервалу, и временем отсрочки чуть больше
(
- В Settings → System → DumbMonit itself вставьте URL, выберите интервал (от 30 до 3600 секунд), включите Send a heartbeat и сохраните.
- Нажмите Test: одно обращение уходит сразу, и результат показывается. Сервис должен отметить проверку как работающую.
Обращение — это GET с тайм-аутом 10 секунд. Оно подчиняется той же защите, что
и каналы уведомлений: оно никогда не отправляется на собственный веб-интерфейс
DumbMonit или на его VictoriaMetrics.
Сигнал о сбое
Заголовок раздела «Сигнал о сбое»По умолчанию больной движок просто перестаёт обращаться, и сервис оповещает после истечения времени отсрочки. Включите Signal failures, чтобы вместо этого обращаться к URL сбоя, о котором сервис сообщает сразу:
| Сервис | URL сбоя |
|---|---|
| Healthchecks.io, Better Stack | /fail добавляется к пути: https://hc-ping.com/<uuid>/fail |
| Uptime Kuma | status=up заменяется на status=down в запросе |
Оставьте выключенным для любого другого сервиса: неизвестный URL с /fail в
конце, скорее всего, ответит 404, что в любом случае выглядит так, будто ничего
не отправляется.
URL — это секрет
Заголовок раздела «URL — это секрет»Ping URL обычно содержит собственный токен: тот, кто его знает, может заставить вашу проверку выглядеть здоровой. DumbMonit хранит его зашифрованным секретом экземпляра, никогда не возвращает через API (показывается только его хост) и не включает в журналы и сообщения об ошибках. Чтобы изменить его, введите новый; чтобы оставить, оставьте поле пустым. Remove the URL забывает его и выключает heartbeat.
Эта настройка не входит в зашифрованный пакет конфигурации: задайте её снова после восстановления на новом экземпляре.
Встроенные правила
Заголовок раздела «Встроенные правила»Каждую минуту DumbMonit записывает в VictoriaMetrics несколько измерений о себе, и встроенные правила группы DumbMonit itself читают их. Они ведут себя как все остальные правила: те же каналы, те же отключения, те же пороги для каждого правила в Alerts → Rules.
| Правило | Срабатывает, когда | По умолчанию |
|---|---|---|
| DumbMonit data volume almost full | Менее 10 % свободного места на томе, где находится /data | 15 мин, warning |
| DumbMonit metrics database restarting in a loop | Встроенный VictoriaMetrics перезапускался 3 раза или более за 30 минут | 1 мин, critical |
| DumbMonit scheduler stalled | Нет цикла планирования более двух минут | 5 мин, critical |
| DumbMonit polls running late | Мониторы остаются просроченными после каждого цикла в течение 15 минут | 15 мин, warning |
| DumbMonit metric writes failing | Пакеты, отклонённые VictoriaMetrics, или отброшенные сэмплы за последние 15 минут | 5 мин, warning |
| DumbMonit database growing fast | dumbmonit.db более чем удвоилась за сутки и превышает 100 МБ | 1 ч, warning |
| DumbMonit backup did not run | Нет успешной локальной резервной копии два дня (подробности) | 1 ч, warning |
Для вычисления этих правил нужен VictoriaMetrics. Когда сам VictoriaMetrics недоступен насовсем или недоступен весь хост, ни одно правило не может сработать: это задача heartbeat.
Измерения
Заголовок раздела «Измерения»| Метрика | Значение |
|---|---|
dumbmonit_instance_data_free_bytes | Свободное место на томе, где находится /data, для непривилегированного пользователя. |
dumbmonit_instance_data_size_bytes | Размер этого тома. |
dumbmonit_instance_database_bytes | Размер dumbmonit.db и её журнала упреждающей записи. |
dumbmonit_instance_scheduler_lag_seconds | Секунды с момента, когда планировщик последний раз завершил цикл (обычно менее 2). |
dumbmonit_instance_scheduler_backlog | Мониторы, которым после последнего цикла всё ещё требуется опрос. |
dumbmonit_instance_sample_writes_failed_total | Пакеты, которые VictoriaMetrics отклонил или на которые не ответил, с момента запуска сервера. |
dumbmonit_instance_samples_dropped_total | Сэмплы, отброшенные до попадания в буфер записи, с момента запуска сервера. |
dumbmonit_instance_vm_restarts_total | Перезапуски встроенного VictoriaMetrics с момента запуска сервера (только встроенный). |
У них нет метки target: вызываемые ими оповещения не привязаны к монитору. Для
собственного Prometheus GET /metrics отдаёт такие же показатели, см.
Скрейпинг DumbMonit.
| Метод | Маршрут | |
|---|---|---|
GET | /api/self-monitoring | Состояние движка, том данных, размер базы, настройка heartbeat и последний heartbeat. |
PUT | /api/self-monitoring/heartbeat | { "enabled", "interval_seconds", "send_fail", "url" }. Если url опущен, он сохраняется, "" стирает его. |
POST | /api/self-monitoring/heartbeat/test | Одно обращение сейчас, к { "url" } или к сохранённому URL. |
Две записи доступны администраторам (или токену с областью write).