Алерты об авариях
Когда рвётся волокно или обесточивается район, с порта разом уходят десятки абонентов. GetOLT замечает это на цикле опроса и присылает одно сообщение об аварии на порт — а не по сообщению на каждую упавшую ONU. Второе сообщение приходит, когда порт восстановился, и содержит длительность аварии.
Что приходит
🔴 АВАРИЯ · OLT «Восточная» (10.110.0.9) · Краснодар · порт 3Отвалились 47 из 52 ONU за один цикл опроса (90%).Вероятная причина: массовое падение ONU, причина не определена.Началось: 13.08 14:32 · Абоненты: 47 (список — в панели)и после восстановления:
🟢 ВОССТАНОВЛЕНО · OLT «Восточная» (10.110.0.9) · Краснодар · порт 3Онлайн 51 из 52.Длительность аварии: 1 ч 04 мин.Пока авария открыта, повторных сообщений нет — бота не приходится глушить.
Как настроить
Админка → Вебхуки → Добавить подписку.
| Поле | Что задаёт |
|---|---|
| Канал | Telegram (бот) или Вебхук (HTTP POST с JSON на ваш адрес) |
| Типы событий | outage — авария и восстановление приходят по одной подписке |
| Параметры канала | для Telegram — токен бота и chat_id (плюс резервный chat_id); для вебхука — URL и подпись |
Подписка получает аварии со всех OLT инсталляции. Кнопка «Отправить тест» шлёт в канал пробное сообщение — так можно проверить токен и доступность адреса, не дожидаясь настоящей аварии.
Что считается аварией
Абоненты штатно выключают оборудование, поэтому одиночные пропажи ONU аварией не являются. Событие создаётся, только когда одновременно выполняются два условия:
- Упало достаточно ONU в абсолютном выражении — не меньше порога и не меньше заданной доли порта. На порту из 44 абонентов это 8 ONU, на порту из 120 — 18. Порог растёт вместе с портом, чтобы вечерний спад на крупной ветке не выглядел аварией.
- Упала достаточная доля порта, причём требование зависит от того, как давно порт опрашивался. «Отвалились 45%» за десять минут и за три часа — разные события: за три часа столько абонентов могло выключить оборудование само.
| Интервал с прошлого опроса | Требуемая доля упавших |
|---|---|
| до 15 минут | 40% |
| до часа | 55% |
| до трёх часов | 70% |
| больше трёх часов | 75% |
Авария закрывается, когда на порту снова онлайн 90% абонентов.
Уведомление не отправляется, если сам опрос бокса прошёл плохо — упёрся в таймаут сессии или не снял больше трети портов. Это проблема связи с оборудованием, а не сети абонентов; такой инцидент попадёт в журнал, но не в мессенджер.
Журнал аварий
Страница «Аварии» показывает открытые и закрытые инциденты за выбранный период: какой порт, сколько ONU упало, когда началось, сколько длится. Строка раскрывается — внутри список упавших абонентов с номером ONU, MAC-адресом, договором (если настроено обогащение) и временем падения. Счётчик открытых аварий виден в верхнем меню на любой странице.
Настройки
Пороги задаются переменными окружения — в /opt/getolt/.env для bare-metal или в .env рядом с docker-compose.yml. Значения по умолчанию подобраны так, чтобы штатный отток абонентов не порождал ложных аварий.
| Переменная | По умолчанию | Смысл |
|---|---|---|
OUTAGE_ENABLED | true | Детект аварий целиком |
OUTAGE_MIN_ABSOLUTE | 8 | Минимум упавших ONU |
OUTAGE_CHURN_GUARD_RATIO | 0.15 | Доля порта, ниже которой падение считается штатным оттоком |
OUTAGE_MIN_RATIO | 0.6 | Базовая доля упавших (для интервала опроса около часа) |
OUTAGE_RESOLVE_RATIO | 0.9 | Доля онлайн, при которой авария считается закрытой |
OUTAGE_QUIET_HOURS | пусто | Тихое окно, например 00:00-07:00 |
OUTAGE_RETENTION_DAYS | 90 | Срок хранения истории статусов ONU |
Тихое окно заглушает только сообщения о новых авариях — ночью абоненты массово выключают оборудование. Сообщения о восстановлении в окне не подавляются: иначе авария, о которой сообщили вечером, закрылась бы молча. Сами инциденты в окне всё равно фиксируются и видны в журнале.
Насколько быстро приходит алерт
Задержка определяется не детектором, а частотой опроса: авария обнаруживается на ближайшем проходе по боксу. Чем чаще опрашивается парк, тем раньше приходит сообщение — режим опроса подбирается под размер вашей сети при внедрении.
Нашли ошибку или нужно что-то дополнить? Напишите нам или в Telegram @getolt_pub.
Разработка: gmasich.ru