Перейти к основному содержимому

Uptime-kuma self-hosted monitoring

· 4 мин. чтения

Внешний сервис для мониторинга доступности хостов

uptime-kuma

Внешний мониторинг хостов

Для того чтобы проверять доступность своих сервисов снаружи (с интернета), необходим внешний инструмент мониторинга. Это один из сервисов, которые приходится поднимать снаружи, не на своей инфраструктуре, т.к. внутренний мониторинг в этом деле не особо подходит, даже когда внутри все сервисы выглядят живыми, снаружи может не быть доступа по разным причинам.

Пробовал использовать разные варианты но самым простым оказался uptime-kuma сервис, который предоставляет простой и удобный способ мониторинга хостов.

О проекте uptime-kuma

Ссылка на Github

Основные плюсы:

  • Большой выбор инструментов (способов) мониторинга HTTP, TCP, json, ping, DNS, Push, Steam сервисы, Docker контейнеры
  • Простой интуитивно понятный web интерфейс
  • Уведомления через Telegram, Discord, Gotify, Slack, Pushover, электронную почту (SMTP) и т.д.
  • Мультиязычный
  • Возможность создания отдельных страниц для предоставления общего доступа к статусам
  • Вывод результатов в графике
  • Информация о сертификатах SSL и сроках действия
  • Поддержка прокси-сервера
  • Поддержка 2FA (двухфакторной аутентификации)
  • Open-source

uptime-kuma

Установка

Планирую использовать облачный север от timeweb, можно взять сервер в РФ или заграницей

uptime-kuma-server

Подойдут минимальные характеристики, для удобства планирую использовать еще и доменное имя - monitoring.example.com

  • OS: Ubuntu 22.02
  • CPU: 1 x 2.8 ГГц
  • RAM: 1 Gb
  • SSD: 15 Gb

1. Подготовка

Обновление пакетов и установка docker

apt update && apt upgrade -y && apt install -y curl
curl -fsSL https://get.docker.com -o get-docker.sh && sudo sh get-docker.sh

Конфигурация DNS перенаправление monitoring.example.com - на полученный белый IP от timeweb

2. Настройка docker-compose.yaml

version: '3.8'
services:
caddy:
image: caddy:2.7.5
ports:
- 80:80
- 443:443
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
restart: always

uptime-kuma:
image: louislam/uptime-kuma:1.23.3-debian
volumes:
- ./uptime-kuma:/app/data
restart: always

Для автоматического получения SSL сертификата использую Caddy и создаю файл конфигурации Caddyfile

touch Caddyfile

Содержимое Caddyfile:

monitoring.example.com {
reverse_proxy uptime-kuma:3001
}

Запуск контейнера

docker compose up -d

Запуск и настройка

После запуска контейнера, можно подключиться к веб панели по домену monitoring.example.com.

Proxy сервис Caddy сам сходит получит сертификат и будет перенаправлять на HTTPS

При первом подключении, нужно создать пользователя и придумать пароль

В настройках:

  • Проверить временную зону
  • Переключить на темную тему
  • Сменить язык на удобный
  • Добавить настройки для Telegram уведомлений

Далее можно уже добавить первый монитор

uptime-kuma-server

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

Итоги

Мне очень понравился этот сервис, из того, что точно буду использовать:

  • GET запрос для проверки сайта
  • ping серверов
  • проверка ответов API сервисов
  • оповещения в telegram
  • мониторинг срока действия ssl сертификатов

Использование ресурсов (поднятый docker + 10 точек мониторинга занимают 140Mb RAM и минимальное CPU)

Из необычного, что впечатлило:

  • Есть реверс проверка статуса (когда наоборот, если монитор стал доступен, то как ошибку воспринимать)
  • Push мониторинг - когда конечный сервис например за Proxy, NAT и нет к нему прямого доступа, можно с этого сервера Push отправлять на север uptime-kuma, которые он будет получать и мониторить
  • Специфичные средства мониторинга (Steam игровой сервер, PostgreSQL, Redis, Kafka, MongoDB и т.д.)
  • Можно создать дополнительную страницу, где вывести необходимые мониторы и поделиться ссылкой для просмотра (без аутентификации)

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

Бонус

Для минуса который описал выше, есть небольшое бесплатное решение, это мониторинг Selectel

selectel мониторинг

Если войти с панель управления под своим аккаунтом, можно бесплатно поставить в мониторинг до 3 метрик

Здесь так же имеются различные типы метрик, гибкие настройки, но самое главное 8 раличных точек мониторинга selectel мониторинг

  • Франкфурт
  • Лондон
  • Амстердам
  • Москва
  • Новосибирск
  • Санкт-Петербург
  • Нью-Йорк
  • Сан-Франциско

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