# 运维告警监控平台 完整维护手册 ## 文档说明 1. 适用人员:服务器运维工程师 2. 技术栈:Nginx + PHP-FPM(原生PHP) + MariaDB 3. 项目两套体系: - 新版:`dashboard.php` + `/api/index.php` 带Session登录鉴权(安全正式环境使用) - 旧版兼容:所有`.html`静态面板 + `/oldapi/index.php` 无登录校验(历史页面专用,内网临时查看) 4. 数据库:`alert_mail_stat` 5. 登录用户表:`sys_user` # 一、项目目录结构 ``` /usr/share/nginx/html/ ├─ login.php # 新版登录页面(Session会话) ├─ logout.php # 退出登录,销毁Session ├─ dashboard.php # 新版监控首页(带登录校验、展示当前用户) ├─ gen.php # 密码哈希生成工具,用完建议删除 ├─ dashboard2.0.html # 历史静态面板 ├─ dashboard3.0.html ├─ dashboard4.0.html ├─ dashboard5.0.html ├─ api/ │ └─ index.php # 新版接口,强制登录Session校验 ├─ oldapi/ │ └─ index.php # 旧页面专用接口,无登录限制 ``` # 二、数据库维护操作 ## 2.1 登录用户表建表语句 ```sql USE alert_mail_stat; CREATE TABLE IF NOT EXISTS sys_user ( id INT PRIMARY KEY AUTO_INCREMENT COMMENT '自增主键', username VARCHAR(32) NOT NULL UNIQUE COMMENT '登录账号', password VARCHAR(72) NOT NULL COMMENT 'BCrypt加密密码', role ENUM('admin','read') NOT NULL DEFAULT 'read' COMMENT '权限 admin管理员/read只读', last_login DATETIME NULL COMMENT '最后登录时间', create_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='平台登录用户表'; ``` ## 2.2 用户账号管理SQL ### 初始化管理员账号 账号:admin 密码:Admin@2026 ```sql INSERT INTO sys_user (username, password, role) VALUES ('admin', '$2y$10$0/620vN3sCKVUfejEmZj3O/gS11T2QKCea3d07RkTpojKom9K8zye', 'admin'); ``` ### 查询所有账号 ```sql SELECT id,username,role,last_login,create_at FROM sys_user; ``` ### 重置账号密码 1. 访问 `gen.php` 生成新哈希; 2. 执行SQL替换哈希串: ```sql UPDATE sys_user SET password='新生成的完整哈希字符串' WHERE username='admin'; ``` ### 新增只读账号 ```sql INSERT INTO sys_user (username,password,role) VALUES ('guest','哈希串','read'); ``` ### 删除账号 ```sql DELETE FROM sys_user WHERE username='guest'; ``` ## 2.3 业务数据表说明 `alert_log`:告警记录表,存储所有触发/恢复告警 字段核心用途: - alert_type=1 触发告警;alert_type=2 恢复告警 - receive_time 告警接收时间,统计默认按当日日期筛选 - instance 实例名称、alert_name 告警名称、severity 告警级别 ## 2.4 数据库备份&恢复 ### 备份全库 ```bash mysqldump -uroot -hp93000 alert_mail_stat > /data/backup/alert_$(date +%Y%m%d).sql ``` ### 恢复库 ```bash mysql -uroot -hp93000 alert_mail_stat < 备份文件.sql ``` # 三、Nginx服务维护 ## 3.1 完整可用站点配置 ```nginx server { listen 80; server_name localhost; root /usr/share/nginx/html; index index.html index.htm index.php; location ~ \.php$ { fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location / { try_files $uri $uri/; } location /api/ { try_files $uri $uri/; } location /oldapi/ { try_files $uri $uri/; } } ``` ## 3.2 Nginx常用运维命令 ```bash # 校验配置语法 nginx -t # 重载配置(不中断业务) nginx -s reload # 查看访问日志 tail -f /var/log/nginx/access.log # 查看错误日志(接口500、404、PHP下载源码排查) tail -f /var/log/nginx/error.log ``` ## 3.3 常见Nginx故障 1. 访问php文件直接下载源码 原因:缺少全局`.php`正则解析块,复制上方完整配置重载即可; 2. 接口401未登录 新版页面必须走`dashboard.php`登录生成Session;旧html页面使用`oldapi`接口; 3. 页面空白/500报错 查看nginx error日志 + php-fpm日志定位SQL、语法错误。 # 四、PHP服务维护 ## 4.1 Session会话说明 1. 登录后Session存储PHP默认会话目录,记录用户ID、账号、权限、登录时间; 2. 会话超时:30分钟无操作自动登出; 3. 连续输错密码5次锁定5分钟,IP隔离锁定。 ## 4.2 密码哈希工具 gen.php ```php "; echo "加密哈希:".$hash."
"; var_dump(password_verify($rawPwd, $hash)); ?> ``` 使用规范:密码修改完成后删除该文件,防止泄露。 ## 4.3 PHP常见故障处理 1. 数据库连接失败 核对文件内 `$dbHost/$dbUser/$dbPass/$dbName` 数据库账号密码; 2. 登录提示账号密码错误 - 用gen.php重新生成哈希更新数据库; - 确认输入密码大小写、英文符号; 3. 接口无数据/统计为0 复制接口act参数,单独执行对应SQL核对数据库当日数据; 4. CSV导出下载失败 检查PHP输出缓冲区代码,关闭前端缓存拦截。 # 五、两套接口区分&使用规范 ## 5.1 /api/index.php(正式新版接口) - 鉴权:强制校验PHP Session,未登录返回401; - 使用者:`dashboard.php`; - 安全:线上、公网环境唯一推荐使用; - 禁止:旧静态html直接调用此接口。 ## 5.2 /oldapi/index.php(兼容历史页面) - 鉴权:无任何登录校验,直接返回数据; - 使用者:所有`.html`历史静态面板; - 安全规范:仅内网办公网段访问,禁止对公网开放; - 改造方式:页面顶部api地址修改为 `/oldapi` 即可恢复数据。 # 六、页面访问使用规范 ## 6.1 正式安全访问流程(推荐) 1. 访问 `http://服务器IP/login.php` 2. 输入账号密码登录,自动跳转 `dashboard.php` 3. 页面展示:今日告警统计、TOP10图表、未恢复告警列表、全量告警明细 4. 右上角:显示当前登录用户、权限、退出按钮;点击退出销毁Session回到登录页 ## 6.2 历史静态页面访问流程(兼容) 1. 直接访问 `dashboard5.0.html` 等静态文件,无需登录; 2. 页面JS接口地址指向 `/oldapi/index.php`; 3. 限制:仅内网查看,无权限隔离,多人可直接查看全部数据。 # 七、日常运维巡检清单(每日) 1. Nginx进程运行状态,error日志无大量500/404报错; 2. PHP-FPM进程无崩溃、无超时报错; 3. MariaDB服务正常,数据库可正常连接; 4. 告警数据正常入库,页面统计数值与数据库一致; 5. 登录功能正常,无频繁密码校验失败; 6. CSV导出功能可正常下载报表; 7. 磁盘空间充足,日志定时清理避免占满磁盘。 # 八、故障快速排查流程 ## 场景1:页面打不开/404 1. 核对访问路径文件名; 2. 检查Nginx站点根目录配置; 3. 查看nginx access日志确认请求是否到达服务器。 ## 场景2:页面空白、接口500错误 1. 查看nginx error.log; 2. 复制报错行给到AI修复PHP语法、SQL错误; 3. 核对数据库账号密码、表名是否正确。 ## 场景3:登录一直提示账号密码错误 1. 执行gen.php生成对应明文的哈希; 2. UPDATE更新数据库sys_user表password字段; 3. 无痕浏览器重试,清除IP登录锁定Session。 ## 场景4:旧html页面无数据 1. 确认页面JS接口地址为 `/oldapi`; 2. 直接浏览器访问 `http://IP/oldapi/index.php?act=day_total` 看是否返回JSON; 3. 无返回则检查oldapi目录权限、PHP解析配置。 ## 场景5:新版dashboard.php接口401 1. 必须从login.php登录生成Session; 2. 清除浏览器缓存,无痕窗口重新登录; 3. 确认api/index.php头部session_start()鉴权代码存在。 # 九、版本更新&上线维护规范 1. 文件更新:直接覆盖对应php/html文件,无需编译; 2. 更新后执行 `nginx -s reload` 重载配置; 3. 数据库变更:提前备份库,执行SQL后核对表结构; 4. 上线验证顺序:登录页面 → 新版dashboard → 旧html面板 → 导出功能; 5. 回滚方案:保留旧文件备份,出现异常直接覆盖回退。 # 十、安全运维规范 1. 公网环境仅开放新版`login.php/dashboard.php/api`,禁止暴露oldapi无鉴权接口; 2. 定期修改admin管理员密码,使用复杂度高密码(大小写+数字+特殊符号); 3. gen.php工具使用完成立即删除,避免密码哈希泄露; 4. 限制服务器访问IP,Nginx配置网段白名单; 5. 定期备份alert_mail_stat数据库,保留7天以上备份文件; 6. 不要将数据库账号密码明文暴露在前端静态html中; 7. 长期不用的只读账号及时删除,最小权限管理。