no-style

Установка Uptime Kuma в Docker контейнере

docker-compose + linuxserver + wireguard
Наверняка Вы слышали о разнообразных системах мониторинга. Подавляющее большинство таких систем очень тяжёлые и требуют дополнительного времени для их изучения. Сегодня мы рассмотрим очень простую и лёгкую систему мониторинга аптайма для сайтов и серверов под названием Uptime Kuma.


Необходимые требования

Чтобы всё получилось нам понадобится:

  • Сервер с Root доступом. Рекомендую вот этот
  • Доменное имя. Можно бесплатный домен или поддомен
  • Установленный Docker + Docker-Compose
  • Установленный и настроенный Nginx Proxy Manager
  • 10 - 20 минут времени






В двух словах про uptime-kuma

Open Source

Интуитивно понятная панелька. Не требовательная к ресурсам. Добавляем ресурс который хотим мониторить. Выбираем способ проверки - ping, гет запрос, прямое обращение по tcp/udp например по ssh. Устанавливаем таймер, например проверять каждые 60 секунд.

Результат проверок будет выводиться в настраиваемый график. У каждого добавленного ресурса свой собственный. На графике присутствует метка времени и индикация красный цвет - ресурс не работал, зелёный - всё ок. График можно настраивать по своему усмотрению.

По стандарту для доступа к данным надо авторизоваться, но также есть возможность на специальной странице открыть доступ для всех без авторизации. Например можно добавить туда статус сервера регистрации, форума, основной сайта и вывести эту информацию о работоспособности сервисов для всех.

Киллер фича - оповещение 28-мью разными способами когда ресурс упал. Причём когда при следующей проверке ресурс поднимается, то система об этом так же оповестит. Для себя я выбрал оповещение в телеграм. Из популярных там есть ещё по почте, в дискорд, в матрикс и другие.







Подготовка

Как и в предыдущих статьях про докер контейнеры мы будем придерживаться правила - хранить все контейнеры в одном месте. Создаём необходимые директории для uptime-kuma

sudo mkdir -p /app/misc/uptime-kuma/data

Сделаем нашего пользователя (не root !) владельцем этой директории

sudo chown -R $USER:$USER /app/misc/uptime-kuma






Конфигурация и запуск

Перейдём в директорию, которую мы создавали выше

cd /app/misc/uptime-kuma

Создадим фаил docker-compose.yml

nano docker-compose.yml

И заполняем его таким таким содержанием. Данный конфиг подойдёт сразу под amd64 и arm64 архитектуры.

Если Вы хотите поднять Uptime Kuma не светя порты наружу, прочитайте про проксирование приложения в NPM через хостнейм. После усвоения материала используйте этот фаил docker-dompose. В противном случае используйте первый вариант, изначально пост писался именно под него!

Стартуем контейнер с uptime-kuma

sudo docker-compose up -d






Посмотрим что у нас получилось

Если вы ничего не меняли в фаиле docker-compose.yml то порт будет 3001. Открываем в браузере

Uptume Kuma Setup

Придумываем, вводим и запоминаем данные для авторизации. Имя админа может быть любое. И нажимаем Create.

Попадаем в пока что пустую панельку

Uptume Kuma clean dashboard







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:

Uptume Kuma Telegram Alert

Для проверки можно нажать на кнопку TEST

Uptume Kuma Telegram Alert check

Работает!

Если включить пункт Default enabled только что настроенное оповещение в телеграм будет доступно для всех новых мониторов. Можно сделать например так чтобы о падении одних ресурсов отправлялся алерт в 1 чат в телеграме, а о падении других в другой чат, либо вообще в другой мессенджер.

Добавляя тестовый сайт я получил такие настройки:

Uptume Kuma Add New Site

Закончив с настройкой нажимаем Save

И сразу видим как наш ресурс добавился на главную панель. Зелёные овалы говорят об успешной проверке.

Uptume Kuma Added New Site

Добавляя всё новые мониторы(задания для проверки) дашборд приобретает довольно информативный вид

Uptume Kuma Dashboard Filled





Status Pages

Uptime Kuma содержит ещё одно настраиваемое представление работоспособности ресурсов. Оно называется Status Page. Эта та самая страница, на которой можно выборочно разместить и структурировать желаемые ресурсы для предоставления информации своим пользователям/клиентам/посетителям.

Например у Вас игровой проект. Вы хотите показать своим игрокам статус серверов, или например статус логин и гейм сервера. Это очень просто сделать на этой странице.

Сверху в меню нажимаем Status Pages > New Status Page

Придумываем и вписываем название и идентификатор url нашей status page

Uptume Kuma Status Add

Нас перекинет на страницу редактирования. Первым делом советую сразу тапнуть по dark mode чтобы снизить нагрузку на глаза.

В поле Description вписываем описание для группы элементов

В поле Add a monitor: выбираем необходимые для отображения мониторы. Появится поле со значением Services, его тоже можем поменять на своё усмотрение

Uptume Kuma Status Add 2

Можно добавлять несколько независимых групп мониторов для отображения.

Есть возможность сделать анонс, для этого нажимаем Create Incident. В анонсе можно написать например "Плановое обслуживание серверов с 08:00 по 08:30".

Закончив редактирование нажимаем Save

Теперь нашим пользователям доступна паблик страница статуса.

Uptume Kuma Status Filled

Интерфейс Uptime Kuma интуитивно понятен и хорошо продуман.

В конечном итоге получился очень классный бесплатный и развивающийся продукт. Мне панелька очень понравилась. Наверняка кто то тоже возьмёт её себе на вооружение.







Обновления в версии 1.18

В этой версии появилась возможность добавления монитора докер хоста и всех его контейнеров. Для того чтобы задействовать данную возможность необходимо добавить в docker-compose.yml строку с volume для docker.sock

/var/run/docker.sock:/var/run/docker.sock

В моём docker-compose.yml эта строка уже добавлена

После чего необходимо перезапустить контейнер



Идём в настройки в раздел Docker Hosts и нажимаем Setup Docker Host

uptime kuma setup docker host

В появившемся окне вписываем название нашего докер хоста например docker-local и нажимаем Проверка

uptime kuma setup docker host 2

Нажимаем Проверка, если всё сделано правильно появится сообщение с количеством контейнеров

uptime kuma setup docker host 3

Нажимаем Сохранить, чтобы добавить наш докер хост, после чего он появится в списке

uptime kuma setup docker host 4



Теперь добавим контейнер для мониторинга. Для примера я добавлю мониторинг контейнера wireguard. По большому счёту тут все интуитивно понятно, поэтому я ограничусь скриншотом

uptime kuma add docker monitor

Добавлю только что имя или id можно посмотреть с помощью команды

sudo docker ps


Вписав все необходимые данные добавляем монитор

uptime kuma add docker monitor 2





Дополнительная информация

Страница Uptime Kuma на Github

Демо страница

1 Комментарии

Отправить комментарий