Files
alert_dashbaord/维护手册.txt
T
2026-07-02 10:39:21 +08:00

242 lines
8.8 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 运维告警监控平台 完整维护手册
## 文档说明
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. 长期不用的只读账号及时删除,最小权限管理。