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

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