Мониторинг сайтов с помощью Uptime Kuma ("self-hosted UpTimeRobot")

Мониторинг и алертинг серверов — важные инструменты для обеспечения бесперебойной работы веб-сайтов и сервисов. Проблемы могут возникну��ь в любой момент: перегрузка сервера, сбои хостинга или ошибки в коде. Хорошая система мониторинга не только вовремя обнаруживает сбои, но и предупреждает о потенциальных проблемах — например, если сайт начал грузиться медленнее или часть запросов завершается с ошибками. Чем раньше вы выявите проблему, тем быстрее сможете её устранить, минимизировав неудобства для пользователей. Существует множество решений для мониторинга, например UpTimeRobot.

Мы же сегодня с вами рассмотрим его open-source альтернативу - Uptime Kuma. Его автором является Louis Lam, а сам проект расположен в GitHub. Это простой в настройке, но мощный инструмент, который позволяет в реальном времени отслеживать работу сайтов, API и серверов, мгновенно оповещая о любых сбоях. В отличие от платных аналогов, это решение, которое можно развернуть на собственном сервере, сохраняя полный контроль над данными. Uptime Kuma поддерживает различные типы проверок (HTTP, TCP, DNS, ping) и интеграции с Telegram, Slack, Discord и другими мессенджерами.

Для работы Uptime Kuma подойдет любой сервер — можно использовать недорогой VPS или даже домашний компьютер в локальной сети. Однако важно учесть один нюанс: если развернуть мониторинг на той же машине, где работают основные сервисы, то при её отключении вы останетесь без уведомлений. Поэтому идеальный вариант — выделить для Kuma отдельный сервер или VPS в отдельной сети. Так вы всегда будете в курсе проблем, даже если основной хостинг перестанет работать.

В данной статье мы рассмотрим развертывание Kuma в Docker, по этому далее в статье у нас будет инструкция для Ubuntu 24.02 LTS, с предустановленным docker. У меня это виртуальная машина в Hyper-V. Приступим!

Разворачиваем Kuma

Подключаемся к своему серверу через PuTTy:

Все готово к настройке
Все готово к настройке

Создаем папку для нашего сервиса:

sudo mkdir -p /opt/docker/uptime-kuma
sudo mkdir -p /opt/docker/uptime-kuma

Создаем docker-compose.yml файл с одним сервисом — Uptime Kuma. Используем порт 3001 и Bind Mount для сохранения данных:

sudo nano /opt/docker/uptime-kuma/docker-compose.yml
sudo nano /opt/docker/uptime-kuma/docker-compose.yml

Создаем каталог для данных (который прописали на предыдущем шаге в volumes):

sudo mkdir -p /opt/docker/uptime-kuma/kuma/data
sudo mkdir -p /opt/docker/uptime-kuma/kuma/data

Переходим в каталог сервиса:

cd /opt/docker/uptime-kuma
cd /opt/docker/uptime-kuma

Запускаем сервис. Docker скачает необходимые образы и запустит контейнер:

Открываем веб-интерфейс в браузере (в моем случае — 192.168.0.110:3001). Uptime Kuma предложит выполнить первоначальную настройку: создать пользователя и выбрать язык:

http://192.168.0.110:3001
http://192.168.0.110:3001

После настройки мы попадаем на главную страницу Uptime Kuma (её функционал мы рассмотрим позже):

Главная страница Uptime Kuma
Главная страница Uptime Kuma

Настраиваем доменное имя и HTTPS

Работать с IP-адресом не всегда удобно, поэтому лучше настроить доступ через доменное имя. Вариантов реализации много — можно использовать локальную DNS, hosts-файл или зарегистрировать настоящий домен. В моём случае я просто добавлю запись kuma.demo в hosts-файл на своём компьютере, но вы можете выбрать любой другой подходящий способ:

http://kuma.demo:3001/
http://kuma.demo:3001/

Для защиты данных нам нужно организовать безопасное HTTPS-соединение. Для этого мы поставим перед Uptime Kuma веб-сервер Caddy — он автоматически получает SSL-сертификаты и шифрует трафик. Я выбрал Caddy вместо nginx за его простоту и удобство конфигурации. В обновлённом docker-compose.yml обратите внимание на важные изменения:

  • Убрана публикация портов Uptime Kuma (cервисы внутри одного compose-файла могут общаться между собой по именам контейнеров без проброса портов)
  • Весь внешний трафик теперь идёт через Caddy
sudo nano /opt/docker/uptime-kuma/docker-compose.yml
sudo nano /opt/docker/uptime-kuma/docker-compose.yml

Создаем каталоги для Caddy:

- sudo mkdir -p /opt/docker/uptime-kuma/caddy/etc/caddy
- sudo mkdir -p /opt/docker/uptime-kuma/caddy/data
- sudo mkdir -p /opt/docker/uptime-kuma/caddy/config

Мониторинг сайтов с помощью Uptime Kuma ("self-hosted UpTimeRobot")

Создаем файл Caddyfile с конфигурацией:

sudo nano /opt/docker/uptime-kuma/caddy/etc/caddy/Caddyfile
sudo nano /opt/docker/uptime-kuma/caddy/etc/caddy/Caddyfile

Перезапускаем сервисы. При редактировании docker-compose.yml, он сам поймет что обновилось и изменилось и перезапустит/запустит только новые контейнеры:

Теперь у нас есть полностью настроенный экземпляр Uptime Kuma, доступный по доменному имени с поддержкой HTTPS. В следующей статье разберем, как добавить сайты для мониторинга и настроить уведомления

https://kuma.demo/
https://kuma.demo/

Итог

Мы развернули и настроили собственный экземпляр Uptime Kuma. Это потребовало некоторых усилий, но в результате мы получили мощный инструмент мониторинга, к тому же бесплатный (если не считать стоимость VPS и домена).

Если вам не хочется заниматься самостоятельной настройкой, можно воспользоваться Telegram-ботом @KumaCloudBot, который развернет экземпляр за 20 секунд без необходимости настройки домена и VPS.

1
2 комментария