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 на свой вкус, если необходимо обьединить сервисы общей сущностью |