Go to file
mirivlad bce4c2e2d0 fix: Update agent install, disk metrics, fallback blocks, and dynamic thresholds
BREAKING: install.sh now downloads agent from server instead of embedding it

Changes:
- AgentController: downloadAgent() method for serving agent.py with token auth
- AgentController: rewrite generateInstallScript() to curl agent from server
- agent.py: copy production version from server (with temp, disk, network metrics)
- agent.py: fix get_disk_metrics() to use priority mountpoints (/, /home, etc)
- agent.py: fix disk_total_gb collection to use priority mountpoints
- detail.twig: add fallback blocks for temperatures (alert-info)
- detail.twig: add fallback blocks for disk doughnuts (alert-warning)
- detail.twig: add fallback blocks for network graphs (alert-warning)
- detail.twig: add null check for ramTotalGB in tooltip
- detail.twig: improve thresholds form with human-readable labels and units
- ServerDetailController: query only metrics that exist on server and display on graphs

For server 3 (mirv.top):
- After deploy, download new install.sh and reinstall agent
- This will add disk_used_root, ram_total_gb, temperatures support
2026-04-17 09:25:43 +08:00
__pycache__ fix: Update agent install, disk metrics, fallback blocks, and dynamic thresholds 2026-04-17 09:25:43 +08:00
config Docker: production-ready setup with immutable images, versioned migrations, env vars 2026-04-14 15:51:14 +08:00
docker fix: Update agent install, disk metrics, fallback blocks, and dynamic thresholds 2026-04-17 09:25:43 +08:00
public fix: Update agent install, disk metrics, fallback blocks, and dynamic thresholds 2026-04-17 09:25:43 +08:00
src fix: Update agent install, disk metrics, fallback blocks, and dynamic thresholds 2026-04-17 09:25:43 +08:00
templates fix: Update agent install, disk metrics, fallback blocks, and dynamic thresholds 2026-04-17 09:25:43 +08:00
.dockerignore deploy: add deploy.sh script, secure .env 2026-04-14 15:54:16 +08:00
.env.example unify config: single .env.example, default password mirvmon2026, docker in README 2026-04-14 16:20:01 +08:00
.gitignore fix: correct PHP-native bcrypt hash for admin password mirvmon2026 2026-04-14 16:34:40 +08:00
AGENTS.md fix: исправление тултипов Chart.js и обновление проекта 2026-04-13 00:59:19 +08:00
ARCHITECTURE.md fix: исправление тултипов Chart.js и обновление проекта 2026-04-13 00:59:19 +08:00
INSTALL.md Initial commit - mon.mirv.top monitoring system 2026-02-14 15:08:14 +00:00
README.md unify config: single .env.example, default password mirvmon2026, docker in README 2026-04-14 16:20:01 +08:00
TECHNICAL_SPECIFICATION.md Initial commit - mon.mirv.top monitoring system 2026-02-14 15:08:14 +00:00
agent.py fix: Update agent install, disk metrics, fallback blocks, and dynamic thresholds 2026-04-17 09:25:43 +08:00
composer.json fix: исправление тултипов Chart.js и обновление проекта 2026-04-13 00:59:19 +08:00
composer.lock Initial commit - mon.mirv.top monitoring system 2026-02-14 15:08:14 +00:00
monitoring_system_dump.sql fix: исправление тултипов Chart.js и обновление проекта 2026-04-13 00:59:19 +08:00
schema.sql Initial commit - mon.mirv.top monitoring system 2026-02-14 15:08:14 +00:00

README.md

🖥️ mirvmon — Система мониторинга серверов

Лёгкая и функциональная система мониторинга для домашних и небольших серверных инфраструктур.

