107 lines
3.7 KiB
SQL
Executable File
107 lines
3.7 KiB
SQL
Executable File
-- Структура базы данных для системы мониторинга
|
|
|
|
-- Таблица пользователей
|
|
CREATE DATABASE IF NOT EXISTS monitoring_system CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
USE monitoring_system;
|
|
|
|
CREATE TABLE users (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
username VARCHAR(50) UNIQUE NOT NULL,
|
|
password_hash VARCHAR(255) NOT NULL,
|
|
email VARCHAR(100),
|
|
role ENUM('admin', 'user') DEFAULT 'user',
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Таблица настроек уведомлений пользователей
|
|
CREATE TABLE user_notification_settings (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
user_id INT NOT NULL,
|
|
telegram_chat_id VARCHAR(50),
|
|
email_for_alerts VARCHAR(100),
|
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
|
);
|
|
|
|
-- Таблица групп серверов
|
|
CREATE TABLE server_groups (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
name VARCHAR(100) NOT NULL,
|
|
description TEXT,
|
|
icon VARCHAR(50),
|
|
color VARCHAR(20)
|
|
);
|
|
|
|
-- Таблица серверов
|
|
CREATE TABLE servers (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
name VARCHAR(100) NOT NULL,
|
|
address VARCHAR(255),
|
|
group_id INT,
|
|
description TEXT,
|
|
last_metrics_at TIMESTAMP NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (group_id) REFERENCES server_groups(id)
|
|
);
|
|
|
|
-- Таблица названий метрик
|
|
CREATE TABLE metric_names (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
name VARCHAR(50) UNIQUE NOT NULL,
|
|
unit VARCHAR(20),
|
|
description TEXT
|
|
);
|
|
|
|
-- Вставляем стандартные метрики
|
|
INSERT INTO metric_names (name, unit, description) VALUES
|
|
('cpu_load', '%', 'Загрузка процессора'),
|
|
('ram_used', '%', 'Использование оперативной памяти'),
|
|
('disk_used', '%', 'Использование диска'),
|
|
('network_in', 'MB/s', 'Скорость приема сети'),
|
|
('network_out', 'MB/s', 'Скорость передачи сети');
|
|
|
|
-- Таблица пороговых значений метрик
|
|
CREATE TABLE metric_thresholds (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
server_id INT NOT NULL,
|
|
metric_name_id INT NOT NULL,
|
|
warning_threshold DECIMAL(8,2),
|
|
critical_threshold DECIMAL(8,2),
|
|
duration INT DEFAULT 0,
|
|
FOREIGN KEY (server_id) REFERENCES servers(id) ON DELETE CASCADE,
|
|
FOREIGN KEY (metric_name_id) REFERENCES metric_names(id)
|
|
);
|
|
|
|
-- Таблица метрик серверов
|
|
CREATE TABLE server_metrics (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
server_id INT NOT NULL,
|
|
metric_name_id INT NOT NULL,
|
|
value DECIMAL(8,2),
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
INDEX idx_server_metric_time (server_id, metric_name_id, created_at),
|
|
FOREIGN KEY (server_id) REFERENCES servers(id) ON DELETE CASCADE,
|
|
FOREIGN KEY (metric_name_id) REFERENCES metric_names(id)
|
|
);
|
|
|
|
-- Таблица токенов агентов
|
|
CREATE TABLE agent_tokens (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
server_id INT UNIQUE NOT NULL,
|
|
token_hash VARCHAR(64) NOT NULL, -- SHA-256 hash
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
last_used_at TIMESTAMP NULL,
|
|
FOREIGN KEY (server_id) REFERENCES servers(id) ON DELETE CASCADE
|
|
);
|
|
|
|
-- Таблица алертов
|
|
CREATE TABLE alerts (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
server_id INT NOT NULL,
|
|
metric_name VARCHAR(50) NOT NULL,
|
|
value DECIMAL(8,2),
|
|
severity ENUM('warning', 'critical') NOT NULL,
|
|
resolved BOOLEAN DEFAULT FALSE,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
resolved_at TIMESTAMP NULL,
|
|
FOREIGN KEY (server_id) REFERENCES servers(id) ON DELETE CASCADE
|
|
); |