# 小辣椒 Chilli
**系统遥测与网络安全监控平台** [![Rust](https://img.shields.io/badge/Rust-1.75+-orange.svg)](https://www.rust-lang.org) [![Axum](https://img.shields.io/badge/Axum-0.7-blue.svg)](https://github.com/tokio-rs/axum) [![SeaORM](https://img.shields.io/badge/SeaORM-0.12-green.svg)](https://www.sea-ql.org/SeaORM) [![Vue.js](https://img.shields.io/badge/Vue.js-3.4+-4FC08D.svg)](https://vuejs.org) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) ![小辣椒系统监控平台界面预览](./docs/demo.png)
--- ## 项目简介 **小辣椒 (Chilli)** 是一个基于 Rust + Vue.js 构建的高性能系统遥测与网络安全监控平台。它集成了实时进程监控、安全漏洞扫描、Docker 容器管理、系统状态采集等功能,为开发者和运维人员提供全面的系统可视化和安全态势感知能力。 ### 核心特性 - **可视化仪表盘** - 基于 Vue 3 的现代化 Web 界面,实时展示系统状态 - **实时进程监控** - 采集系统进程信息、内存使用、端口监听状态 - **安全漏洞扫描** - 自动检测系统进程和服务的安全漏洞 - **Docker 安全管理** - 监控容器运行状态和安全配置 - **GitHub 安全公告同步** - 自动同步安全漏洞数据库 - **系统遥测** - CPU、内存、运行时间等关键指标实时采集 - **IP 访问审计** - 审计 MySQL/PostgreSQL/Redis 等关键数据库端口的活动连接,无需 eBPF - **多语言支持** - 支持中文和英文界面切换 - **RESTful API** - 基于 Axum 框架的高性能 HTTP API - **多数据库支持** - SQLite / MySQL / PostgreSQL / QuestDB - **异步高性能** - 基于 Tokio 异步运行时,资源占用低 --- ## 系统架构 ``` ┌─────────────────────────────────────────────────────────────┐ │ Frontend Layer │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │ │ │ Dashboard │ │ Security │ │ Docker Manager │ │ │ │ 仪表盘 │ │ 安全扫描 │ │ 容器管理 │ │ │ └─────────────┘ └─────────────┘ └─────────────────────┘ │ │ Vue 3 + TypeScript │ └─────────────────────────────────────────────────────────────┘ │ ┌─────────────────────────────────────────────────────────────┐ │ HTTP API Layer │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │ │ │ /health │ │ /api/running│ │ /api/kill/:pid │ │ │ │ 健康检查 │ │ 进程列表 │ │ 终止进程 │ │ │ └─────────────┘ └─────────────┘ └─────────────────────┘ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │ │ │/security/scan│ │/security/docker│ │ /api/processes │ │ │ │ 漏洞扫描 │ │ Docker安全 │ │ 进程详情 │ │ │ └─────────────┘ └─────────────┘ └─────────────────────┘ │ │ Axum (Rust) │ └─────────────────────────────────────────────────────────────┘ │ ┌─────────────────────────────────────────────────────────────┐ │ Business Logic Layer │ │ ┌──────────────────┐ ┌────────────────────────────────┐ │ │ │ Process Monitor │ │ Security Scanner │ │ │ │ 进程监控核心 │ │ 漏洞扫描引擎 │ │ │ └──────────────────┘ └────────────────────────────────┘ │ │ ┌──────────────────┐ ┌────────────────────────────────┐ │ │ │ Docker Security │ │ GitHub Advisory Sync │ │ │ │ 容器安全检测 │ │ 安全公告同步引擎 │ │ │ └──────────────────┘ └────────────────────────────────┘ │ │ ┌──────────────────┐ │ │ │ IP Audit Module │ │ │ │ IP访问审计引擎 │ │ │ └──────────────────┘ │ └─────────────────────────────────────────────────────────────┘ │ ┌─────────────────────────────────────────────────────────────┐ │ Data Access Layer │ │ SeaORM (SQLite / MySQL / PostgreSQL) │ └─────────────────────────────────────────────────────────────┘ ``` --- ## 快速开始 ### 方式一:使用 Docker(推荐) ```bash # 使用 Docker 运行 docker run -d \ --name chilli \ -p 9333:9333 \ -v $(pwd)/data:/data \ ctkqiang/chilli:latest # 或使用 Docker Compose docker-compose up -d ``` 访问 http://localhost:9333 即可使用 Web 界面。 ### 方式二:从源码构建 #### 环境要求 - Rust 1.75+ - Node.js 18+ (前端开发) - SQLite (默认) 或 MySQL/PostgreSQL #### 安装 ```bash # 克隆仓库 git clone https://github.com/ctkqiang/chilli.git 或 git https://gitcode.com/ctkqiang_sr/chilli.git cd chilli # 编译后端 cargo build --release # 编译前端 cd portal npm install npm run build cd .. # 运行 ./target/release/chilli ``` 前端构建后的文件将自动嵌入到后端二进制中,访问 http://localhost:9333 即可使用 Web 界面。 ### 配置 创建 `.env` 文件: ```env # 服务端口 PORT=9333 # 数据库配置 (SQLite - 默认) DATABASE_URL=sqlite://./data/chilli.db # 或 MySQL # MYSQL_HOST=localhost # MYSQL_USER=root # MYSQL_PASSWORD=password # MYSQL_DATABASE=chilli # 或 PostgreSQL # POSTGRES_HOST=localhost # POSTGRES_USER=postgres # POSTGRES_PASSWORD=password # POSTGRES_DATABASE=chilli ``` --- ## 功能模块 ### 仪表盘 系统概览页面,展示关键指标: - 运行进程数量 - 内存使用率 - 系统运行时间 - 安全威胁统计 - 快捷操作入口 ### 进程管理 - 查看所有运行中的进程 - 搜索和筛选进程 - 查看进程详细信息(PID、内存、端口等) - 终止进程 - 实时更新进程状态 ### 安全扫描 - 自动扫描系统进程的安全漏洞 - 检测常见服务的已知漏洞 - 展示漏洞严重等级(严重/高危/中危/低危) - 提供漏洞详情和修复建议 - 支持手动重新扫描 ### Docker 安全 - 查看 Docker 容器列表 - 检测容器安全配置问题 - 识别特权模式、敏感挂载等风险 - 展示容器资源使用情况 ### IP 访问审计 - 审计关键数据库端口(MySQL:3306 / PostgreSQL:5432 / Redis:6379)的活动连接 - 自动关联连接与进程信息(PID + 进程名) - 基于 `/proc/net/tcp` 解析(Linux)或跨平台 `listeners` 库 fallback - 每 5 秒自动轮询采集,数据持久化至数据库 - 提供 HTTP API 查询最近访问记录 --- ## API 接口 ### 系统状态 | 方法 | 路径 | 描述 | | ---- | --------- | -------- | | GET | `/` | 服务信息 | | GET | `/health` | 健康检查 | ### 进程管理 | 方法 | 路径 | 描述 | | ---- | ---------------- | ------------------ | | GET | `/api/running` | 获取运行中进程列表 | | POST | `/api/kill/:pid` | 终止指定进程 | ### 安全扫描 | 方法 | 路径 | 描述 | | ---- | ---------------------- | ---------------- | | GET | `/api/security/scan` | 执行系统漏洞扫描 | | GET | `/api/security/docker` | 扫描 Docker 安全 | ### 安全公告 | 方法 | 路径 | 描述 | | ---- | ---------------------- | ------------------ | | GET | `/api/advisories` | 获取同步的安全公告 | | POST | `/api/advisories/sync` | 手动触发同步 | ### IP 审计 | 方法 | 路径 | 描述 | | ---- | ----------------------- | --------------------------- | | GET | `/api/ip-access-logs` | 获取最近 IP 访问审计记录 | | 查询参数 | 类型 | 默认值 | 说明 | | -------- | ---- | ------ | ------------------ | | `limit` | u32 | 50 | 返回记录最大数量 | --- ## 技术栈 ### 后端 | 组件 | 用途 | | ---------------------------------------- | --------------- | | [Axum](https://github.com/tokio-rs/axum) | Web 框架 | | [Tokio](https://tokio.rs) | 异步运行时 | | [SeaORM](https://www.sea-ql.org/SeaORM) | ORM 框架 | | [Serde](https://serde.rs) | 序列化/反序列化 | | [sysinfo](https://docs.rs/sysinfo) | 系统信息采集 | | [listeners](https://docs.rs/listeners) | 端口监听检测 | | [reqwest](https://docs.rs/reqwest) | HTTP 客户端 | ### 前端 | 组件 | 用途 | | -------------------------------------------- | ----------- | | [Vue 3](https://vuejs.org) | 前端框架 | | [TypeScript](https://www.typescriptlang.org) | 类型系统 | | [Pinia](https://pinia.vuejs.org) | 状态管理 | | [Vue Router](https://router.vuejs.org) | 路由管理 | | [vue-i18n](https://vue-i18n.intlify.dev) | 国际化 | | [Axios](https://axios-http.com) | HTTP 客户端 | | [Vite](https://vitejs.dev) | 构建工具 | --- ## 测试 ```bash # 运行所有测试 cargo test # 运行单元测试 cargo test --lib # 运行集成测试 cargo test --test integration_tests # 生成测试覆盖率报告 cargo tarpaulin --out Html ``` --- ## 项目结构 ``` chilli/ ├── src/ # 后端源码 │ ├── core/ # 核心业务逻辑 │ │ ├── ip_audit.rs # IP 访问审计引擎 │ │ ├── get_running_process.rs # 进程监控 │ │ └── get_security.rs # 安全扫描 │ ├── models/ # 数据模型 │ │ ├── access_log.rs # 访问日志实体 │ │ ├── users.rs # 用户实体 │ │ └── security.rs # 安全漏洞实体 │ ├── routes/ # API 路由 │ │ ├── ip_access.rs # IP 审计 API │ │ ├── processes.rs # 进程管理 API │ │ └── security.rs # 安全扫描 API │ ├── service/ # 服务层 │ │ └── database.rs # 数据库服务 │ ├── utils/ # 工具函数 │ ├── ip_monitor.rs # IP 审计后台监控任务 │ ├── config.rs # 配置管理 │ └── main.rs # 入口文件 ├── portal/ # 前端源码 │ ├── src/ # Vue 源码 │ │ ├── views/ # 页面组件 │ │ ├── stores/ # Pinia 状态 │ │ └── locales/ # 国际化文件 │ └── dist/ # 构建输出 ├── docs/ # 文档和图片 │ └── demo.png # 界面预览图 ├── Cargo.toml # Rust 依赖 └── README.md # 项目说明 ``` --- **如果这个项目对你有帮助,请给它一个 ⭐️ 星标!** --- ### 🌐 全球捐赠通道 #### 国内用户

🔵 支付宝(小企鹅在收金币哟~)

🟢 微信支付(小绿龙在收金币哟~)
#### 国际用户
--- ### 📌 开发者社交图谱 #### 技术交流
#### 社交互动