PHP [Slim](https://www.slimfram ework.com) [MariaDB](https://mari adb.org) [Chart.js](https://www. chartjs.org)


📋 Возможности

  • 📊 Метрики в реальном времени: CPU, RAM, диск (по разделам), сеть (In/Out в %)
  • 🔔 Алерты и уведомления: Настраиваемые пороги с уведомлениями через Telegram и Email
  • 🖧 Мониторинг сервисов: Отслеживание состояния systemd-сервисов с алертами при остановке
  • 📈 Интерактивные графики: Зум, панорамирование, детализация по периодам (1ч, 6ч, 24ч, 7д, 30д)
  • 🌐 Множество серверов: Поддержка неограниченного числа серверов через Python-агент
  • 🎨 Цветная индикация: Прогресс-бары меняют цвет (🟢🟡🔴) при приближении к порогам
  • 🔐 Авторизация: Сессионная аутентификация с CSRF-защитой

🚀 Установка

Вариант A: Docker (рекомендуется)

Самый быстрый способ — всё поднимается автоматически:

# 1. Клонируем
git clone https://git.mirv.top/mirivlad/mirvmon.git
cd mirvmon

# 2. Запускаем скрипт (сам поставит Docker, сгенерит пароли, поднимет)
cd docker && bash deploy.sh

# 3. Открываем браузер
# http://localhost:8080
# Логин: admin
# Пароль: mirvmon2026 (смените сразу!)

Ручной Docker (без скрипта):

git clone https://git.mirv.top/mirivlad/mirvmon.git
cd mirvmon

cp .env.example .env        # меняем пароли
docker compose -f docker/docker-compose.yml up -d --build

При обновлении:

git pull
docker compose -f docker/docker-compose.yml up -d --build

📦 Код внутри Docker-образа (immutable). Данные БД в volume db_data — не теряются.


Вариант B: Ручная установка

1. Зависимости

apt install php8.3 php8.3-fpm php8.3-mysql php8.3-mbstring php8.3-curl nginx mariadb-server
composer install

2. База данных

mysql -u root -p <<EOF
CREATE DATABASE monitoring_system CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'mon_user'@'localhost' IDENTIFIED BY 'mon_password_123';
GRANT ALL PRIVILEGES ON monitoring_system.* TO 'mon_user'@'localhost';
FLUSH PRIVILEGES;
EOF

# Загружаем схему
mysql -u mon_user -pmon_password_123 monitoring_system < docker/migrations/001_create_base_schema.sql
mysql -u mon_user -pmon_password_123 monitoring_system < docker/migrations/002_add_encrypted_token.sql
mysql -u mon_user -pmon_password_123 monitoring_system < docker/migrations/003_add_agent_configs.sql
mysql -u mon_user -pmon_password_123 monitoring_system < docker/migrations/004_add_global_notification_settings.sql
mysql -u mon_user -pmon_password_123 monitoring_system < docker/migrations/005_add_service_tables.sql
mysql -u mon_user -pmon_password_123 monitoring_system < docker/migrations/006_server_metrics_value_to_text.sql
mysql -u mon_user -pmon_password_123 monitoring_system < docker/migrations/007_seed_admin_user.sql

3. Настройка .env

cp .env.example .env
# Отредактируйте DB_HOST, DB_PASSWORD и другие параметры
nano .env

4. Nginx

server {
    listen 80;
    server_name mon.mirv.top;
    root /var/www/mon/public;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }
}

5. Вход в систему

http://your-server/login

  • Логин: admin
  • Пароль: mirvmon2026 (смените сразу!)

🏗️ Архитектура

┌─────────────────────┐      POST /api/v1/metrics      ┌──────────────────┐
│  Python Agent       │ ──────────────────────────────▶ │  PHP Backend     │
│  (мониторимый       │  JSON: метрики + сервисы        │  (Slim + Twig)   │
│   сервер)           │◀────────────────────────────── │                  │
└─────────────────────┘                                └────────┬─────────┘
        ▲                                                       │
        │ systemctl list-units                                  │ PDO
        │ psutil                                                ▼
┌─────────────────────┐                                ┌──────────────────┐
│  ОС Linux           │                                │  MariaDB         │
│  (systemd, net,     │                                │  monitoring_     │
│   disk, ps)         │                                │  system          │
└─────────────────────┘                                └──────────────────┘