Commit d7f80f

2025-04-03 18:35:29 Mayekkuzu: Initial Commit
/dev/null .. self-hosted/uptime-kuma.md
@@ 0,0 1,73 @@
+ # Uptime-Kuma
+
+ Uptime Kuma - небольшая и простая система мониторинга ресурсов, сервисов, игровых серверов. Поддерживает ответы кодов HTTP, ответы JSON, позволяет мониторить Docker-сервисы. Так же есть поддержка мониторинга игровых серверов в Steam. Не требует особых навыков и пердолинга мониторинга как в Zabbix. Если необходимо организовать публичную страницу для пользователей и отправку в Telegram уведомлений о сбое - неплохая штука.
+
+ ## Установка в Docker-Compose
+ > [!NOTE]
+ > Подразумевается что у нас уже установлен Docker и Docker-Compose, если нет - [Читаем это](https://y2z.ru/Linux/Docker)
+
+ Создадим произвольную папку, пусть это будет uptime-kuma, далее создаем docker-compose.yaml с содержимым:
+
+ ```yaml
+ version: "3.8"
+
+ services:
+ uptime-kuma:
+ image: louislam/uptime-kuma:latest
+ container_name: uptime-kuma
+ restart: always
+ ports:
+ - "3001:3001" # Маппим порт 3001 на порт хоста 3001. Если нужно чтобы браузер отзывался на 80 порт, то меняем на "80:3001"
+ volumes:
+ - ./data:/app/data # Папка в котором будут храниться логи и конфигурация. Создастся автоматически
+ environment:
+ - TZ=UTC # Обозначаем таймзону
+ - UMASK=0022 # Права на файлы
+ networks:
+ - kuma_network # Обозначаем имя сети (может быть любым)
+ healthcheck:
+ test: ["CMD", "curl", "-f", "http://localhost:3001"]
+ interval: 30s
+ retries: 3
+ start_period: 10s
+ timeout: 5s
+ logging:
+ driver: "json-file"
+ options:
+ max-size: "10m"
+ max-file: "3"
+
+ networks:
+ kuma_network:
+ driver: bridge
+ ```
+
+ Запускаем через `docker-compose up -d`. Если у вас стоит docker-compose v2, то `docker compose up -d`
+ ## Мониторим сервис по JSON
+ К примеру, есть радиостанция на базе Icecast. Icecast предоставляет возможность выводить json статус вещания, к примеру:
+ ```json
+ {
+ "station": {
+ "id": 1,
+ "name": "SCUF FM",
+ "shortcode": "scuf_fm",
+ "description": "Я просто хочу отдохнуть от трудовых будней",
+ "frontend": "icecast"
+ }
+ "is_online": true,
+ }
+ ```
+ Будем мониторить наличие "true" в параметре "is_online". Если слово будет отличаться или изчезнет, то мониторинг вернет ошибку. Таким образом создаем новый монитор, где:
+ - Monitor Type: HTTP(s) - Json Query
+ - Friendly Name: Любое
+ - URL: https://your-service.com/api/station
+ - Json query: is_online
+ - Expected Value: true
+ - Heartbeat Interval: 60 (Или 120. В секундах)
+ - Request Timeout: 48 (Достаточно, можно меньше или больше, в секундах)
+ В разделе HTTP Options:
+ - Method: GET
+ - Body Encoding: JSON
+ В разделе Advanced:
+ - Accepted Status Codes: 200-299
+ Опционально - Description и Monitor Groups на свой вкус, если необходимо обьединить сервисы общей сущностью
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9