Uptime Kuma: Селфхост-мониторинг для ваших сервисов

Содержание

Если у вас крутится зоопарк собственных сервисов, рано или поздно встает вопрос: как узнать, что всё работает, до того, как пользователи (или вы сами) обнаружат ошибку 502?

Uptime Kuma - это легковесный, опенсорсный аналог UptimeRobot, который можно развернуть на своем железе за пару минут. У него красивый интерфейс, поддержка десятков видов уведомлений и богатый функционал для создания публичных статус-страниц.

Для каких проектов подходит Uptime Kuma?

Этот инструмент универсален и отлично вписывается в самые разные сценарии:

  • Домашние лаборатории (Homelab): Идеально для серверов на базе Raspberry Pi или виртуалок в Proxmox. Можно мониторить локальные DNS-фильтры, прокси-менеджеры, умный дом и базы данных, API.
  • Сайты и пет-проекты: Контроль доступности ваших блогов, лендингов и веб-приложений извне
  • Проверка открытых TCP-портов. Удобно, если вы держите, например, сервер по Counter-Strike и хотите знать, когда он "прилег".
  • Контроль SSL-сертификатов: Kuma умеет заранее предупреждать, что сертификат сайта скоро протухнет.

Как установить?

Самый простой, надежный и чистый способ развернуть Uptime Kuma - использовать Docker.

Создайте директорию для проекта, а внутри - файл docker-compose.yml со следующим содержимым:

version: '3.3' # В новый версиях Docker не обязательно указывать!
services:
 uptime-kuma:
   image: louislam/uptime-kuma:1
   container_name: uptime-kuma
   volumes:
     # Обязательно пробрасываем volume, чтобы статистика не пропала при рестарте контейнера.
     # Хранить данные лучше на надежном носителе (например, eMMC или HDD).
     - ./uptime-kuma-data:/app/data
     # Раскомментируйте строку ниже, если планируете мониторить другие Docker-контейнеры
     # - /var/run/docker.sock:/var/run/docker.sock
   ports:
     - "3001:3001"
   restart: unless-stopped

После этого запускаем контейнер:

docker-compose up -d

Готово! Теперь интерфейс доступен по адресу: http://<IP_вашего_сервера>:3001.

Базовая настройка: с чего начать?

При первом входе система попросит создать учетную запись администратора. Дальше начинается самое интересное:

  1. Добавление мониторов:
       Нажмите "+ Новый монитор". Выберите тип (HTTP/HTTPS для сайтов, Ping для хостов, TCP Port для баз данных или игр). Укажите адрес и интервал проверок.
       Лайфхак: Если у вас бывают микроразрывы сети и выскакивают ошибки вроде ECONNRESET, увеличьте параметр "Количество повторных попыток" (Retries) до 2-3. Это избавит от ложных срабатываний.
  2. Настройка уведомлений (Алертов):
       Зайдите в настройки монитора -> "Настроить уведомления". Uptime Kuma поддерживает всё: от Email и Webhooks до Telegram и Discord. Проще всего создать Telegram-бота через BotFather, вписать его токен в Kuma и получать моментальные пуши о падении сервисов прямо в мессенджер.

  3. Публичные страницы статуса (Status Pages):
       В верхнем меню есть кнопка "Страницы статуса". Там можно собрать красивый дашборд с зелеными полосками аптайма, добавить свой логотип, разделить сервисы по группам (например, "Внешние сайты" и "Внутренняя инфраструктура") и выставить это всё в открытый доступ, чтобы ваши пользователи всегда видели актуальное состояние проектов.

Работа с инцидентами (Ручное информирование)

Автоматика - это хорошо, но иногда сервер уходит в оффлайн по вашей инициативе. Например, вы планируете провести обслуживание Raspberry Pi 5 (Сервера), обновить ядро или восстановить систему из бэкапа на eMMC диске. Чтобы на странице статуса не появилась пугающая красная полоса "Недоступен", в Uptime Kuma есть механизм Инцидентов.

