109 lines
2.7 KiB
Rust
109 lines
2.7 KiB
Rust
/*!
|
||
# NAC监控平台
|
||
|
||
NAC区块链实时监控和性能分析平台。
|
||
|
||
## 功能特性
|
||
|
||
- ✅ 实时节点监控
|
||
- ✅ 性能指标收集
|
||
- ✅ 告警通知
|
||
- ✅ 可视化仪表板
|
||
- ✅ 历史数据分析
|
||
|
||
## 使用示例
|
||
|
||
```bash
|
||
# 启动监控服务
|
||
nac-monitor start --port 8080
|
||
|
||
# 查看监控状态
|
||
nac-monitor status
|
||
|
||
# 导出监控数据
|
||
nac-monitor export --format json
|
||
```
|
||
*/
|
||
|
||
mod metrics;
|
||
mod alerts;
|
||
mod dashboard;
|
||
|
||
use clap::{Parser, Subcommand};
|
||
use colored::*;
|
||
|
||
#[derive(Parser)]
|
||
#[command(name = "nac-monitor")]
|
||
#[command(about = "NAC监控平台", long_about = None)]
|
||
#[command(version)]
|
||
struct Cli {
|
||
#[command(subcommand)]
|
||
command: Commands,
|
||
}
|
||
|
||
#[derive(Subcommand)]
|
||
enum Commands {
|
||
/// 启动监控服务
|
||
Start {
|
||
/// 监听端口
|
||
#[arg(short, long, default_value = "8080")]
|
||
port: u16,
|
||
|
||
/// 绑定地址
|
||
#[arg(short, long, default_value = "0.0.0.0")]
|
||
bind: String,
|
||
},
|
||
|
||
/// 查看监控状态
|
||
Status,
|
||
|
||
/// 导出监控数据
|
||
Export {
|
||
/// 导出格式(json/csv)
|
||
#[arg(short, long, default_value = "json")]
|
||
format: String,
|
||
|
||
/// 输出文件
|
||
#[arg(short, long)]
|
||
output: Option<String>,
|
||
},
|
||
}
|
||
|
||
fn main() {
|
||
env_logger::init();
|
||
|
||
let cli = Cli::parse();
|
||
|
||
match cli.command {
|
||
Commands::Start { port, bind } => {
|
||
println!("{}", "📊 NAC监控平台".bright_cyan().bold());
|
||
println!("监听地址: {}:{}", bind.bright_yellow(), port.to_string().bright_yellow());
|
||
|
||
let mut alert_mgr = alerts::AlertManager::new();
|
||
let metrics = metrics::NodeMetrics::collect();
|
||
alert_mgr.check_metrics(&metrics);
|
||
|
||
dashboard::Dashboard::display(&metrics, alert_mgr.get_alerts());
|
||
|
||
println!("{}", format!("💡 访问 http://{}:{} 查看仪表板", bind, port).bright_blue());
|
||
}
|
||
Commands::Status => {
|
||
println!("{}", "📈 NAC监控状态".bright_cyan().bold());
|
||
|
||
let metrics = metrics::NodeMetrics::collect();
|
||
let mut alert_mgr = alerts::AlertManager::new();
|
||
alert_mgr.check_metrics(&metrics);
|
||
|
||
dashboard::Dashboard::display(&metrics, alert_mgr.get_alerts());
|
||
}
|
||
Commands::Export { format, output } => {
|
||
println!("{}", "💾 导出监控数据".bright_cyan().bold());
|
||
println!("导出格式: {}", format.bright_yellow());
|
||
if let Some(out) = output {
|
||
println!("输出文件: {}", out.bright_yellow());
|
||
}
|
||
println!("{}", "✅ 数据导出功能即将实现".bright_green());
|
||
}
|
||
}
|
||
}
|