NAC_Blockchain/ops/nac-monitor
NAC Admin 1cdfd6c7cc refactor: 目录重组 - 明确中心化运维与去中心化业务边界
[目录重组]
- services/nac-admin → ops/nac-admin(运维后台归入 ops/)
- nac-monitor/nac-daemon/nac-deploy/nac-cee-integration → ops/(运维工具归组)
- nac-sdk/nac-cli/nac-serde → sdk/(开发者工具归组)
- nac-api-server/nac-explorer-api → services/(对外服务归组)
- 备份文件 → archive/(历史版本归档)

[nac-admin 职责拆分]
- 保留运维功能:Dashboard(节点监控)、AuditLog(审计)、RegulatoryMonitor(合规)
- 迁出业务功能:
  - KnowledgeBase → services/nac-knowledge-portal/
  - Crawlers → services/nac-data-crawler/
  - ApprovalCases + TagEngine → services/nac-rwa-portal/
  - ProtocolRegistry → services/nac-protocol-registry/

[修复]
- rpc.newassetchain.io nginx 配置修复(9547→9550,NAC_Lens 网关)

设计原则:ops/ 是合理的中心化运维入口,区块链协议和业务服务
完全独立,不归属任何 admin 目录,避免中心化联想。
2026-03-07 17:46:08 +08:00
..
src refactor: 目录重组 - 明确中心化运维与去中心化业务边界 2026-03-07 17:46:08 +08:00
Cargo.lock refactor: 目录重组 - 明确中心化运维与去中心化业务边界 2026-03-07 17:46:08 +08:00
Cargo.toml refactor: 目录重组 - 明确中心化运维与去中心化业务边界 2026-03-07 17:46:08 +08:00
README.md refactor: 目录重组 - 明确中心化运维与去中心化业务边界 2026-03-07 17:46:08 +08:00
README.md.old refactor: 目录重组 - 明确中心化运维与去中心化业务边界 2026-03-07 17:46:08 +08:00
TICKET_15_COMPLETION_LOG.md refactor: 目录重组 - 明确中心化运维与去中心化业务边界 2026-03-07 17:46:08 +08:00

README.md

NAC Monitor - NAC区块链监控系统

完整的监控解决方案为NAC区块链提供实时监控、性能分析和告警通知。

功能特性

指标收集

  • 节点指标: 区块高度、同步状态、对等节点、资源使用CPU、内存、磁盘、网络
  • 网络指标: 连接数、流量统计、延迟、丢包率
  • 共识指标: 共识轮次、验证者状态、提案投票、出块时间
  • 交易指标: TPS、交易池大小、确认时间、交易费用
  • 自定义指标: 支持用户定义的业务指标

Prometheus集成

  • 标准Prometheus指标导出
  • 支持Counter、Gauge、Histogram类型
  • 自动指标注册和更新
  • 兼容Grafana可视化

告警系统

  • 灵活的规则引擎: 支持多种条件和阈值
  • 多渠道通知: Email、Webhook、Slack、钉钉、企业微信
  • 告警抑制: 防止告警风暴
  • 告警升级: 自动升级未处理的告警
  • 告警历史: 完整的告警记录和审计

日志聚合

  • 多源收集: 节点日志、系统日志、应用日志
  • 智能解析: 自动识别日志格式和级别
  • 高效存储: 支持内存、文件、数据库存储
  • 强大查询: 时间范围、级别、关键词、标签过滤

Web仪表板

  • 实时监控: WebSocket实时数据推送
  • 可视化展示: 图表、仪表盘、趋势分析
  • 告警展示: 活跃告警、告警历史
  • 日志查看: 实时日志流、日志搜索

架构设计

