“meerkat”在中文中通常翻译为猫鼬或狐獴,属于獴科的一种小型食肉哺乳动物,原产于非洲南部,它们喜欢群居生活,跟小伙伴在一起的时候,总有一个专职“站岗放哨”的哨兵,发现危险后,通过不同频率组合的叫声传递超过20种信息,精准指示天敌类型(如鹰隼、狐狸)和方位,让其它小伙伴及时警觉危险。Meerkat服务器集群实时监控平台的寓意也是像狐獴一样,及早发现服务器的状态异常,及时预警。
背景痛点:如果你是公司的运维人员,要管理几十上百台裸金属服务器,虚拟机,Docker容器,K8s节点,你必须时刻紧盯上面的服务状态,负载性能等各项指标,时刻24小时stand By。
meerkat-admin就是为解决这个痛点而来的,现在有个狐獴帮你主动报警,及时介入。
meerkat-admin是一款基于go原生开发的服务器集群实时监控平台,采用了go gin, gorm,telegraf 采集器,influxDB时序数据库,postgreSQL等技术栈,分为agent端,server端,webserver端,web平台四个模块。Agent端一旦部署在客户机上,主动采集指标,向中心机汇聚、存储与展示,几分钟后就可以在web dashboard看到各项指标。 指标不经 Telegraf 直写 InfluxDB,经 monitor-agent 用 mTLS gRPC 上报到 Collector。
演示网址:https://monitor.phpframe.org/ 商业部署联系作者微信:xdbyvibm6 (注明来意)
已完成的功能:
- [x]内置ssh控制台,可以用户名连接,密钥连接;
- [x]sftp模块,管理服务器文件上传,下载,删除,重命名;
- [x]高危命令过滤,防止出现服务器崩盘;
- [x]SSH命令会话审计,录像回放;
- [x]计划任务,计划任务日志;
- [x]还内置了一套完整的后台管理系统,基于Gin Gorm, Sqlite,(包括完整的用户、部门、角色、岗位、菜单、字典、系统设置、缓存、系统日志、附件等)可以单独独立出来;
下一步计划:
- [ ]完成RDP远程连接,操作
- [ ]告警参数设置
- [ ]告警日志留存
- [ ]告警通知,短信、飞书、邮件等
- [ ]接入大模型对告警进行分析处理,形成报告
- [ ]命令编排等
本仓库是源码 + 本机开发运行包的合集(多个 Go module),未使用 Docker。第三方组件用系统安装包或工作区已解压的二进制;Windows / Linux 均提供一键脚本(见 §8)。
1. 项目概况
| 概念 |
说明 |
| 用途 |
多机 CPU / 内存 / 磁盘 / 网络 / 进程等指标采集;中心控制台查看列表、详情、趋势与告警状态 |
| 规划网段 |
被监控机可以内网机房、混合云、信创环境 可以部署内网、可跨网段、跨云、例如192.168.1~99,中心机 192.168.1.100(本机开发可全部 localhost) |
| 被监控机 |
Telegraf 采集 → monitor-agent 接收、缓存、上报 |
| 中心机 |
Collector 接入 Agent;PostgreSQL 存资产/心跳/告警;InfluxDB 存时序;webserver + Vue 提供登录与 API |
| 角色 |
源码目录 |
典型产物 / 运行目录 |
| 采集器 |
Telegraf/ |
Telegraf/telegraf.exe 或系统 telegraf |
| Agent |
client/ |
client/monitor-agent.exe 或 dist/linux-*/monitor-agent |
| Collector |
server/ |
server/collector.exe 或 dist/linux-*/collector |
| Web API |
webserver/ |
webserver/webserver.exe 或 dist/linux-*/webserver |
| 控制台 |
web/ |
开发 pnpm dev(:3000);生产 web/dist + Nginx |
2. 架构与数据流
2.1 部署视图
中心机
┌────────────────────────────────────────────────────────────┐
│ 浏览器 :3000 ──► Vue(/dev-api 代理到 webserver :8090) │
│ webserver :8090 ──读──► PostgreSQL :5432、InfluxDB :8086 │
│ Collector :9500 (mTLS gRPC) ──写──► PG + InfluxDB │
│ Collector 管理 HTTPS :8080(自签 CA) │
└────────────────────────────┬───────────────────────────────┘
│ gRPC + mTLS
┌────────────────────┼────────────────────┐
▼ ▼ ▼
被监控机 A 被监控机 B 被监控机 N
Telegraf → :9510 同左 同左
monitor-agent monitor-agent monitor-agent
health :9511 health :9511 health :9511
2.2 关键访问关系
| 从 |
到 |
地址 / 说明 |
| Telegraf |
本机 Agent |
http://127.0.0.1:9510/v1/telegraf/metrics(仅回环,成功 204) |
| Agent |
Collector |
server_address,如 192.168.1.100:9500,mTLS |
| Collector / webserver |
PostgreSQL |
默认 localhost:5432 |
| Collector / webserver |
InfluxDB |
默认 http://localhost:8086,org hkc,bucket bucket |
| Vue 开发 |
webserver |
web/.env.development → VITE_APP_API_URL=http://localhost:8090 |
3. 技术栈(按端)
3.1 自研程序(Go / 前端)
| 组件 |
技术 |
说明 |
| monitor-agent |
Go 1.27+,CGO_ENABLED=0 |
gRPC 客户端、SQLite 积压、HTTP 收 Telegraf |
| collector |
Go 1.27+ |
gRPC 服务端、GORM、Influx 写入、Outbox |
| webserver |
Go 1.27+,Gin、JWT |
登录/菜单/监控 API;会话 SQLite |
| 控制台 |
Vue 3、Vite、TypeScript、Element Plus、ECharts、pnpm |
仅中心机需要(开发或构建静态资源) |
| RPC |
gRPC + Protobuf |
protoc 31+ 推荐;插件 protoc-gen-go / protoc-gen-go-grpc |
| 传输安全 |
mTLS |
测试证书:client/cmd/certgen 或 scripts/cert/Generate-mTLSCerts.ps1 |
更多介绍请访问: https://gitee.com/fsscms/Meerkat
欢迎star & follow