Uptime-Kuma Бесплатный мониторинг сайтов и SSL сертификатов с уведомлениями в Telegram
Введение
Когда у вас появляется свой личный сайт, или у вас появилась нужда мониторить сайт компании или сайты клиентов, всегда важно узнавать о проблеме с доступностью сайта до, гневных клиентов и посетителей.
Неработоспособность сайта, это всегда убыток для владельцев.
Для этих целей используют мониторинг, его разновидностей достаточно много, можно мониторить с помощью сложного комбайна Zabbix и отслеживать работу сайта и сервера, выявляя проблемы до их наступления, можно воспользоваться готовыми сервисами, которые предоставляют услуги за деньги или "условно-бесплатно", с какими-либо ограничениями (обычно на количество хостов или на время проверки, способы оповещения и т.д.), а можно развернуть свой сервис проверки доступности сайта с уведомлениями в Telegram (90+ методов уведомлений), с мониторингом истечения SSL сертификатов и других плюшек.
Немного о мониторинге Uptime-Kuma
Uptime-Kuma - многоязычный, Open Source проект с мониторингом в реальном времени веб-сайтов (HTTPs), TCP портов, Docker контейнеров и получением информации о DNS записях, Steam Game Server, SQL Server, PostgreSQL, MQTT.
Умеет отправлять уведомления на электронную почту, Telegram, Discord и 90+ других способов, имеет поддержку proxy и возможность создать статус страницу с состоянием хостов, минимальный опрос вашего сервиса - 20 секунд.
Все манипуляции по настройке и добавлении хостов производятся из браузера.
Установка своего мониторинга Uptime-Kuma в Docker
Для установки Uptime-Kuma потребуется установленный Docker и Docker-Compose (если нет своего сервера, можно воспользоваться этим или создать у себя виртуальную машину)
Создаем директорию, где у нас будет храниться docker-compose.yml и данные Uptime-Kuma:
mkdir -p app/uptime-kuma/data
cd app/uptime-kuma/
Создаем и вносим в docker-compose.yml следующие данные:
nano docker-compose.yml
version: "3" services: uptime-kuma: image: louislam/uptime-kuma:1 container_name: uptime-kuma restart: unless-stopped ports: - 3001:3001 volumes: - ./data:/app/data - /var/run/docker.sock:/var/run/docker.sock security_opt: - no-new-privileges:trueivileges:true
Жмем Ctrl+x, Y, Enter для сохранение и запускаем наш docker-compose.yml:
docker compose up -d
Обзор и настройка Uptime-Kuma
Установка произведена, теперь наш сервис будет доступен по адресу:
http://IP_ВАШЕГО_СЕРВЕРА_ИЛИ_ДОМЕН:3001
Переходим в браузер, там нас встречает первоначальная регистрация, в которой нам нужно указать с вами логин, надежный пароль и выбрать язык по умолчанию
Далее нас встречает непосредственно сам интерфейс Uptime-Kuma
В левой колонке будет список наших сервисов которые нам нужно мониторить, колонка Статистика отображает информацию о доступности сервисов и подробную информацию с графиками, скоростью ответа, аптаймом и информацией о SSL сертификате
Давайте настроим наш мониторинг перед использованием, в правом верхнем углу жмем на аватар нашего пользователя и переходим в настройки
Во вкладке Общие выбираем свой Часовой пояс, если выбран не ваш, запрещаем Индексацию поисковым системам, она нам ни к чему, Основной URL можем нажать Авто-получение и жмем Сохранить
Вкладка Внешний вид настраиваем по вкусу, выставляем русский язык
Далее нас ждет пожалуй самая интересная вкладка с Уведомлениями, в которой мы можем указать с какой периодичностью до истечения срока SSL сертификата напоминать, по умолчанию стоит 7, 14, 21 дней до истечения сертификата, можно добавить любое свое значение, если вы обновляете руками SSL сертификаты, а не автоматически, очень удобная функция что бы не забывать.
Тут же создания уведомлений, доступно более 90 способов, я пользуюсь уведомлением в Telegram.
Настраиваем уведомления в Telegram от Uptime-Kuma
Регистрация бота для уведомлений в Telegram от Uptime-Kuma
Нам нужно создать с вами бота, по желанию группу или канал, куда будут приходить уведомления, сложного в этом ни чего нет.
Для создания бота нам потребуется бот @BotFather
Жмем старт Старт или пишем /start, появиться сообщение с доступными командами, нас интересует команда /newbot, после этого нам будет предложено выбрать имя боту и уникальный Username который обязательно должен содержать в себе слово bot
Если вы все сделали правильно, то будет выдана полная ссылка на наш бот и token для использования Telegram API, данный token нужно хранить в секрете и ни кому не передавать, на данном этапе создание бота завершено.
Как узнать chat ID
Самый простой способ, написать любое сообщение нашему созданному боту от себя, а затем переслать это сообщение из нашего бота боту @get_id_bot, в ответ он пришлет нам chat id в строке Forwarded from, копируем его и сохраняем для использования в дальнейшем.
Настраиваем Uptime-Kuma для уведомлений в Telegram
Для создания уведомлений в Telegram, переходим в настройки во вкладку Уведомления, нажимаем Создать уведомление, выбираем Тип уведомления Telegram, выбираем имя нашему способу оповещения, вводим Токен нашего бота который вы получили, вводим ID чата, нажимаем Проверка, если все сделано верно, от нашего бота придет тестовое сообщение, выбираем Использовать по умолчанию, если вы хотите что бы новые хосты по умолчанию присылали уведомления в Telegram и жмем Сохранить и еще раз Сохранить на странице Уведомления
Добавление своего сайта для мониторинга в Uptime-Kuma
Нажимаем в левом верхнем углу кнопку Новый монитор, я буду разбирать пример по мониторингу заголовка на сайте, выбираем HTTP(s) - Слово
Заполняем Имя для нашего хоста, в URL вставляем ссылку на наш сайт, во вкладку Слово вставляем заголовок с вашей страницы, или любой другой не измененный текст, я буду использовать заголовок статьи с своего сайта "Как установить Portainer Community Edition и начать пользоваться в две команды"
Выставляем время для Частоты опроса, минимальный предел у нее 20 секунд, тут выставляйте на свое усмотрение и значимости сервиса.
Далее у нас идут попытки, я выставляю 2 попытки, если за 2 попытки на сайте не будет обнаружен заголовок "Как установить Portainer Community Edition и начать пользоваться в две команды", то в Telegram придет уведомление об этом ставим чек бокс на Certificate Expiry Notification для уведомлении о истечении SSL сертификата и не забываем проверить в верхнем правом углу что у нас включ переключатель на нашем способе оповещения и жмем Сохранить
Тут же можно настроить мониторинг, если вам нужно проверять сайт с авторизацией, в графе Аутентификация.
Проверка нашего мониторинга
Для проверки я скрою статью со своего сайта и посмотрим как на это отреагирует Uptime-Kuma
Добавление Status Page в Uptime-Kuma
В Uptime-Kuma есть возможность вывода информации на status page, которой вы можете поделиться с клиентом или просматривать самому
Для ее создания в верхнем правом углу нажимаем на Страницы статуса, далее новая Страница статуса, даем ей имя и во второй графе Slug вписываем имя по которой она будет доступна
Добавляем описание, меняем логотип если нужно, есть поддержка пользовательских CSS стилей, жмем на область под Добавить монитор, выбираем наши сайты и сервисы которые мы добавили до этого в Uptime-Kuma и жмем Сохранить в левом нижнем углу
После сохранения у нас будет отдельная страница со статусами наших сервисов и сайтов, которая будет доступна по ссылке
http://ВАШ_IP_ИЛИ_ДОМЕН:3001/status/uptime (после /status/ поставить то, что вы вписали в колонке Slug выше)
Обновление Uptime-Kuma
Для обновления переходим в директорию docker-app/uptime-kuma/:
docker compose pull
И пересобираем uptime-kuma (все добавленные хосты и настройки останутся):
docker compose up -d --force-recreate
Вывод
Готово, в данной заметке мы с вами научились разворачивать свой собственный, бесплатный мониторинг сайтов, сервисов, SSL сертификатов - Uptime-Kuma.
Надеюсь вы не столкнулись с проблемами во время установки и настройки, вы всегда можете обратиться за помощью ко мне за небольшое вознаграждение.
Что бы не потерять инструкцию рекомендую подписаться на мой личный блог-канал в Telegram в котором я делюсь в формате заметок своими знаниями и интересным из мира IT или посетите мой сайт, спасибо за потраченное время на чтение и доброго времени суток!)