[开源] 给 Komari 写了个负载规则自动管理脚本,CPU / RAM / Disk 自动分组,还能记住手动排除
最近一直在折腾 Komari,机器多了以后发现负载通知规则维护起来有点麻烦。
比如新加一台 VPS,需要手动把它加入 CPU / RAM / Disk 规则;机器删掉、扩容或者调整配置以后,又可能需要重新处理。
所以自己写了一个小工具:
🚀 Komari Auto Load Rules
目前已经整理成 GitHub 项目,并发布了第一个稳定版本:
v3.1.1
✨ 主要功能
目前实现了:
- ➕ 新增 VPS 自动加入负载监控
- ➖ 删除 VPS 自动清理
- 🏷️ VPS 改名不影响规则关联
- ⚙️ CPU / RAM / Disk 规则自动维护
- 🧠 根据 RAM / Disk 容量自动分组
- 🔄 VPS 扩容 RAM / Disk 后自动重新分组
- 🎛️ CPU / RAM / Disk 可以分别人工取消监控
- 💾 自动记忆人工排除状态,不会下一轮又自动加回来
- ♻️ 后台重新勾选后,可以自动识别为人工恢复
- 🆕 支持 0 VPS 状态安装,后续新增节点自动接管
- 🔍 自动识别 Komari 服务、数据库和监听端口
- 🔑 API Key 本地保存并自动验证
- ⏱️ systemd Timer 默认每 10 分钟自动同步
🎛️ 人工排除 / 恢复
其中我自己比较需要的一个功能就是 人工排除记忆。
比如有 24 台 VPS,其中某一台我不想监控 RAM,只需要在 Komari 后台把这台机器从 RAM 规则里取消。
脚本下一轮同步会识别:
人工排除:CPU 0 台 / RAM 1 台 / Disk 0 台
以后自动同步也不会擅自把它重新加入 RAM 规则。
但是:
- CPU 仍然正常监控
- Disk 仍然正常监控
- 只有 RAM 被排除
如果哪天又想恢复 RAM 通知,直接在 Komari 后台重新勾选这台 VPS。
脚本下一轮会自动识别:
检测到人工恢复 RAM: VPS名称
然后根据这台 VPS 当前的 RAM 容量,重新放入正确的 RAM 规则。
也就是说:
CPU / RAM / Disk 三项监控状态相互独立,可以分别取消、分别记忆、分别恢复。
📊 默认负载规则
监控项 |
VPS 条件 |
阈值 |
Ratio |
Interval |
|---|
CPU |
全部 VPS |
90% |
0.8 |
10 分钟 |
RAM |
≥ 1.5 GB |
90% |
0.8 |
10 分钟 |
RAM |
< 1.5 GB |
95% |
0.8 |
10 分钟 |
Disk |
≥ 20 GB |
90% |
0.9 |
60 分钟 |
Disk |
< 20 GB |
85% |
0.9 |
60 分钟 |
小内存和小硬盘 VPS 会自动使用单独的一套阈值。
🚀 一键安装
首先需要在 Komari 后台生成 API Key。
然后在 Komari 主控服务器上使用 root 用户执行:
bash <(curl -fsSL https://raw.githubusercontent.com/TonyStarkJr2021/komari-auto-load-rules/main/install.sh)
安装脚本会自动完成:
检测 Linux 发行版
↓
检测包管理器及依赖
↓
识别 Komari systemd 服务
↓
识别 Komari 程序
↓
识别 Komari 数据库
↓
自动识别 Komari 监听端口
↓
验证 / 保存 API Key
↓
初始化基础负载规则
↓
安装自动同步程序
↓
创建 systemd Timer
↓
执行首次同步
不强制要求 Komari 使用固定端口。
脚本会根据当前 Komari 主控的实际情况自动识别监听端口。
即使 Komari 主控当前:
VPS 数量:0
也可以正常安装。
以后添加 VPS 后,脚本会自动识别并加入对应规则。
🐧 支持的 Linux 环境
目前适配以下包管理器:
Linux 系列 |
包管理器 |
|---|
Debian / Ubuntu / Debian 系 |
apt |
Rocky Linux / AlmaLinux / Fedora / CentOS Stream |
dnf |
CentOS / RHEL 系 |
yum |
Arch Linux |
pacman |
openSUSE |
zypper |
目前要求:
Komari 主控使用 systemd service 方式运行。
Alpine / OpenRC 暂时没有支持。
🧪 实机测试
目前自己已经实际测试:
- ✅ Debian 12
- ✅ Debian 13
- ✅ Komari 默认监听端口
- ✅ Komari 非默认监听端口
- ✅ 0 VPS 空主控安装
- ✅ 24 台 VPS 自动同步
- ✅ CPU 自动监控
- ✅ RAM 自动分组
- ✅ Disk 自动分组
- ✅ 人工取消 RAM 后持续记忆
- ✅ 多轮自动同步不会重新添加人工排除项
- ✅ 人工重新恢复 RAM
- ✅ 恢复后自动进入正确 RAM 分组
- ✅ 恢复后的 RAM 高负载实际触发 Komari 通知
- ✅ systemd Timer 连续周期同步
目前自己的 Komari 主控已经在正常运行。
🔄 自动同步
安装完成以后,不需要再手动执行脚本。
systemd Timer 默认:
每 10 分钟
自动执行一次规则同步。
也可以手动立即执行:
/usr/local/bin/komari-auto-load-rules.py
查看 Timer:
systemctl status komari-auto-load-rules.timer
查看运行日志:
journalctl -u komari-auto-load-rules.service -n 100 --no-pager
📦 GitHub
项目地址:
https://github.com/TonyStarkJr2021/komari-auto-load-rules
当前稳定版本:
v3.1.1
一键安装:
bash <(curl -fsSL https://raw.githubusercontent.com/TonyStarkJr2021/komari-auto-load-rules/main/install.sh)
💬 最后
第一次正经整理 GitHub 开源项目,代码肯定还有可以继续改进的地方。
有使用 Komari 的兄弟可以帮忙测试一下。
特别是:
- Rocky Linux
- AlmaLinux
- Fedora
- Arch Linux
- openSUSE
这些环境我手里的机器没有 Debian 多,如果遇到:
- Komari 安装路径识别问题
- 非默认端口识别问题
- Linux 发行版兼容问题
- API 调用问题
- CPU / RAM / Disk 分组问题
- 人工排除 / 恢复状态问题
- systemd Timer 问题
欢迎直接在帖子里反馈,也可以去 GitHub 提 Issue。
如果大家还有什么比较实用的功能需求,也欢迎提出来,后面再慢慢完善。
项目如果对你有用,欢迎顺手点个 ⭐ Star。