Uptime Kuma - self-hosted инструмент мониторинга
- Опубликовано
- //5 мин. чтения
Uptime Kuma - инструмент для мониторинга собственной инфраструктуры.
WARNING
Важно : При настройке этого инструмента мониторинга для веб-сайтов, хостов или служб крайне важно избегать размещения его на той же машине, что и отслеживаемые объекты. Если инструмент мониторинга или его хост-машина выйдут из строя, они не смогут инициировать оповещения о потенциальных проблемах с вашими сайтами, службами и т. д. Поэтому важно убедиться, что ваши службы или веб-сайты размещены на отдельной машине для надежного оповещения.
Запуск
Запустить Uptime Kuma очень просто, перейдя на официальный сайт вы увидите готовую команду docker run
docker run -d --restart=always -p **3001**:3001 -v **uptime-kuma**:/app/data --name **uptime-kuma** louislam/uptime-kuma:1
Но для удобства я буду использовать docker-compose
файл. Самый простой способ преобразовать команду docker run в docker-compose файл с помощью Dockge
На выходе получаем следующее:
version: "3.8"
services:
uptime-kuma:
restart: unless-stopped
ports:
- 3001:3001
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./data:/app/data
container_name: uptime-kuma
image: louislam/uptime-kuma:1
После первого запуска контейнера перейдите по адресу http://<YOUR_IP>:3001
вам будет предложено создать нового пользователя. После прохождения авторизации можно сразу приступить к добавлению хостов и контейнеров для мониторинга.
Настройка мониторинга
Uptime Kuma имеет возможности мониторинг времени безотказной работы для HTTP(s) / TCP / HTTP(s) Keyword / HTTP(s) Json Query / Ping / DNS Record / Push / Steam Game Server / Docker Containers
Мониторинг локального докер хоста
Для того чтобы добавить мониторинг контейнеров запущенных на текущем сервере, нужно перейти а Настройки > Хосты Docker и нажать на кнопку "Настроить Docker Host" задать желаемое имя и нажать "Сохранить".
Мониторинг удаленного докер хоста
Если вы хотите настроить мониторинг докер хостов запущенных на другом локальном сервере, то необходимо активировать TCP-порт 2375 для внешнего подключения к Docker. Для этого создаем файл daemon.json
в /etc/docker
:
sudo nano /etc/docker/daemon.json
со следующим содержимым:
{
"hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]
}
Добавить /etc/systemd/system/docker.service.d/override.conf
sudo mkdir /etc/systemd/system/docker.service.d
nano override.conf
вставить следующие строки:
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --config-file /etc/docker/daemon.json
Перезагрузите демон systemd:
systemctl daemon-reload
Перезапустите докер:
systemctl restart docker.service
Переходим а Настройки > Хосты Docker и нажать на кнопку "Настроить Docker Host" задаем желаемое имя, тип соединения меняем на TCP/HTTP в поле Демон Docker пишем IP адрес удаленного сервера и порт, например http://<YOUR_IP>:2375
. После этого нажимаем "Сохранить".
Теперь создаем новый монитор:
Тип монитора - Docker контейнер Имя - Имя монитора Название контейнера / ID - container_name:
или id
Хост Docker - здесь выбираем локальный или удаленный хост
Так же сразу можно указать группу для монитора и добавить тег. У меня например создана группа "docker-containers homelab" и для каждого контейнера установлен тег "docker".
Настройка мониторинга веб-сайта внутри локальной сети и снаружи
Чтобы увидеть, есть ли проблема с моим сайтом за пределами сети или это проблема с моим обратным прокси-сервером, я собираюсь создать две проверки: одну внутреннюю с локальным адресом моего сайта и другую внешнюю с URL-адресом, по которому к сайту можно получить доступ за пределами моей сети.
Для примера будет использоваться Grafana, она запущена на порту 3000, добавим мониторинг по TCP порту:
Для мониторинга Grafana извне, будем использовать мониторинг по HTTPS:
Ping мониторинг
Для мониторинга устройств внутри локальной сети, можно использовать простой мониторинг по Ping:
DNS мониторинг
Добавляем мониторинг DNS сервера AdguardHome, развернутого внутри локальной сети. Для его мониторинга будет использоваться резольвинг домена www.google.ru
:
Настройка уведомлений Telegram
Для получения уведомлений необходимо создать бота. Для этого открываем @BotFather пишем ему /newbot
, вам предложат придумать имя для бота, затем нужно будет придумать имя пользователя бота, оно должно быть уникальным и заканчиваться на bot
. После успешного создания бота, вы получите токен. После этого перейдите в созданного бота, запустите его командой /start
и отправьте любое сообщение боту. Затем перейдите в Настройки > Уведомления, введите название бота, полученный токен, ID чата вы должны получить автоматически.
Если по какой-то причине вы не получили автоматически ID чата, то перейдите по скопируйте ссылку https://api.telegram.org/bot<Токен вашего бота>/getUpdates
подставьте в нее токен вашего бота и вставьте ее в браузер.
Если в ответ получили такой ответ, напишите что нибудь боту и обновите страницу еще раз.
Скопируйте id из второй строчки.
Тест
Для теста я останавливаю контейнер Homarr, сразу видим уведомление об ошибке 502 и об остановке контейнера.
А так же в телеграмм практически сразу приходят соответствующие уведомления.
Страницы статуса
В Uptime Kuma вы можете создавать страницы статусов для общедоступных пользователей, чтобы проверить статус ваших услуг. Страница статуса похожа на обычную веб-страницу. Обновления в ней не будут такими отзывчивыми, как в панели управления, обновляться она будет раз в 5 минут.
Включение 2FA
Для включения двухфакторной аутентификации перейдите в Настройки > Безопасность > Настройка 2FA
Публикация в интернет
Если у вас не настроен обратный прокси-сервер, вы можете легко опубликовать Uptime Kuma в интернет при помощи Cloudflare Tunnel. Для этого вам необходимо получить токен (как это сделать можете посмотреть здесь) затем перейти в Настройки > Обратный прокси, вставить токен в соответствующее поле и нажать "Запустить cloudflared".
Заключение
Теперь вы можете отслеживать свои хосты, докер контейнеры или веб-сайты в реальном времени. В этой статье рассмотрены только основные возможности Uptime Kuma, остальные требуют более подробного изучения.