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

Уведомления DumbMonit

Это руководство объясняет, как получать оповещения DumbMonit в выбранном вами сервисе. Навыков программирования не требуется: в каждом разделе сказано, где найти адрес или токен для копирования и что вводить в форму.



Канал — это пункт назначения: канал Discord, номер телефона, почтовый ящик. Вы создаёте сколько угодно каналов, а ваши правила оповещений выбирают, какие из них уведомлять.

К каждому каналу применяются три принципа:

  1. Оповещения группируются. Одно сообщение на монитор и на цикл, даже если одновременно заполняются пять дисков. Без этого вы отключили бы уведомления через неделю.
  2. Неисправный канал никогда не блокирует другой. Сбой записывается в столбец «последняя ошибка» канала, а доставка в остальные продолжается.
  3. Сервис, который не отвечает, бросается через 15 секунд. Уведомление, пришедшее с опозданием на минуту, уже бесполезно, а цикл мониторинга не должен ждать недоступный сервер.

  1. Откройте Settings → Notifications & reports → Add channel (/settings/notifications).
  2. Дайте ему осмысленное имя (“Discord — family”, “SMS — on-call”). Именно это имя вы позже выберете в правилах оповещений.
  3. Выберите тип канала, затем заполните описанные ниже поля.
  4. Сохраните, затем нажмите Send test.

Тестовое сообщение проходит ровно тем же путём, что и настоящее оповещение: тот же запрос, тот же токен, то же форматирование. Если оно пришло, канал работает. Если нет, сообщение об ошибке называет настройку, которую нужно исправить.

Токен больше никогда не показывается. После сохранения он шифруется в базе данных, а интерфейс пишет только «configured». Чтобы изменить канал, не вводя токен заново, просто оставьте поле пустым.


У каждого канала есть две группы полей.

НастройкиСекреты
Содержимоеадрес сервера, имя канала, тематокены, пароли, URL вебхуков
Хранениеоткрытым текстомзашифровано
Читается обратно интерфейсомданикогда

Интерфейс отказывается сохранять чувствительное поле среди настроек и сообщает вам об этом. Это не формальность: настройки возвращаются API как есть, поэтому хранящийся там токен публиковался бы при каждом открытии страницы.

Таблицы в разделе Поддерживаемые каналы указывают для каждого канала, что куда помещается.


По умолчанию DumbMonit отвергает любой сервер, сертификат которого не удаётся проверить. Для самостоятельно размещённого сервиса с самоподписанным сертификатом или сертификатом частного удостоверяющего центра у каналов Matrix, Mattermost, Rocket.Chat, Zulip, ntfy, Gotify, Bark, Apprise, Home Assistant, Signal и пользовательского вебхука есть настройка Accept an unverifiable certificate (insecure_tls, булево значение, по умолчанию выключено).

Её включение сохраняет шифрование соединения, но прекращает проверку подлинности сервера, поэтому используйте её только для сервера, который вы контролируете, в сети, которой вы доверяете. Когда причиной сбоя является сертификат, показываемая для канала ошибка называет его (например “invalid peer certificate: UnknownIssuer”).


Канал webhook — это запасной выход DumbMonit. Вы описываете весь HTTP-запрос — метод, адрес, заголовки, тип содержимого и тело —, что позволяет подключить почти любой сервис, включая внутренний API, о котором DumbMonit никогда не узнает.

Без какой-либо особой настройки он уже отправляет структурированную JSON-нагрузку, которую может использовать скрипт:

