惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Engineering at Meta
Engineering at Meta
月光博客
月光博客
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
Visual Studio Blog
大猫的无限游戏
大猫的无限游戏
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
量子位
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
腾讯CDC
S
Securelist
Know Your Adversary
Know Your Adversary
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
博客园 - 【当耐特】
V2EX - 技术
V2EX - 技术
J
Java Code Geeks
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Hugging Face - Blog
Hugging Face - Blog
Cisco Talos Blog
Cisco Talos Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
阮一峰的网络日志
阮一峰的网络日志
美团技术团队
W
WeLiveSecurity
S
SegmentFault 最新的问题
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
宝玉的分享
宝玉的分享
博客园 - Franky
S
Security Affairs
博客园 - 司徒正美
V
V2EX
K
Kaspersky official blog
T
Threatpost
NISL@THU
NISL@THU
博客园 - 叶小钗
Help Net Security
Help Net Security
PCI Perspectives
PCI Perspectives
IT之家
IT之家
小众软件
小众软件
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Last Week in AI
Last Week in AI
Jina AI
Jina AI
爱范儿
爱范儿
罗磊的独立博客
N
News and Events Feed by Topic
博客园 - 三生石上(FineUI控件)
有赞技术团队
有赞技术团队
P
Proofpoint News Feed
L
LINUX DO - 热门话题
Google Online Security Blog
Google Online Security Blog
雷峰网
雷峰网
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint

奕奕 Blog

法国和西班牙能在世界杯决赛相遇吗? 奕奕 Blog: 法国和西班牙能在世界杯决赛相遇吗? OpenViking 记忆提取挂了三天,最后发现是模型太聪明 奕奕 Blog: OpenViking 记忆提取挂了三天,最后发现是模型太聪明 Hermes Mini App 监控面板开发实录 OCI ARM 实例的 iowait 假象 奕奕 Blog: OCI ARM 实例的 iowait 假象 当“家”的重担,悄然落在肩头 奕奕 Blog: 当“家”的重担,悄然落在肩头 我的抖音号被“永封” 奕奕 Blog: 我的抖音号被“永封” 鱼缸炸缸风险评估 奕奕 Blog: 鱼缸炸缸风险评估 烟雨西北 奕奕 Blog: 烟雨西北 三色发糕制作教程 奕奕 Blog: 三色发糕制作教程 QQ官方机器人无需审核快速发布正式版 奕奕 Blog: QQ官方机器人无需审核快速发布正式版 win11代理设置劫持--自动打开“使用设置脚本” 奕奕 Blog: win11代理设置劫持--自动打开“使用设置脚本” AI模型的Token到底是什么 奕奕 Blog: AI模型的Token到底是什么 为什么我选择放弃"暗色模式切换按钮" 奕奕 Blog: 为什么我选择放弃"暗色模式切换按钮" QQ机器人插件 奕奕 Blog: QQ机器人插件 Blogger优化,解决 Blogger 动态插入外部资源的问题 奕奕 Blog: Blogger优化,解决 Blogger 动态插入外部资源的问题 个人主页代码 奕奕 Blog: 个人主页代码 隐藏Waline的登录按钮 奕奕 Blog: 隐藏Waline的登录按钮 谷歌云GCP 永久免费服务器申请教程 奕奕 Blog: 谷歌云GCP 永久免费服务器申请教程 当AI 看到你的博客 奕奕 Blog: 当AI 看到你的博客 决定恢复 Blogger 版权信息 奕奕 Blog: 决定恢复 Blogger 版权信息 学习戴隐形眼镜小窍门 奕奕 Blog: 学习戴隐形眼镜小窍门 让 Blogger 标签栏默认展开 奕奕 Blog: 让 Blogger 标签栏默认展开 利用CDN边缘函数缓存外部文件 奕奕 Blog: 利用CDN边缘函数缓存外部文件 孩子出院了 奕奕 Blog: 孩子出院了 操啊,女儿进了新生儿科 奕奕 Blog: 操啊,女儿进了新生儿科 迎接新生命:我的女儿锦瑶诞生记 奕奕 Blog: 迎接新生命:我的女儿锦瑶诞生记
奕奕 Blog: Hermes Mini App 监控面板开发实录
奕奕Blog · 2026-04-21 · via 奕奕 Blog

给 Telegram 上的 AI 助手做了个监控面板,塞在 Mini App 里,实时看服务器状态。部署在 tg.eebk.com,Flask 后端 + nginx 反代 + EdgeOne CDN,跑了几天挺稳。

左边是 Telegram 聊天记录,右边是 Mini App 面板。CPU 83%、内存 24.8%、磁盘 8.4%,四个核心的使用率一目了然。

做这个的起因很简单——经常想看服务器状态,但每次要 SSH 上去跑 top 太麻烦。Telegram Mini App 直接在聊天里打开,点一下就行。

做了什么

面板分三个 Tab:监控看系统状态,Hermes管 AI 助手,维护跑运维操作。

监控页实时显示 CPU 每核使用率、内存、磁盘、网络上下行、系统负载。下面一排是服务健康状态:Hermes 核心、Gateway、Ollama、Nginx、Docker 之类的,绿点亮着就说明正常。

技术选择

实时数据用 SSE 推送,Flask 那边 Response(generator(), mimetype='text/event-stream'),前端 EventSource 自动重连。比 WebSocket 简单,比轮询实时,适合这种单向推送场景。

API 端点分几块:/api/dashboard 系统数据,/api/hermes/* AI 助手相关,/api/ops/* 运维操作,/api/stream SSE 实时推送,/api/blog-widget 给博客侧边栏卡片用。

数据本地缓存 30 秒,不用每次都重新算。静态资源走 EdgeOne CDN,图片链路是 Cloudflare → EdgeOne → 腾讯 COS 三级缓存。

安全

源站 IP 不暴露,tg.eebk.com 接入 EdgeOne CDN。nginx 配了白名单,只放 EdgeOne 回源 IP 进来。维护页面额外加了 IP 白名单 + 密码验证。

博客侧边栏

顺便给博客做了个监控卡片,放在侧边栏 Time machine 下面。复用 /api/blog-widget 接口,30 秒刷新一次,CORS 只开给 www.eebk.com

备份

每天凌晨 3 点自动备份到 /home/ubuntu/www/mini-app/backups/,保留最近 10 个版本。源码放 GitHub:ee-blog/hermes-mini-app