Сегодня хочу рассказать об UptimeKuma. Это монитор доступности всякого, я использую его в качестве монитора для сайтов веб-студии. В этой заметке вы найдете супер детальную инструкцию для новичков, по установке Кумы на ваш виртуальный сервер.

Интерфейс UptimeKuma

Почему нравится:

✅ Open source. Размещается у себя на сервере. Бесплатно.

✅ Возможность настройки доступности страницы сайта по ключевому слову на ней. Невероятно полезная функция. Можно проверять, нормально ли прошел импорт откуда-либо-нибудь на сайт, контролировать работу кронов, … много других полезных кейсов можно придумать.

✅ Помимо ключевого слова, на странице проверяется и её статус(валидные коды ответа можно задавать), а так же время ответа сайта. Отваливаются фасетные индексы в битриксе? Узнаете об этом первыми ?

✅ Продуманный и красивый интерфейс самого приложения.

✅ В качестве уведомлений о событиях мониторинга можно использовать Телеграмм оповещения. (И задалбывать этими уведомлениями чатик с командой проекта ?)

✅ Можно сделать красивый дашборд из мониторов, и поделиться им с заказчиком.

✅ Быстрая установка на сервер и настройка самого мониторинга.

Установка UptimeKuma

Нам потребуется виртуальный сервер. Я использую спринтбокс, вот вам моя реферальная ссылка.

Можете использовать любой виртуальный сервер, на свое усмотрение.

Создаем новый бокс, выбираем в качестве ОС Ubuntu.

Выбираем SSD и самый дешевый тариф. На конец 2022 стоимость составляет 169 рубей в месяц. Оно будет работать. У меня мониторы настроены на ~10 сайтов. CPU вообще не загружен, ОЗУ загружен ~60-70%. Думаю, что от количества мониторов загрузка по ОЗУ не сильно вырастет. Правда на этапе установки, на этом тарифе, все не очень быстро.

Зато дешево ?

Выбираем SSD и самый дешевый тариф.

В открывшемся окне подтверждаем выбор тарифа, и ждем, когда бокс создастся. Занимает это около 2х минут.

Данные для доступа к серверу спринтбокс отправит вам на почту.

Ну-с приступим.

Открываем любой эмулятор консоли, в Windows я использую cmder.

Теперь давайте подключимся к вашему боксу. Вместо 0.0.0.0 нужно вставить адрес вашего бокса из почты.

ssh root@0.0.0.0

Так как вы подключаетесь впервые к данному хосту, терминал спросит вас

Are you sure you want to continue connecting (yes/no/[fingerprint])? 

Пишем “yes” и нажимаем Enter. После чего вводим пароль от пользователя root. Затем система заставит поменять пароль.

Обновим систему

apt-get update
sudo apt-get upgrade

Установим Nodejs. На нем работает Uptime Kuma.

curl -fsSL https://deb.nodesource.com/setup_19.x | sudo -E bash - &&\
sudo apt-get install -y nodejs

Устанавливаем/обновляем npm до последней версии

npm install npm -g

Устанавливаем саму Uptime Kuma

git clone https://github.com/louislam/uptime-kuma.git
cd uptime-kuma
npm run setup

Устанавливаем pm2 и запускаем процесс Uptime Kuma в фоне

npm install pm2 -g && pm2 install pm2-logrotate
pm2 start server/server.js --name uptime-kuma

Видим в табличке, что статус процесса “online”.

Процесс UptimeKuma запущен

Отлично.

Давайте запомним текущие запущенные процессы, и установим их на автозагрузку, на случай, если бокс будет перезагружен.

pm2 startup
pm2 save

Теперь идем в браузер и вводим IP адрес вашего бокса и 3001, порт на конце, что бы проверить, что все работает.

http://0.0.0.0:3001

Тада-а-а-ам ?

Привязка своего доменного имени

Давайте установим веб-серврер и настроить на нем Reverse Proxy, что бы открывать админку приложения через доменное имя.

Первым делом, нужно прописать A-записи для вашего домена, указав IP вашего виртуального сервера.

Вернемся в терминал.

Я буду использовать nginx, вы можете использовать любой сервер. Гайд по настройке вашего веб-сервера тут.

Установим nginx

sudo apt-get install nginx

Удалим дефолтный конфиг и конфиг для примера.

sudo unlink /etc/nginx/sites-available/default

Создадим свой конфиг. Переходим в нужную папку, там создаем файл и открываем его в редакторе nano

cd /etc/nginx/sites-available
touch uptimekuma.config
nano /etc/nginx/sites-available/uptimekuma.config

Что бы вставить текст, скопируйте содержимое и, в активном окне терминала, нужно нажать правую кнопку мышки. (Возможно несколько раз согласиться с предупреждениями)

Ctrl+S чтобы сохранить, Ctrl+X чтобы выйти из редактора.

И не забудьте поменять YOUR-DOMAIN.EXAMPLE на своё доменное имя.

#The Nginx server instance
server  {
    listen 80;
    # Remove '#' in the next line to enable IPv6
    # listen [::]:80;
    server_name    YOUR-DOMAIN.EXAMPLE;
    location / {
        proxy_pass         http://localhost:3001;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection "upgrade";
        proxy_set_header   Host $host;
    }
}

Если хотите использовать SSL-сертификат – тут можно найти конфиг под nginx.

Создадим ссылку в директории sites-enabled на созданный нами конфиг.

ln -s /etc/nginx/sites-available/uptimekuma.config /etc/nginx/sites-enabled/uptimekuma.config

Удалим файл конфигурации по умолчанию

rm /etc/nginx/sites-enabled/default

Теперь надо протестировать, все ли в порядке с конфигом

nginx -t 

Должно быть всё ок.

nginx syntax is ok

Ну и перезапустим nginx

sudo systemctl restart nginx

Проверим в браузере: теперь все должно заработать по нашему домену.

Стойте!

Не закрывайте консоль! Пока мы тут, предлагаю ещё кое-что сделать. А именно заглушить звук уведрмоений Телеграм ботов, которых вы создадите, для оповещения о событиях мониторинга. Очень сильно раздражает.

nano /root/uptime-kuma/server/notification-providers/telegram.js

Добавим в params disable_notification: true, что бы в итоге получилось

Заглушить звук уведомлений Телеграм в UptimeKuma

Ну, теперь точно всё.

Пришло время настроить сам мониторинг.

Удачи!