{
"source": "dumbmonit",
"target": "nas",
"rule": "Disk full",
"severity": "warning",
"status": "firing",
"title": "nas — Disk full",
"text": "⚠️ Warning · Disk full — /data — 95 % (threshold > 90 %)",
"value": 95.0,
"threshold": 90.0,
"unit": "%",
"fingerprint": "nas/disk-full",
"count": 1,
"at": "2026-09-01T14:12:05+00:00",
"link": ""
}
НастройкаОбязательнаПо умолчаниюНазначение
urlда (здесь или как секрет)—Адрес для вызова. Может содержать переменные.
methodнетPOSTPOST, PUT или GET.
content_typeнетjsonjson, form или text. Также определяет, как экранируются переменные.
body_templateнет—Шаблон тела. При отсутствии отправляется описанная выше нагрузка.
base_urlнет—Публичный адрес вашего DumbMonit, чтобы {{link}} давал кликабельную ссылку.
usernameнет—Имя пользователя для HTTP-аутентификации “Basic”. Требует секрета password.
СекретНазначение
urlИспользуйте вместо настройки url, если адрес уже содержит токен.
tokenОтправляется как заголовок Authorization: Bearer …, если только ваш шаблон не использует {{token}}.
passwordПароль для аутентификации “Basic”.
headersДополнительные заголовки в виде JSON-объекта {"X-Api-Key": "value"}. Хранятся зашифрованными, как токен, и никогда не показываются снова, поэтому ключи API и заголовки Authorization относятся сюда.

headers — это секрет. У каналов, сохранённых версией 0.1.0-alpha.6 или более ранней, которые хранили их в настройках, они переносятся в зашифрованные секреты при первом запуске, и API их больше не возвращает. Как и все секреты, они сохраняются, когда вы редактируете канал, не вводя их повторно; отправка secrets заменяет весь набор целиком.

DumbMonit следует за перенаправлением только на тот же хост (или с http на https на этом же хосте): заголовки и токен канала никогда не уходят никуда, кроме введённого вами адреса.

Переменная записывается между двойными фигурными скобками: {{title}}. Пробелы вокруг имени допускаются ({{ title }}). Одинарные фигурные скобки в теле JSON остаются буквальными, так что JSON можно писать как обычно.

ПеременнаяЧто содержитПример
{{title}}Полный заголовок сообщенияnas — Disk full
{{message}}Тело обычным текстом, одна строка на оповещение⚠️ Warning · Disk full — /data — 95 % (threshold > 90 %)
{{message_markdown}}То же тело в Markdown**nas — Disk full**\n• ⚠️ …
{{rule}}Имя правила оповещенияDisk full
{{target}}Имя отслеживаемого монитораnas
{{target_id}}Числовой идентификатор монитора42
{{severity}}Техническая важностьinfo, warning или critical
{{severity_fr}}Важность в виде читаемого словаinformation, avertissement, critique
{{status}}Технический статусfiring или resolved
{{status_fr}}Статус в виде читаемого словаen cours или résolu
{{value}}Измеренное значение с единицей95 %
{{value_raw}}Голое значение, пригодное как число JSON95
{{threshold}}Пересечённый порог с единицей90 %
{{threshold_raw}}Голый порог, пригодный как число JSON90
{{unit}}Единица значения%
{{operator}}Сравнение с порогом>
{{count}}Число оповещений, сгруппированных в этом сообщении3
{{fingerprint}}Стабильный идентификатор оповещенияnas/disk-full
{{timestamp}}Метка времени ISO 86012026-09-01T14:12:05+00:00
{{timestamp_unix}}Метка времени в секундах с 1970 года1788358325
{{date}}Читаемая метка времени в UTC2026-09-01 14:12 UTC
{{priority}}Приоритет от 1 (низкий) до 5 (высокий)4
{{color}}Акцентный цвет без решёткиD98A00
{{color_hex}}Акцентный цвет с решёткой#D98A00
{{emoji}}Пиктограмма статуса🔴, ⚠️, ℹ️ или ✅
{{link}}Ссылка на монитор в DumbMonithttps://dumbmonit.home/targets/42
{{source}}Всегда dumbmonitdumbmonit
{{token}}Секрет token канала(ваш токен)

Два полезных замечания:

  • Некоторые переменные могут быть пустыми. У оповещения о доступности (“host unreachable”) нет ни значения, ни порога: {{value}} и {{value_raw}} тогда превращаются в пустую строку, а не в null или NaN. Если вы размещаете их как число JSON, учтите этот случай — или используйте "{{value}}" в кавычках.
  • {{link}} остаётся пустым, пока вы не заполните base_url. Неверная ссылка отняла бы больше времени, чем оповещение без неё.

