-- V23:系统监控,独立新表,不修改业务及审计数据。 INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) VALUES ('system:monitor:view','系统监控:查看',1,100,1); INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code='system:monitor:view' WHERE r.role_code='admin'; CREATE TABLE monitor_snapshots ( id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT, instance_id VARCHAR(32) NOT NULL COMMENT '应用实例标识', minute DATETIME NOT NULL COMMENT '采集分钟,北京时间', sample_count INTEGER NOT NULL COMMENT '实际采样次数', resources JSON NOT NULL COMMENT '资源均值与采集范围,不含配置', requests JSON NOT NULL COMMENT '请求汇总与固定耗时直方图', CONSTRAINT pk_monitor_snapshots PRIMARY KEY (id), CONSTRAINT uk_monitor_snapshots_instance_minute UNIQUE (instance_id, minute) )ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='分钟级运行监控快照' COLLATE utf8mb4_general_ci; CREATE INDEX idx_monitor_snapshots_minute ON monitor_snapshots (minute); CREATE TABLE monitor_request_minutes ( id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT, instance_id VARCHAR(32) NOT NULL COMMENT '应用实例标识', minute DATETIME NOT NULL COMMENT '请求分钟,北京时间', method VARCHAR(8) NOT NULL COMMENT 'HTTP方法,固定集合', route VARCHAR(256) NOT NULL COMMENT '路由模板,不含原始地址及参数', metrics JSON NOT NULL COMMENT '请求数、状态分类与固定直方图', CONSTRAINT pk_monitor_request_minutes PRIMARY KEY (id), CONSTRAINT uk_monitor_request_minutes_endpoint UNIQUE (instance_id, minute, method, route) )ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='接口分钟级运行统计' COLLATE utf8mb4_general_ci; CREATE INDEX idx_monitor_request_minutes_minute ON monitor_request_minutes (minute); CREATE TABLE monitor_events ( id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT, instance_id VARCHAR(32) NOT NULL COMMENT '应用实例标识', kind VARCHAR(24) NOT NULL COMMENT '事件类型,固定集合', code VARCHAR(64) NOT NULL COMMENT '稳定错误码', component VARCHAR(128) NOT NULL COMMENT '所属组件或日志模块', level VARCHAR(16) NOT NULL COMMENT '异常级别', message VARCHAR(256) NOT NULL COMMENT '通用说明,不保存内部异常文本', fingerprint VARCHAR(64) COMMENT '同类健康异常合并键', request_id VARCHAR(32) COMMENT '请求关联编号', method VARCHAR(8) COMMENT 'HTTP方法', route VARCHAR(256) COMMENT '路由模板', status_code INTEGER COMMENT 'HTTP状态码', duration_ms FLOAT COMMENT '请求耗时,毫秒', batch_no VARCHAR(32) COMMENT '相关同步批次编号', first_seen DATETIME NOT NULL COMMENT '首次发生时间', last_seen DATETIME NOT NULL COMMENT '最近发生时间', occurrences INTEGER NOT NULL COMMENT '发生或持续采样次数', resolved_at DATETIME COMMENT '恢复时间,仅用于健康异常', CONSTRAINT pk_monitor_events PRIMARY KEY (id) )ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='脱敏诊断事件与异常恢复记录' COLLATE utf8mb4_general_ci; CREATE INDEX idx_monitor_events_fingerprint ON monitor_events (fingerprint, resolved_at); CREATE INDEX idx_monitor_events_last_seen ON monitor_events (last_seen); CREATE INDEX idx_monitor_events_request_id ON monitor_events (request_id);