LinuxAwesomeBot: OneBot 11 Linux monitoring bot (power/CPU/temp/alerts)
This commit is contained in:
commit
b1ffd86bd9
12 files changed
+1468
No files matched your search
@@ -0,0 +1,94 @@
|
||||
# LinuxAwesomeBot
|
||||
|
||||
轻量级 OneBot 11 Python 机器人:查看 Linux 功耗/CPU/内存/温度/网络,并在 CPU 高负载时主动提醒并列出高负载进程。
|
||||
|
||||
基于 `aiohttp` + `psutil`,机器人作为**反向 WebSocket 服务端**运行,NapCat / Lagrange / go-cqhttp 等 OneBot 实现端主动连入。
|
||||
|
||||
## 安装
|
||||
|
||||
```bash
|
||||
pip install aiohttp psutil
|
||||
```
|
||||
|
||||
## 配置
|
||||
|
||||
```bash
|
||||
cp config.example.toml config.toml
|
||||
# 编辑 config.toml:端口、access_token、告警群号/好友号、CPU 阈值
|
||||
```
|
||||
|
||||
## 启动机器人
|
||||
|
||||
```bash
|
||||
python bot.py
|
||||
```
|
||||
|
||||
## OneBot 实现端配置(以 NapCat 为例)
|
||||
|
||||
在 NapCat 的 `onebot11` 网络配置中添加**反向 WebSocket**:
|
||||
|
||||
```json
|
||||
{
|
||||
"ws": {
|
||||
"enable": true,
|
||||
"url": "ws://127.0.0.1:8765/ws",
|
||||
"token": ""
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
`token` 需与 `config.toml` 的 `access_token` 一致(都留空也可)。
|
||||
|
||||
## 聊天命令
|
||||
|
||||
群聊需 @机器人 或使用 `/`、`!` 前缀;私聊直接发。
|
||||
|
||||
| 命令 | 说明 |
|
||||
|---|---|
|
||||
| `/status` 或 `状态` | 总览:功耗、CPU、负载、内存、最高温度、网速、运行时间 |
|
||||
| `/power` 或 `功耗` | 功耗详情(电池功率 / Intel RAPL 各域瓦数) |
|
||||
| `/top` 或 `进程` | CPU 占用 TOP10 进程 |
|
||||
| `/temp` 或 `温度` | 各传感器温度 |
|
||||
| `/net` 或 `网络` | 网络上下行速率 |
|
||||
| `/help` 或 `帮助` | 命令帮助 |
|
||||
|
||||
## 高负载告警
|
||||
|
||||
后台每 10 秒采样,CPU 连续 2 次超过阈值(默认 85%)即向配置的群/好友推送告警,
|
||||
消息包含当前 CPU%、负载和 TOP5 高负载进程(PID/名称/CPU/内存/用户)。同一轮高负载期间
|
||||
冷却 10 分钟不重复告警;回落到阈值以下会发送恢复通知。以上均可在 `config.toml` 的 `[alert]` 中调整。
|
||||
|
||||
## 功耗说明
|
||||
|
||||
- 笔记本:读取 `/sys/class/power_supply/BAT*/power_now`
|
||||
- Intel CPU:读取 RAPL `/sys/class/powercap/intel-rapl:*/energy_uj`,两次采样差分计算瓦数
|
||||
- AMD CPU / 多数虚拟机 / 云主机:无硬件计数器,`/power` 会提示不支持(属正常)
|
||||
|
||||
## 本地测试(Windows 也可)
|
||||
|
||||
```bash
|
||||
python test_fake_onebot.py
|
||||
```
|
||||
|
||||
模拟一个 OneBot 实现端连入并逐条发送命令,验证机器人的回复。
|
||||
|
||||
## systemd 部署(Linux)
|
||||
|
||||
```ini
|
||||
# /etc/systemd/system/linuxawesomebot.service
|
||||
[Unit]
|
||||
Description=LinuxAwesomeBot
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
WorkingDirectory=/opt/LinuxAwesomeBot
|
||||
ExecStart=/usr/bin/python3 bot.py
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
```bash
|
||||
systemctl enable --now linuxawesomebot
|
||||
```
|
||||
Reference in new issue
Block a user