Вам никогда не нужно ничего экранировать самостоятельно. В зависимости от выбранного content_type DumbMonit автоматически защищает подставляемые значения: кавычки и переводы строк экранируются в JSON, процентное кодирование в форме, без преобразований в обычном тексте. Правило с именем "System" disk full не сломает ваш шаблон JSON.

Самописное приложение предоставляет POST /incidents и ожидает токен в пользовательском заголовке.

Настройки

{
"url": "https://api.internal.example.org/incidents",
"method": "POST",
"content_type": "json",
"base_url": "https://dumbmonit.home",
"body_template": "{\"title\": \"{{title}}\", \"device\": \"{{target}}\", \"severity\": \"{{severity}}\", \"state\": \"{{status}}\", \"value\": {{value_raw}}, \"threshold\": {{threshold_raw}}, \"detail\": \"{{message}}\", \"link\": \"{{link}}\", \"seen_at\": \"{{timestamp}}\"}"
}

Секреты

{
"token": "your-application-token",
"headers": "{\"X-Application\": \"dumbmonit\"}"
}

Токен отправляется автоматически как заголовок Authorization: Bearer …. Вот что получает приложение:

{
"title": "nas — Disk full",
"device": "nas",
"severity": "warning",
"state": "firing",
"value": 95,
"threshold": 90,
"detail": "⚠️ Warning · Disk full — /data — 95 % (threshold > 90 %)",
"link": "https://dumbmonit.home/targets/42",
"seen_at": "2026-09-01T14:12:05+00:00"
}

Многие SMS-шлюзы и старые API ожидают application/x-www-form-urlencoded, а не JSON, с токеном в теле.

Настройки

{
"url": "https://gateway.example.org/api/send",
"method": "POST",
"content_type": "form",
"body_template": "key={{token}}&recipient=0612345678&subject={{title}}&text={{emoji}} {{message}}&priority={{priority}}"
}

Секреты

{ "token": "gateway-key" }

Поскольку шаблон уже использует {{token}}, DumbMonit не добавляет заголовок Authorization: некоторые сервисы отклоняют запрос с двумя видами аутентификации. Значения кодируются автоматически: пробелы становятся +, а символы с диакритикой — своими эквивалентами в процентном кодировании.

Пример 3 — SMS обычным текстом через оператора

Заголовок раздела «Пример 3 — SMS обычным текстом через оператора»

Некоторым сервисам, например SMS API оператора или самодельной автоматизации, нужна одна строка текста.

Настройки

{
"url": "https://automation.home/alert",
"method": "POST",
"content_type": "text",
"body_template": "{{emoji}} {{severity}} on {{target}}: {{rule}} ({{value}}, threshold {{operator}} {{threshold}}) — {{date}}"
}

Отправляемое сообщение, без какого-либо экранирования:

⚠️ warning on nas: Disk full (95 %, threshold > 90 %) — 01/09/2026 14:12 UTC

Когда сервис принимает только параметры URL, поместите переменные в url и выберите метод GET. У запроса GET нет тела: body_template тогда отклоняется, чтобы никто не думал, что он что-то делает.

Настройки

{
"url": "https://sms.example.org/send?user=noe&text={{title}} — {{value}}",
"method": "GET"
}

Секреты

{ "token": "api-key" }

Кодируются только подставленные значения; остальная часть адреса копируется как есть. Фактически отправленный запрос выглядит так:

GET https://sms.example.org/send?user=noe&text=nas%20%E2%80%94%20Disk%20full%20%E2%80%94%2095%20%25

Неисправный шаблон отклоняется при сохранении, пока вы смотрите на форму, а не в ночь, когда случится инцидент.

Что вы пишетеЧто происходит
{{severite}}Отклоняется: неизвестная переменная “severite”, затем список допустимых имён. Правильное имя — severity.
{"t": "{{title"}Отклоняется: “unclosed braces”. Не хватает }}.
{{}} или {{ }}Отклоняется: переменная без имени ничего не значит.
{"a": {"b": 1}}Принимается. Одинарные фигурные скобки буквальны: пишите JSON как обычно.
{{token}} без секрета tokenОтклоняется: шаблон запрашивает токен, которого у канала нет.
method: GET с body_templateОтклоняется, с альтернативой: поместите переменные в url.
method: DELETEОтклоняется: принимаются только POST, PUT и GET.

