添加 维护手册.txt

This commit is contained in:
2026-07-02 10:39:21 +08:00
parent 88f6272e54
commit 83f47a6729
+242
View File
@@ -0,0 +1,242 @@
# 运维告警监控平台 完整维护手册
## 文档说明
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
<?php
$rawPwd = "Admin@2026";
$hash = password_hash($rawPwd, PASSWORD_DEFAULT);
echo "明文密码:".$rawPwd."<br>";
echo "加密哈希:".$hash."<br>";
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. 长期不用的只读账号及时删除,最小权限管理。