69 lines
2.4 KiB
Plaintext
69 lines
2.4 KiB
Plaintext
/opt/alert_dashboard/
|
|
├── docker-compose.yml # 容器编排主文件
|
|
├── nginx/
|
|
│ └── default.conf # Nginx站点配置
|
|
├── www/
|
|
│ ├── api/
|
|
│ │ └── index.php # 你提供的PHP接口文件
|
|
│ └── dashboard.html # H5看板页面
|
|
├── python_crawler/
|
|
│ └── mail_crawler.py # 邮件抓取脚本
|
|
└── mysql_data/ # MySQL持久化数据目录(自动生成)
|
|
|
|
#Nginx 配置 /opt/alert_dashboard/nginx/default.conf
|
|
mkdir -p /opt/alert_dashboard/{nginx,www/api,python_crawler,mysql_data}
|
|
cd /opt/alert_dashboard
|
|
|
|
server {
|
|
listen 80;
|
|
server_name localhost;
|
|
root /usr/share/nginx/html;
|
|
index index.html index.htm;
|
|
|
|
# 前端静态页面
|
|
location / {
|
|
try_files $uri $uri/;
|
|
}
|
|
|
|
# PHP告警接口
|
|
location /api {
|
|
fastcgi_pass php:9000;
|
|
fastcgi_index index.php;
|
|
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html/api/index.php;
|
|
include fastcgi_params;
|
|
}
|
|
}
|
|
|
|
#数据库设计
|
|
CREATE DATABASE alert_mail_stat DEFAULT CHARACTER SET utf8mb4;
|
|
USE alert_mail_stat;
|
|
|
|
-- 告警事件主表(每条邮件=一条记录)
|
|
CREATE TABLE alert_log (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '自增ID',
|
|
mail_uid VARCHAR(100) NOT NULL COMMENT '邮件唯一ID,去重防止重复采集',
|
|
alert_type TINYINT NOT NULL COMMENT '1触发firing 2恢复resolved',
|
|
alert_name VARCHAR(200) NOT NULL COMMENT '告警名称(Port_Down/NetworkInHigh)',
|
|
instance VARCHAR(200) NOT NULL COMMENT '实例地址IP:端口',
|
|
severity VARCHAR(50) NOT NULL COMMENT '级别critical/warning',
|
|
starts_at DATETIME NULL COMMENT '告警开始UTC转北京时间',
|
|
ends_at DATETIME NULL COMMENT '告警恢复时间',
|
|
content TEXT COMMENT '邮件完整正文',
|
|
receive_time DATETIME NOT NULL COMMENT '邮件接收入库时间',
|
|
UNIQUE KEY uk_mail_uid(mail_uid),
|
|
INDEX idx_day(receive_time),
|
|
INDEX idx_alert_name(alert_name),
|
|
INDEX idx_instance(instance)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
#后端接口
|
|
今日汇总:http://xxx/alert_api/index.php?act=day_total
|
|
TOP10 告警:http://xxx/alert_api/index.php?act=top_alert
|
|
告警明细:http://xxx/alert_api/index.php?act=log_list
|
|
|
|
pip3 install pymysql 依赖
|
|
|
|
GRANT ALL ON alert_mail_stat.* TO 'root'@'10.150.10.%' IDENTIFIED BY '你的MySQL密码';
|
|
FLUSH PRIVILEGES;
|
|
|