В Discord: Channel settings → Integrations → Webhooks → New webhook, затем Copy webhook URL. Этот URL содержит токен: он идёт в секреты.

  • Секреты — webhook_url

На https://api.slack.com/apps создайте приложение, включите Incoming Webhooks, затем Add New Webhook to Workspace и выберите канал. Скопируйте URL вида https://hooks.slack.com/services/….

  • Секреты — webhook_url

Вам нужны две вещи: токен бота (секрет) и ID чата (chat_id), куда он должен писать. Первый получается за минуту; второй зависит от того, где вы хотите получать оповещения.

  1. В Telegram найдите @BotFather и нажмите Start.

  2. Отправьте /newbot, затем ответьте на вопросы (имя, затем имя пользователя, которое должно заканчиваться на bot).

  3. BotFather завершает сообщением вроде этого:

    Done! Congratulations on your new bot. You will find it at t.me/my_homelab_bot.
    Use this token to access the HTTP API:
    63xxxxxx71:AAFoxxxxn0hwA-2TVSxxxNf4c

    Строка 63xxxxxx71:AAFoxxxxn0hwA-2TVSxxxNf4c — это токен бота. Не делитесь им: он даёт полный контроль над ботом.

В примерах ниже замените <TOKEN> этим токеном. Обратите внимание на префикс bot, приклеенный перед ним в URL: https://api.telegram.org/bot<TOKEN>/….

Личный чат (бот пишет напрямую вам)

  1. Откройте своего бота (t.me/my_homelab_bot) и нажмите Start либо отправьте ему любое сообщение. Без этого он никогда не сможет вам написать.

  2. Откройте в браузере: https://api.telegram.org/bot<TOKEN>/getUpdates

  3. Вы получите документ JSON; найдите "chat":

    {"ok":true,"result":[{"update_id":83xxxxx35,
    "message":{"message_id":2643,"from":{…},
    "chat":{"id":21xxxxx38,"first_name":"…","type":"private"},
    "date":1703062972,"text":"/start"}}]}

    chat_id — это значение chat.id: здесь 21xxxxx38 (положительное число).

    Если result пуст ("result":[]), отправьте боту ещё одно сообщение и перезагрузите страницу.

Канал

  1. Добавьте бота администратором канала (Manage channel → Administrators → Add).

  2. Опубликуйте сообщение в канале.

  3. Откройте https://api.telegram.org/bot<TOKEN>/getUpdates: ответ содержит блок channel_post с "chat":{"id":-1001xxxxxx062,"type":"channel"}.

    chat_id — это отрицательное число, включая -100: -1001xxxxxx062.

Группа

Проще всего это сделать через настольное приложение:

  1. Добавьте бота в группу.
  2. Отправьте сообщение в группу, щёлкните по нему правой кнопкой → Copy message link. Вы получите https://t.me/c/194xxxx987/13 (или https://t.me/c/194xxxx987/11/13, если в группе есть темы).
  3. Число сразу после /c/ — внутренний идентификатор группы: 194xxxx987. chat_id для ввода — это число с префиксом -100: -100194xxxx987.

Без настольного приложения подойдёт и описанный выше метод getUpdates: message.chat.id — сразу нужное число (уже отрицательное). Если бот не видит сообщений группы, попросите у BotFather /setprivacy → Disable, затем удалите бота из группы и добавьте снова.

Тема группы (группы в режиме «Topics»)

chat_id — это идентификатор группы. Дополнительно заполните Group topic (message_thread_id) средним числом скопированной ссылки: в https://t.me/c/194xxxx987/11/13 тема — 11. Без этой настройки сообщение попадает в ветку General.

Откройте в браузере:

https://api.telegram.org/bot<TOKEN>/sendMessage?chat_id=<CHAT_ID>&text=test123