┌─────────────────────────────────────────────────────────┐
│                    NAC Monitor                          │
├─────────────────────────────────────────────────────────┤
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐ │
│  │ 指标收集器    │  │  告警管理器   │  │  日志聚合器   │ │
│  │              │  │              │  │              │ │
│  │ - Node       │  │ - Rules      │  │ - Collector  │ │
│  │ - Network    │  │ - Notifier   │  │ - Parser     │ │
│  │ - Consensus  │  │ - Manager    │  │ - Storage    │ │
│  │ - Transaction│  │              │  │ - Query      │ │
│  └──────────────┘  └──────────────┘  └──────────────┘ │
│                                                         │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐ │
│  │ Prometheus   │  │  Dashboard   │  │   Config     │ │
│  │  Exporter    │  │   Server     │  │  Manager     │ │
│  └──────────────┘  └──────────────┘  └──────────────┘ │
└─────────────────────────────────────────────────────────┘
           │                  │                  │
           ▼                  ▼                  ▼
    ┌───────────┐      ┌───────────┐      ┌───────────┐
    │ Prometheus│      │  Grafana  │      │  Alerting │
    └───────────┘      └───────────┘      └───────────┘

安装

从源码编译

# 克隆仓库
git clone https://git.newassetchain.io/nacadmin/NAC_Blockchain.git
cd NAC_Blockchain/nac-monitor

# 编译
cargo build --release

# 安装
cargo install --path .

使用预编译二进制

# 下载最新版本
wget https://releases.newassetchain.io/nac-monitor/latest/nac-monitor-linux-amd64

# 添加执行权限
chmod +x nac-monitor-linux-amd64

# 移动到系统路径
sudo mv nac-monitor-linux-amd64 /usr/local/bin/nac-monitor

快速开始

1. 创建配置文件

nac-monitor init --config /etc/nac-monitor/config.json

配置文件示例:

{
  "server": {
    "bind": "0.0.0.0",
    "port": 8080,
    "workers": 4
  },
  "metrics": {
    "collection_interval": 10,
    "prometheus_endpoint": "/metrics",
    "enabled_monitors": ["node", "network", "consensus", "transaction"]
  },
  "alerting": {
    "rules_file": "/etc/nac-monitor/alert_rules.json",
    "notification_channels": [
      {
        "channel_type": "webhook",
        "config": {
          "url": "https://hooks.example.com/alerts"
        },
        "enabled": true
      }
    ]
  },
  "logging": {
    "level": "info",
    "output_path": "/var/log/nac-monitor",
    "retention_days": 30
  }
}

2. 启动监控服务

# 前台运行
nac-monitor start --config /etc/nac-monitor/config.json

# 后台运行
nac-monitor start --config /etc/nac-monitor/config.json --daemon

# 使用systemd
sudo systemctl start nac-monitor
sudo systemctl enable nac-monitor

3. 访问Web仪表板

打开浏览器访问:http://localhost:8080

4. 配置Prometheus

在Prometheus配置文件中添加

scrape_configs:
  - job_name: 'nac-monitor'
    static_configs:
      - targets: ['localhost:8080']
    metrics_path: '/metrics'
    scrape_interval: 10s

5. 配置Grafana

  1. 添加Prometheus数据源
  2. 导入NAC Monitor仪表板模板/etc/nac-monitor/grafana-dashboard.json
  3. 查看实时监控数据

使用示例

作为库使用

use nac_monitor::*;

#[tokio::main]
async fn main() -> Result<()> {
    // 创建监控系统
    let config = MonitorConfig::default();
    let monitor = MonitorSystem::new(config);
    
    // 启动监控
    monitor.start().await?;
    
    // 获取节点指标
    let metrics = monitor.get_node_metrics().await;
    println!("区块高度: {}", metrics.block_height);
    println!("TPS: {:.2}", metrics.tps);
    
    // 查询活跃告警
    let alerts = monitor.get_active_alerts().await;
    for alert in alerts {
        println!("告警: {} - {}", alert.level, alert.message);
    }
    
    // 查询日志
    let query = LogQuery {
        start_time: Some(Utc::now() - Duration::hours(1)),
        end_time: Some(Utc::now()),
        levels: Some(vec![LogLevel::Error, LogLevel::Warning]),
        ..Default::default()
    };
    let logs = monitor.query_logs(&query).await;
    
    Ok(())
}

