Цифрофой сад
metalnikovg.ru

Uptime Kuma - self-hosted инструмент мониторинга

Banner.png
Опубликовано
//
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

На выходе получаем следующее:

docker-compose.yaml
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

со следующим содержимым:

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, остальные требуют более подробного изучения.

← Предыдущая заметкаМониторинг Proxmox с помощью Grafana
Следующая заметка →N.eko - виртуальный браузер в Docker