XScan-Scheduler 是一个分布式扫描任务调度系统,用于管理和协调多个扫描节点(Agent)执行安全扫描任务。
XScan-Scheduler 作为中央调度器,负责任务分发、节点管理和状态监控。系统通过 RabbitMQ 消息队列进行任务分发,通过 gRPC 心跳服务监控节点状态,并将扫描结果存储在 MySQL 数据库中。
心跳服务 (Heartbeat Service)
消息队列服务 (MQ Service)
config.yaml 文件包含以下主要配置项:
mysql:
delay_time: 5 # 轮询数据库时间间隔(秒)
db:
host: 127.0.0.1
port: 3306
user: root
password: password
dbname: mcp_server
rabbitMQ:
address: 127.0.0.1
port: 5672
user: guest
api_port: 15672
password: guest
logs:
log_level: "debug" # 日志级别:debug, info, warn, error
log_file: "logs/app.log"
max_size_mb: 100
max_backups: 3
max_age: 7
enable_tasks: ["heartbeat_service", "base_mq_service"] # 启用的服务模块
robot:
weixin_webhook: https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=your-key
heartbeat:
port: 8972
host: "0.0.0.0"
节点状态由心跳服务维护,包括以下几种状态:
节点配置包括:
xscan-scheduler/ ├── assets/ # 静态资源 ├── config/ # 配置相关 │ ├── common/ # 通用配置 │ └── module/ # 模块配置 ├── dist/ # 编译输出 ├── logs/ # 日志文件 ├── pkg/ # 公共包 │ ├── application/ # 应用框架 │ ├── dao/ # 数据访问对象 │ ├── log/ # 日志模块 │ ├── messages/ # 消息通知 │ ├── model/ # 数据模型 │ ├── mysql/ # 数据库连接 │ └── proto/ # gRPC 协议定义 ├── service/ # 服务实现 │ ├── heartbeat/ # 心跳服务 │ └── scan_mq/ # 消息队列服务 ├── main.go # 主程序入口 ├── config.yaml # 配置文件 └── Dockerfile # Docker 构建文件
service 目录下创建新的服务包application.Service 接口main.go 中注册新服务config.yaml 的 enable_tasks 中启用新服务本项目采用 LICENSE 许可证。
如有问题或建议,请提交 Issue 或联系项目维护者。