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

Баннер для сайта

Показывайте на своём сайте баннер, когда сервисы недоступны («2 сервиса недоступны»), на основе опубликованной страницы статуса. Когда всё в порядке, баннер скрыт, если только вы не попросите показывать его («Все системы работают»).

Три способа добавить его, от самого простого до самого управляемого. Готовые для копирования файлы находятся в папке integrations/ репозитория.

В DumbMonit откройте настройки страницы статуса (Страницы статуса, Изменить): раздел Баннер состояния для вашего сайта в самом низу содержит готовые фрагменты HTML и PHP с кнопкой «Копировать», ссылку на эту страницу и кнопку скачивания плагина WordPress в виде .zip, готового к загрузке.

Вставьте это перед </body>, указав адрес вашего сервера и адрес страницы:

<script async
src="https://monit.example.com/api/public/status/my-page/banner.js"
data-position="top" data-show="issues" data-lang="en"></script>
АтрибутЗначенияПо умолчанию
data-positiontop, bottomtop
data-showissues (только при проблемах), alwaysissues
data-langen, fr, de, es, it, pt, pt-BR, ru, zh-Hansязык страницы, иначе en

Скрипт не имеет зависимостей, отрисовывается внутри Shadow DOM, поэтому ваши стили на него не влияют, учитывает светлую или тёмную тему посетителя и может быть закрыт (до закрытия вкладки браузера). Он читает публичный JSON страницы, который сервер разрешает загружать любому сайту (Access-Control-Allow-Origin: *, без cookie). Таким образом открыт только публичный документ страницы статуса; остальная часть API сохраняет свои правила.

Скопируйте integrations/wordpress/dumbmonit-status-banner в wp-content/plugins/, активируйте плагин, затем откройте Settings > DumbMonit Banner и укажите URL страницы статуса (https://monit.example.com/api/public/status/my-page), положение и режим показа. Плагин получает JSON на стороне сервера, кэширует его на одну минуту и экранирует всё, что выводит.

Сервер DumbMonit может находиться по частному (LAN) адресу: плагин запрашивает только тот точный URL, который вы сохранили (он проверяется на соответствие шаблону /api/public/status/<address>, перенаправления отключены). Если адрес недопустим, страница настроек показывает ошибку и сохраняет прежнее значение. Если страницу статуса получить не удаётся, в панели администратора WordPress (и при сохранении) отображается предупреждение вместо молчаливого сбоя.

Текст баннера переводится (text domain dumbmonit-status-banner, шаблон в languages/); он следует языку сайта WordPress. Публичный JSON статуса не содержит языка, поэтому выбрать его не может.

Для любого PHP-сайта, без фреймворка:

require __DIR__ . '/banner.php';
dumbmonit_banner('https://monit.example.com/api/public/status/my-page',
['position' => 'top', 'show' => 'issues', 'ttl' => 60]);

Помощник принимает только URL http и https, использует таймаут 3 секунды, не следует перенаправлениям, хранит файловый кэш во временном каталоге и ничего не выводит, если сервер недоступен (сбой записывается в журнал ошибок PHP). По умолчанию тексты на английском; передайте 'lang' => 'fr' или массив 'strings', чтобы изменить их. Частный (LAN) адрес работает. См. integrations/php/example.php.