На странице статуса нажмите зеленую кнопку "Создать инцидент". Перед вами появится форма:

  • Название инцидента: Краткая суть (например, "Плановое техническое обслуживание" или "Проблемы с хостинг-провайдером").
  • Содержание инцидента: Подробное описание ситуации. Поле поддерживает синтаксис Markdown, так что текст можно красиво отформатировать, добавить списки или ссылки.
  • Стиль: Выпадающий список позволяет выбрать визуальное оформление плашки, которая появится на дашборде.
    • ИНФО - нейтральное уведомление (полезно для плановых работ).
    • ВНИМАНИЕ - желтый алерт (сервис работает нестабильно).
    • ОШИБКА - красный алерт (всё упало, мы уже чиним).
    • ОСНОВНОЙ / СВЕТЛЫЙ / ТЕМНЫЙ - системные цвета для кастомизации под дизайн вашей страницы.

Как только работы завершатся, инцидент можно "Закрыть", и он уйдет в историю, а пользователи увидят, что проблема решена.

Глоссарий

  • Аптайм (Uptime): Время непрерывной работы вычислительной системы или сервиса с момента последней загрузки. Выражается в процентах (например, 99.9% - отличный показатель).
  • Даунрайм (Downtime): Время простоя, когда сервис недоступен для пользователей по техническим причинам.
  • Дашборд (Dashboard): Информационная панель (доска), на которую выводятся ключевые показатели и графики в удобном для чтения виде. В Uptime Kuma это "Страницы статуса".
  • Монитор (Monitor): Отдельная задача проверки в Uptime Kuma, которая регулярно опрашивает конкретный сервис (сайт, IP-адрес, порт) на предмет его "жизни".
  • Инцидент (Incident): Событие, приводящее к прерыванию работы сервиса или снижению качества его работы. На статус-страницах используется для информирования пользователей о текущих проблемах или плановых работах.
  • Пинг (Ping): Базовая сетевая утилита для проверки целостности и качества соединений. Отправляет эхо-запрос к узлу сети и фиксирует время ответа.
  • Self-hosted (Селфхост): Практика самостоятельного размещения и обслуживания программного обеспечения на собственных серверах, а не использования облачных решений от сторонних компаний.

Uptime Kuma работает по принципу "настроил и забыл", потребляет минимум ресурсов.

Бонус: Мониторинг с Grafana и Prometheus

Встроенные публичные "Страницы статуса" в Uptime Kuma отлично подходят для пользователей вашего сайта. Но если вы лично хотите видеть максимально подробную картину с графиками задержек до миллисекунды, историю SSL-сертификатов и глубокую аналитику - данные нужно выводить в Grafana.

Uptime Kuma спроектирована по всем канонам современного мониторинга и умеет отдавать свои метрики в формате базы данных Prometheus (по адресу http://<ваш-ip>:3001/metrics).

Как это работает на практике:

  • Вы разворачиваете контейнер с базой данных Prometheus и указываете ему забирать метрики из Uptime Kuma (добавив блок в prometheus.yml).

    Пример:

    global:
      scrape_interval: 15s
    
    scrape_configs:
      - job_name: 'node-exporter'
        static_configs:
          - targets: ['node-exporter:9100']
    
      - job_name: 'cadvisor'
        static_configs:
          - targets: ['cadvisor:8080']
    
      - job_name: 'uptime-kuma'
        basic_auth:
          username: 'Ваш логин'
          password: 'Ваш пароль'
        static_configs:
          - targets: ['uptime-kuma:3001']
  • Разворачиваете контейнер с Grafana и подключаете к ней Prometheus как источник данных (Data Source).
  • Импортируете готовый шаблон дашборда (например, введя ID 18278 или 25062 в разделе Import).

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

Источник

Открыть оригинальный источник (в новой вкладке)

Сохранить или поделиться

Поделиться

Можно выделить и скопировать вручную.

← Все полезные советы