vigil

module
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 12, 2025 License: Apache-2.0

README

Vigil

Vigil 是一个功能强大的进程管理和消息队列客户端工具,用于监控、管理系统进程和与多种消息队列系统进行交互。

功能特性

进程管理
  • 进程扫描:基于查询字符串或正则表达式扫描系统进程
  • 进程创建:创建新的托管进程
  • 进程生命周期管理:启动、停止、重启、删除进程
  • 进程状态监控:查看进程状态、资源使用情况
  • 进程配置管理:列出、编辑、获取进程配置
  • 挂载管理:为进程添加、移除和列出挂载点(支持 bind、tmpfs、volume 类型)
资源管理
  • 系统资源监控:查看系统资源使用情况
  • 进程资源监控:查看特定进程的资源使用情况
消息队列客户端

Vigil 支持多种消息队列系统,提供统一的 API 接口:

消息队列 功能 消息计数
Redis 支持发布/订阅消息
RabbitMQ 支持生产/消费消息
RocketMQ 支持生产/消费消息
Kafka 支持生产/消费消息
MQTT 支持发布/订阅消息
Pulsar 支持生产/消费消息
Zookeeper 支持基本操作

所有消息队列客户端都实现了消息计数功能,在退出时会打印生产和消费的消息总数。

其他功能
  • 配置管理:查看和管理系统配置
  • 命令执行:执行命令或脚本
  • 批量扫描:从配置文件加载并扫描多个进程
  • 集成测试:支持多种服务的集成测试,如MQTT测试

项目结构

├── api/              # API 服务器和客户端实现
├── cli/              # 命令行界面实现
├── client/           # 各种消息队列客户端
│   ├── kafka/        # Kafka 客户端
│   ├── mqtt/         # MQTT 客户端
│   ├── pulsar/       # Pulsar 客户端
│   ├── rabbitmq/     # RabbitMQ 客户端
│   ├── redis/        # Redis 客户端
│   ├── rocketmq/     # RocketMQ 客户端
│   └── zookeeper/    # Zookeeper 客户端
├── cmd/              # 命令行入口
│   ├── bbx-cli/      # CLI 入口
│   └── bbx-server/   # 服务器入口
├── common/           # 通用工具函数
├── conf/             # 配置文件
├── config/           # 配置加载和管理
├── docs/             # 文档
├── inspection/       # 检查规则和实现
├── proc/             # 进程管理核心逻辑
├── scripts/          # 脚本文件
├── tests/            # 测试文件
└── version/          # 版本信息

快速开始

启动服务器
# 使用默认配置启动服务器
./bbx-server

# 使用指定配置文件启动服务器
./bbx-server -config path/to/config.yaml

# 指定服务器监听地址
./bbx-server -addr :8080
使用 CLI
# 查看版本信息
./bbx-cli version

# 查看帮助信息
./bbx-cli help

# 扫描进程
./bbx-cli proc scan -q "MQ" -H http://127.0.0.1:8181

# 列出所有托管进程
./bbx-cli proc list

# 查看系统资源
./bbx-cli resources system

# 使用 Redis 发布消息
./bbx-cli redis publish -c channel1 -m "hello world"

# 使用 RocketMQ 发送消息
./bbx-cli rocket send -t topic1 -m "hello rocketmq"

命令行参考

进程管理命令
bbx-cli proc [command]

命令列表:
  scan        扫描进程
  create      创建进程
  start       启动进程
  stop        停止进程
  restart     重启进程
  delete      删除进程
  list        列出进程
  status      检查进程状态
  edit        编辑进程定义
  get         获取进程详情
  mount       管理进程挂载点
资源管理命令
bbx-cli resources [command]

命令列表:
  system      获取系统资源
  process     获取进程资源
消息队列命令

每种消息队列系统都有对应的命令组,例如:

bbx-cli redis [command]
bbx-cli rabbit [command]
bbx-cli rocket [command]
bbx-cli kafka [command]
bbx-cli mqtt [command]
bbx-cli pulsar [command]
bbx-cli zk [command]
集成测试命令

使用集成测试命令可以测试各种服务的功能:

bbx-cli test [service]

目前支持的测试服务:

  • mqtt:MQTT消息队列集成测试
    • bbx-cli test mqtt all:运行所有 MQTT 测试
    • bbx-cli test mqtt v3:运行MQTT 3.1.1 测试
    • bbx-cli test mqtt v5:运行MQTT 5.0 测试
    • bbx-cli test mqtt emqx:运行 EMQX 特定测试

配置文件

服务器配置

服务器配置文件默认路径为 config.yaml,可以通过 -config 参数指定。配置示例:

# 服务器配置示例
server:
  host: "0.0.0.0"
  port: 8181
  timeout: 30s

# 进程管理配置
process:
  default_namespace: "default"
  managed_processes_file: "proc/managed_processes.yaml"
扫描配置

批量扫描配置文件默认路径为 conf/scan.yaml,可以通过 -c 参数指定。配置示例:

# 扫描配置示例
scans:
  - query: "redis-server"
    namespace: "default"
    register: true
  - query: "mongodb"
    namespace: "db"
    register: false

构建

构建所有组件
./build_all.sh
单独构建 CLI
go build -o bbx-cli ./cmd/bbx-cli
单独构建服务器
go build -o bbx-server ./cmd/bbx-server

运行环境

  • Go 1.24.6 或更高版本
  • 支持 Linux、Windows、macOS 等主流操作系统

依赖管理

项目使用 Go Modules 进行依赖管理,主要依赖包括:

  • github.com/spf13/cobra - 命令行框架
  • github.com/IBM/sarama - Kafka 客户端
  • github.com/apache/pulsar-client-go - Pulsar 客户端
  • github.com/apache/rocketmq-client-go/v2 - RocketMQ 客户端
  • github.com/eclipse/paho.mqtt.golang - MQTT 客户端
  • github.com/rabbitmq/amqp091-go - RabbitMQ 客户端
  • github.com/redis/go-redis/v9 - Redis 客户端
  • github.com/samuel/go-zookeeper - Zookeeper 客户端

使用示例

扫描并注册进程
# 扫描包含 "java" 的进程并注册
./bbx-cli proc scan -q "java" -r -H http://127.0.0.1:8181

# 批量扫描并注册进程
./bbx-cli proc scan -b -c conf/scan.yaml -r -H http://127.0.0.1:8181
管理进程
# 启动进程
./bbx-cli proc start my-process

# 停止进程
./bbx-cli proc stop my-process

# 查看进程状态
./bbx-cli proc status my-process

# 列出所有进程
./bbx-cli proc list
使用 Redis 客户端
# 发布消息
./bbx-cli redis publish -c my-channel -m "hello redis"

# 订阅消息
./bbx-cli redis subscribe -c my-channel
使用 RocketMQ 客户端
# 发送消息
./bbx-cli rocket send -t my-topic -m "hello rocketmq"

# 消费消息
./bbx-cli rocket consume -t my-topic -g my-group

消息计数

所有消息队列客户端都会记录生产和消费的消息总数,并在退出时打印:

Total messages produced: 10
Total messages consumed: 5

贡献

欢迎提交 Issue 和 Pull Request!

许可证

Apache License

Directories

Path Synopsis
client
cmd
bbx-cli command
bbx-server command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL