4.5 KiB
Executable File
4.5 KiB
Executable File
Установка и запуск системы мониторинга
Требования
- PHP 8.3 или выше
- Composer
- MySQL 8+ или MariaDB 10.5+
- Apache или Nginx
Установка
1. Клонирование проекта
git clone <repository-url>
cd mon
2. Установка зависимостей
composer install
3. Настройка базы данных
- Создайте базу данных:
CREATE DATABASE monitoring_system CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- Импортируйте схему:
mysql -u root -p monitoring_system < schema.sql
4. Настройка веб-сервера
Apache
Создайте виртуальный хост:
<VirtualHost *:80>
ServerName mon.mirv.top
DocumentRoot /path/to/monitoring-system/public
<Directory /path/to/monitoring-system/public>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/mon_error.log
CustomLog ${APACHE_LOG_DIR}/mon_access.log combined
</VirtualHost>
Nginx
server {
listen 80;
server_name mon.mirv.top;
root /path/to/monitoring-system/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
}
}
5. Настройка окружения
Скопируйте .env.example в .env и укажите параметры подключения к базе данных:
cp .env.example .env
Ключевые переменные:
DB_HOST=localhost
DB_NAME=monitoring_system
DB_USERNAME=mon_user
DB_PASSWORD=your_db_password
APP_PORT=8082
Использование
1. Вход в систему
Перейдите на http://mon.mirv.top/login и войдите в систему.
По умолчанию миграция 007_seed_admin_user.sql создаёт пользователя:
- логин:
admin - пароль:
mirvmon2026
2. Добавление серверов
- Перейдите в раздел "Серверы"
- Нажмите "Добавить сервер"
- Заполните форму и сохраните
- На странице подтверждения скопируйте токен и скачайте скрипт установки
3. Установка агента на мониторимый сервер
- Скачайте скрипт установки с сервера мониторинга
- Загрузите его на сервер, который нужно мониторить
- Выполните:
chmod +x install.sh
./install.sh
Агент будет установлен как systemd-сервис и начнет отправлять метрики на сервер мониторинга.
Trends и длинные периоды
Для графиков за периоды больше 24 часов используются агрегированные данные из server_metrics_trends.
Если после установки или миграции нужно дозаполнить историю:
php /var/www/mon/cron/backfill_trends.php 30
API
Отправка метрик
Агенты отправляют метрики на эндпоинт /api/v1/metrics методом POST:
{
"token": "токен_сервера",
"metrics": {
"cpu_load": 45.2,
"ram_used": 89.1,
"ram_total_gb": 16.0,
"disk_used_root": 65.5,
"net_in_ens3": 12.3,
"net_out_ens3": 5.6
},
"services": [
{"name": "nginx", "status": "running"}
]
}
Скачивание агента
GET /get-agent?token=<server_token>
GET /agent/install.sh?token=<server_token>
GET /agent/install.bat?token=<server_token>
Безопасность
- Все пароли хешируются с помощью
password_hash() - Токены агентов хранятся в виде SHA-256 хешей
- Все SQL-запросы используют подготовленные выражения
- Вход на все страницы требует аутентификации (кроме API и страницы входа)