命令行工具

# 查看监控状态
nac-monitor status

# 查看节点指标
nac-monitor metrics node

# 查看活跃告警
nac-monitor alerts list --active

# 查询日志
nac-monitor logs query --level error --last 1h

# 导出数据
nac-monitor export --format json --output /tmp/metrics.json

# 测试告警规则
nac-monitor alerts test --rule-file /etc/nac-monitor/alert_rules.json

告警规则配置

告警规则文件示例(alert_rules.json

{
  "rules": [
    {
      "name": "high_cpu_usage",
      "description": "CPU使用率过高",
      "condition": {
        "metric": "cpu_usage_percent",
        "operator": ">",
        "threshold": 90.0,
        "duration": 300
      },
      "level": "warning",
      "enabled": true
    },
    {
      "name": "low_peer_count",
      "description": "对等节点数量过低",
      "condition": {
        "metric": "peer_count",
        "operator": "<",
        "threshold": 10,
        "duration": 60
      },
      "level": "critical",
      "enabled": true
    },
    {
      "name": "sync_status_not_synced",
      "description": "节点未同步",
      "condition": {
        "metric": "sync_status",
        "operator": "!=",
        "value": "Synced",
        "duration": 300
      },
      "level": "error",
      "enabled": true
    }
  ]
}

性能优化

指标收集优化

  • 调整收集间隔(collection_interval)平衡实时性和性能
  • 禁用不需要的监控项(enabled_monitors
  • 使用自定义指标替代复杂计算

存储优化

  • 设置合理的数据保留时间(retention_hours
  • 使用文件或数据库存储替代内存存储
  • 定期清理过期数据

告警优化

  • 设置告警抑制时间(suppression_duration
  • 合并相似告警
  • 使用告警分组

故障排查

监控服务无法启动

  1. 检查配置文件格式是否正确
  2. 检查端口是否被占用
  3. 检查日志文件权限

指标收集失败

  1. 检查节点API是否可访问
  2. 检查网络连接
  3. 查看错误日志

告警未触发

  1. 检查告警规则配置
  2. 检查通知渠道配置
  3. 查看告警历史

Dashboard无法访问

  1. 检查服务是否运行
  2. 检查防火墙设置
  3. 检查浏览器控制台错误

测试

# 运行所有测试
cargo test

# 运行特定测试
cargo test test_metrics_collector

# 运行基准测试
cargo bench

测试覆盖率:

  • 单元测试49个
  • 集成测试:待添加
  • 测试通过率100%

性能指标

  • 指标收集延迟:< 100ms
  • 告警响应时间:< 1s
  • 日志查询性能1000条/s
  • 内存使用:< 256MB
  • CPU使用< 5%

贡献指南

欢迎贡献代码、报告问题或提出建议!

  1. Fork本仓库
  2. 创建特性分支(git checkout -b feature/amazing-feature
  3. 提交更改(git commit -m 'Add amazing feature'
  4. 推送到分支(git push origin feature/amazing-feature
  5. 创建Pull Request

许可证

MIT License - 详见LICENSE文件

联系方式

更新日志

v1.0.0 (2026-02-18)

新功能

  • 完整的指标收集系统(节点、网络、共识、交易)
  • Prometheus集成和指标导出
  • 灵活的告警规则引擎
  • 多渠道告警通知
  • 日志聚合和查询
  • Web仪表板和实时监控
  • 自定义指标支持
  • 完整的测试覆盖

技术亮点

  • 100%使用NAC原生技术栈
  • 异步架构,高性能
  • 模块化设计,易扩展
  • 完整的错误处理
  • 详细的文档和示例

测试结果

  • 49个单元测试全部通过
  • 编译无警告
  • 代码行数5000+行

开发团队: NewAssetChain Core Team
完成日期: 2026-02-18
工单编号: #015