Необходимые требования
Чтобы всё получилось нам понадобится:
- Сервер с Root доступом. Рекомендую вот этот
- Доменное имя. Можно бесплатный домен или поддомен
- Установленный Docker + Docker-Compose
- Установленный и настроенный Nginx Proxy Manager
- 10 - 20 минут времени
В двух словах про uptime-kuma
Open Source
Интуитивно понятная панелька. Не требовательная к ресурсам. Добавляем ресурс который хотим мониторить. Выбираем способ проверки - ping, гет запрос, прямое обращение по tcp/udp например по ssh. Устанавливаем таймер, например проверять каждые 60 секунд.
Результат проверок будет выводиться в настраиваемый график. У каждого добавленного ресурса свой собственный. На графике присутствует метка времени и индикация красный цвет - ресурс не работал, зелёный - всё ок. График можно настраивать по своему усмотрению.
По стандарту для доступа к данным надо авторизоваться, но также есть возможность на специальной странице открыть доступ для всех без авторизации. Например можно добавить туда статус сервера регистрации, форума, основной сайта и вывести эту информацию о работоспособности сервисов для всех.
Киллер фича - оповещение 28-мью разными способами когда ресурс упал. Причём когда при следующей проверке ресурс поднимается, то система об этом так же оповестит. Для себя я выбрал оповещение в телеграм. Из популярных там есть ещё по почте, в дискорд, в матрикс и другие.
Подготовка
Как и в предыдущих статьях про докер контейнеры мы будем придерживаться правила - хранить все контейнеры в одном месте. Создаём необходимые директории для uptime-kuma
Сделаем нашего пользователя (не root !) владельцем этой директории
Конфигурация и запуск
Перейдём в директорию, которую мы создавали выше
Создадим фаил docker-compose.yml
И заполняем его таким таким содержанием. Данный конфиг подойдёт сразу под amd64 и arm64 архитектуры.
Если Вы хотите поднять Uptime Kuma не светя порты наружу, прочитайте про проксирование приложения в NPM через хостнейм. После усвоения материала используйте этот фаил docker-dompose. В противном случае используйте первый вариант, изначально пост писался именно под него!
Стартуем контейнер с uptime-kuma
Посмотрим что у нас получилось
Если вы ничего не меняли в фаиле docker-compose.yml то порт будет 3001. Открываем в браузере
Придумываем, вводим и запоминаем данные для авторизации. Имя админа может быть любое. И нажимаем Create.
Попадаем в пока что пустую панельку
Uptime-kuma на своём домене/поддомене
На этом шаге я крайне рекомендую прилепить Uptime Kuma на домен или поддомен с SSL сертификатом. Самый простой вариант как это сделать был разобран в предыдущем посте Nginx Proxy Manager в Docker контейнере.
Можно воспользоваться бесплатным фриномовским доменом и бесплатным SSL сертификатом от Lets Encrypt.
Добавляем ресурс для мониторинга
Добавим сайт для мониторинга, для этого на главной странице сверху нажимаем Add New Monitor. Оттуда попадаем на специальную страницу. И начинаем заполнять:
В качестве Monitor type выбираем HTTP(S)
Friendly Name - какое название будет отображаться для этого ресурса на главной и других страницах
URL - урл сайта
Heartbeat Interval - периодичность проверки в секундах. Если указать например 600, то будет проверять каждые 10 минут.
Domain Name Expiry Notification - проверка срока истечения доменного имени
Ignore TLS/SSL - игнорировать ошибки TLS/SSL
Upside Down Mode - если отметить этот чекбокс то включается режим наоборот, если сайт доступен и отвечает, то в качестве результата будет выведено что сайт упал.
Max. Redirects - максимальное количество редиректов
Accepted Status Codes - какие HTTP коды ответа считать успешными, для простой проверки сайта на работоспособность будет достаточно выбрать 200-299, во всех остальных случаях установите нужный вам код ответа.
Tags теги ресурса. Можно объединять несколько ресурсов в 1 тег. Так же раскрашивать теги по своему усмотрению, таким образом облегчая процесс визуальной аналитики работоспособности важных узлов.
Notification - тут можно включить оповещения, например если при проверке будет зафиксировано что ресурс в данный момент не работает то в зависимости от выбора можно получать уведомление в разные мессенджеры или по email. Для себя я выбрал оповещение в телеграм. Сделать такое оповещение очень просто, расскажу на примере Telegram:
- Создаём своего бота в Telegram
- Получаем Bot Token и Chat ID
- Заносим эту информацию в пункт Notification в Uptime kuma
Для проверки можно нажать на кнопку TEST
Работает!
Если включить пункт Default enabled только что настроенное оповещение в телеграм будет доступно для всех новых мониторов. Можно сделать например так чтобы о падении одних ресурсов отправлялся алерт в 1 чат в телеграме, а о падении других в другой чат, либо вообще в другой мессенджер.
Добавляя тестовый сайт я получил такие настройки:
Закончив с настройкой нажимаем Save
И сразу видим как наш ресурс добавился на главную панель. Зелёные овалы говорят об успешной проверке.
Добавляя всё новые мониторы(задания для проверки) дашборд приобретает довольно информативный вид
Status Pages
Uptime Kuma содержит ещё одно настраиваемое представление работоспособности ресурсов. Оно называется Status Page. Эта та самая страница, на которой можно выборочно разместить и структурировать желаемые ресурсы для предоставления информации своим пользователям/клиентам/посетителям.
Например у Вас игровой проект. Вы хотите показать своим игрокам статус серверов, или например статус логин и гейм сервера. Это очень просто сделать на этой странице.
Сверху в меню нажимаем Status Pages > New Status Page
Придумываем и вписываем название и идентификатор url нашей status page
Нас перекинет на страницу редактирования. Первым делом советую сразу тапнуть по dark mode чтобы снизить нагрузку на глаза.
В поле Description вписываем описание для группы элементов
В поле Add a monitor: выбираем необходимые для отображения мониторы. Появится поле со значением Services, его тоже можем поменять на своё усмотрение
Можно добавлять несколько независимых групп мониторов для отображения.
Есть возможность сделать анонс, для этого нажимаем Create Incident. В анонсе можно написать например "Плановое обслуживание серверов с 08:00 по 08:30".
Закончив редактирование нажимаем Save
Теперь нашим пользователям доступна паблик страница статуса.
Интерфейс Uptime Kuma интуитивно понятен и хорошо продуман.
В конечном итоге получился очень классный бесплатный и развивающийся продукт. Мне панелька очень понравилась. Наверняка кто то тоже возьмёт её себе на вооружение.
Обновления в версии 1.18
В этой версии появилась возможность добавления монитора докер хоста и всех его контейнеров. Для того чтобы задействовать данную возможность необходимо добавить в docker-compose.yml строку с volume для docker.sock
В моём docker-compose.yml эта строка уже добавлена
После чего необходимо перезапустить контейнер
Идём в настройки в раздел Docker Hosts и нажимаем Setup Docker Host
В появившемся окне вписываем название нашего докер хоста например docker-local и нажимаем Проверка
Нажимаем Проверка, если всё сделано правильно появится сообщение с количеством контейнеров
Нажимаем Сохранить, чтобы добавить наш докер хост, после чего он появится в списке
Теперь добавим контейнер для мониторинга. Для примера я добавлю мониторинг контейнера wireguard. По большому счёту тут все интуитивно понятно, поэтому я ограничусь скриншотом
Добавлю только что имя или id можно посмотреть с помощью команды
Вписав все необходимые данные добавляем монитор
Дополнительная информация
Страница Uptime Kuma на Github
Благодарю! Очень крутая штука
ОтветитьУдалитьОтправить комментарий