(добавьте &message_thread_id=11 для темы). Если test123 пришло, токен и chat_id верны: введите их в DumbMonit и нажмите Test.

  • Настройки — chat_id (обязательно), message_thread_id (тема, необязательно), api_base (по умолчанию https://api.telegram.org, меняйте только для работы через релей)
  • Секреты — bot_token

“Telegram cannot find this chat” — для личного чата бот никогда не получал от вас сообщений: отправьте ему /start. Для группы или канала, вероятно, отсутствует префикс -100 либо бот не был в них добавлен.

“thread not found” — message_thread_id не соответствует ни одной теме группы, либо группа не в режиме «Topics».

Внимание: метод изменился. Старые «коннекторы Office 365» были выведены из эксплуатации в мае 2026 года; URL вида outlook.office.com/webhook/… больше не работает.

Актуальная процедура:

  1. В канале Teams выберите ⋯ → Workflows.
  2. Выберите шаблон “Post to a channel when a webhook request is received”.
  3. Подтвердите шаги, затем скопируйте HTTPS POST URL, показанный в конце.
  • Секреты — webhook_url

DumbMonit отправляет завёрнутую Adaptive Card — единственный формат, который эти потоки отображают правильно. Если вы получаете ошибку, упоминающую Power Automate, URL, вероятно, взят из старого коннектора.

  1. Создайте на своём homeserver учётную запись, выделенную для DumbMonit, и пригласите её в комнату. Учётная запись, не являющаяся участником, не может писать.
  2. Получите её токен доступа. В Element: Settings → Help & About → Advanced → Access token.
  3. Получите внутренний идентификатор комнаты — не её отображаемое имя. В Element: Room settings → Advanced → Internal room ID. Он начинается с ! (например !aBcDeF:matrix.org).
  • Настройки — server_url (например https://matrix.org), room_id
  • Секреты — token

Integrations → Incoming Webhooks → Add. Выберите канал по умолчанию, затем скопируйте URL.

  • Настройки — channel (необязательно, чтобы писать не в канал по умолчанию), username (необязательно, по умолчанию DumbMonit)
  • Секреты — webhook_url

Administration → Integrations → New integration → Incoming webhook. Выберите комнату, включите интеграцию, затем скопируйте Webhook URL.

  • Настройки — channel (необязательно), alias (необязательно, по умолчанию DumbMonit)
  • Секреты — webhook_url

В пространстве Google Chat: название пространства → Apps & integrations → Webhooks → Add webhook. Скопируйте URL, который уже содержит ключ и токен.

  • Секреты — webhook_url
  1. Создайте бота: Personal settings → Bots → Add a new bot, тип “Generic”. Запишите его адрес электронной почты и ключ API.
  2. Подпишите бота на целевой stream, иначе отправка будет отклонена.
  • Настройки — server_url (например https://your-org.zulipchat.com), email (адрес бота), stream (имя stream), topic (необязательно, по умолчанию DumbMonit)
  • Секреты — api_key

Самый простой канал из всех: выберите трудноугадываемое имя темы, затем подпишитесь на неё из приложения ntfy.

  • Настройки — topic, server_url (необязательно, по умолчанию https://ntfy.sh)
  • Секреты — token (только если ваш сервер требует аутентификации)

На публичном экземпляре любой, кто знает имя темы, может её читать. Выберите длинное случайное имя или разверните собственный сервер.

В интерфейсе Gotify: Apps → Create Application. Скопируйте показанный токен.

  • Настройки — server_url (например https://gotify.home)
  • Секреты — token
  1. На https://pushover.net ваш User Key показан прямо на главной странице.
  2. Затем создайте приложение: Create an Application/API Token. Вы получите токен приложения.
  • Настройки — priority (необязательно, от -2 до 2), sound (необязательно), retry и expire (только для priority: 2)
  • Секреты — token (токен приложения), user_key (ключ пользователя)

Без настройки priority DumbMonit выбирает по важности: -1 для предупреждения уровня advisory или для разрешения, 0 для warning, 1 для критического оповещения. Поэтому advisory не заставляет телефон звонить.

Приоритет 2 («emergency») повторяет уведомление, пока оно не будет подтверждено. DumbMonit тогда автоматически добавляет retry и expire, без которых Pushover отклонил бы сообщение.

На https://www.pushbullet.com/#settings/account нажмите Create Access Token.

  • Настройки — device_iden (необязательно; без него уведомляются все ваши устройства)
  • Секреты — token

Откройте приложение Bark на iPhone: оно показывает URL, содержащий ваш ключ устройства — длинную строку символов после доменного имени.

  • Настройки — server_url (необязательно, по умолчанию https://api.day.app), group (необязательно), level (необязательно), sound (необязательно)
  • Секреты — token (ключ устройства)

Без настройки level DumbMonit выбирает: passive для advisory, active для warning, timeSensitive для критического оповещения. Уровень critical, пробивающий «Не беспокоить», никогда не выбирается автоматически — задайте его явно, если он вам нужен.

Нативные уведомления на ваших телефонах и компьютерах прямо от вашего собственного DumbMonit, без установки приложений и сторонних учётных записей: браузер (установленный как приложение или нет) получает оповещения даже при закрытых вкладках.

  1. На каждом телефоне или компьютере откройте DumbMonit и перейдите в Settings → Push notifications → Enable on this device, затем Send a test. На iPhone и iPad сначала добавьте DumbMonit на экран «Домой». Пошаговое руководство находится в Push-уведомления (PWA).
  2. Создайте здесь канал Web Push. У него нет секрета: его получатели — устройства, подписанные на шаге 1.
  • Настройки — users (необязательно; одна учётная запись на строку, пусто: каждое подписанное устройство каждой учётной записи), urgency (по умолчанию high, normal или low), ttl (секунды, в течение которых push-сервис хранит сообщение для выключенного устройства, по умолчанию 86400), contact (необязательный адрес mailto: или https:, передаваемый push-сервисам; пусто: DUMBMONIT_PUBLIC_URL, если он HTTPS, иначе страница проекта)
  • Секреты — нет. Пара ключей VAPID сервера создаётся при первом запуске и хранится в зашифрованном виде; закрытый ключ никогда не покидает сервер.

Заголовок уведомления — это важность и монитор (Critical · nas01), тело — краткое резюме; нажатие открывает страницу Alerts. DumbMonit нужен исходящий HTTPS к push-сервисам (fcm.googleapis.com, *.notify.windows.com, updates.push.services.mozilla.com, *.push.apple.com); сообщения шифруются сквозным образом, эти сервисы не могут их прочитать. Подписка, о которой push-сервис сообщает как об исчезнувшей (HTTP 404 или 410, например после удаления приложения), удаляется автоматически.

Apprise — это шлюз: с единственной конфигурацией он даёт доступ к десяткам сервисов, которые DumbMonit не реализует сам. Разверните контейнер caronc/apprise, затем выберите один из двух режимов.

Рекомендуемый режим — конфигурация хранится в Apprise. Создайте конфигурацию в интерфейсе Apprise, запишите её ключ и больше ничего здесь не указывайте.

  • Настройки — server_url, config_key

Прямой режим — адреса назначения предоставляет DumbMonit. URL Apprise часто содержат пароль (mailto://user:password@…): поэтому они идут в секреты.

  • Настройки — server_url
  • Секреты — urls (один или несколько URL Apprise через запятую)

Необязательные общие настройки: tag (чтобы направлять только часть адресов назначения конфигурации) и format (по умолчанию text, либо markdown).

Если тест отвечает “Apprise has no configuration under this config_key”, ключ ничему не соответствует. DumbMonit сообщает об этом вместо того, чтобы делать вид, что сообщение отправлено.

  1. В Home Assistant: ваш профиль → Security → Long-lived access tokens → Create token. Скопируйте его, он больше не будет показан.
  2. Выберите вызываемый сервис. По умолчанию DumbMonit создаёт постоянное уведомление на панели.
  • Настройки — server_url (например http://homeassistant.local:8123), service (необязательно, по умолчанию persistent_notification.create), target (необязательно), data (необязательно, объект, объединяемый с вызовом)
  • Секреты — token

Несколько полезных сервисов:

serviceЭффект
persistent_notification.createБаннер в интерфейсе Home Assistant
notify.notifyВсе настроенные цели уведомлений
notify.mobile_app_<device>Мобильное приложение одного конкретного устройства
light.turn_onВключает свет — используйте data для сущности и цвета

Настройка data объединяется последней: поэтому она может переопределить заголовок или сообщение, подготовленные DumbMonit.

Единственный канал, не зависящий ни от какого стороннего сервиса.

  • Настройки — host, from, to (список адресов), security (по умолчанию starttls, либо tls, либо none), port (выводится из security: 587, 465 или 25), username (необязательно)
  • Секреты — password

С Gmail пароль учётной записи не работает: создайте пароль приложения в настройках безопасности вашей учётной записи Google.

Работает через экземпляр signal-cli-rest-api, который вы размещаете сами и в котором сначала регистрируете свой номер.

  • Настройки — server_url (например http://signal.home:8080), number (зарегистрированный номер отправителя), recipients (список номеров или идентификаторов групп), username (необязательно)
  • Секреты — password (необязательно, если ваш экземпляр защищён)

Все номера записываются в международном формате, +33612345678.

В консоли Twilio на главной странице показаны ваш Account SID и ваш Auth Token. Затем купите номер, способный отправлять SMS.

  • Настройки — account_sid, from (ваш номер Twilio) или messaging_service_sid, to (список получателей)
  • Секреты — token (Auth Token)

Тело SMS обрезается до 300 символов: сверх этого Twilio делит его на сегменты, оплачиваемые отдельно.

На пробной учётной записи Twilio отправляет только на проверенные вами номера.

В PagerDuty: Services → ваш сервис → Integrations → Add integration и выберите Events API v2. Скопируйте Integration Key.

  • Настройки — region (eu, если ваша учётная запись размещена в Европе), source (необязательно, по умолчанию dumbmonit)
  • Секреты — token (Integration Key)

Оповещение открывает инцидент; его разрешение закрывает его автоматически. Сопоставление выполняется по fingerprint оповещения с префиксом dumbmonit-, поэтому напоминание никогда не открывает второй инцидент.

Ключ другого типа (“Events API v1”, “REST API”) получает краткий отказ. Проверьте, что интеграция действительно типа Events API v2.

Teams → ваша команда → Integrations → Add integration → API. Скопируйте ключ API.

  • Настройки — region (eu для европейской учётной записи), responders (список названий команд, необязательно), tags (список, необязательно)
  • Секреты — api_key

Как и в PagerDuty, разрешение закрывает оповещение, определяемое по его alias.

Atlassian назначила окончание поддержки Opsgenie на 5 апреля 2027 года. Этот канал остаётся для существующих установок; для новой предпочтите PagerDuty или пользовательский канал, указывающий на Jira Service Management.

См. Пользовательский канал выше.


Тест сразу завершается ошибкой с “missing setting …”. Обязательное поле пусто. Сообщение называет точную настройку.

Тест завершается ошибкой с “no answer within 15 s”. Целевой сервер недоступен из DumbMonit. Если это сервис в вашей локальной сети, проверьте, что контейнер DumbMonit может до него дотянуться — это часто проблема сети Docker, а не конфигурации канала.

Тест завершается ошибкой сертификата. Ваш сервер использует самоподписанный сертификат или сертификат частного удостоверяющего центра. См. Самоподписанные сертификаты.

Тест проходит успешно, но я ничего не получаю. Сервис принял сообщение и отправил его в другое место: не тот канал, не та тема ntfy, не то устройство Pushbullet. Проверьте настройку назначения.

Сообщение об ошибке содержит ***. Так задумано: ваш токен был удалён из сообщения до его записи. Ни один секрет никогда не попадает в журналы, в столбец «последняя ошибка» или в ответ API.

Где посмотреть последнюю ошибку канала? В списке каналов: каждая строка показывает дату последней успешной доставки и, если есть, ошибку последнего сбоя.