ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Glances 系统监控实战:用 TaoToken 统一 Key 打通命令行与 Web 告警配置

Glances 系统监控实战:用 TaoToken 统一 Key 打通命令行与 Web 告警配置 1. 为什么我把 top、free、df 换成了 Glances如果你日常维护 Linux 服务器大概率经历过这种场景CPU 飙高先敲top内存吃紧再敲free -h磁盘告警又得df -h网络流量还得换iftop或nload。每个命令记一套参数切来切去排查一次问题像在几个窗口之间反复横跳。Glances 想解决的就是这件事——它是一个基于 Python 和 psutil 开发的跨平台系统监控工具一条glances命令就能把 CPU、内存、磁盘、网络、进程、温度、风扇转速等指标整合进同一个终端仪表盘异常项会用颜色标出来扫一眼就知道哪里不对。它适合谁后端开发、运维、以及需要长期盯着服务器状态的人。Glances 不只是个终端工具它还能以 Web 模式运行-w浏览器远程访问支持客户端/服务端架构-s/-c做集中监控数据能导出到 InfluxDB、Prometheus、ClickHouse 等时序库4.5.1 之后还内置了 MCP 支持AI 工具可以直接查询系统状态。但监控落地到生产环境光看仪表盘不够。你还需要两件事一是把告警阈值写进配置让 Glances 主动标记异常二是当异常发生时能快速拿到一份可读的摘要而不是自己对着几十行指标猜。这篇就围绕这两点展开先给出可复制的glances.conf配置骨架和告警阈值再演示怎么用 TaoToken 的统一 Key 把 AI 摘要能力接进来最后附上 curl 验证命令和预期输出确保每一步都能自己跑通。2. TaoToken 前置统一 Key 与 API 通道准备在讲配置之前先把 AI 摘要这条链路的前置条件说清楚。Glances 本身负责采集和展示指标它不负责理解这些指标。当 CPU 连续 5 分钟超过 90%、磁盘使用率逼近 95% 时你希望有人或某个模型帮你把这一堆数字翻译成一句人话比如web-01 的根分区剩余空间不足 8GB建议清理日志。这个翻译动作我们通过调用大模型 API 来完成。TaoToken 在这里扮演的角色是统一入口你不需要为不同模型分别维护 Key 和计费一个 Key 就能走通对话、编码等通道。对 Glances 这种采集端 分析端分离的架构来说统一 Key 意味着你的告警脚本里只需要维护一个环境变量换模型时不用改代码。具体要准备的东西一个 TaoToken 账号登录后在控制台创建 API Key。地址是https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentglances_monitorutm_campaignrewrite创建后复制那串 Key只显示一次。确认你要用的模型通道。如果只是做异常摘要这种短文本任务用模型对话通道即可如果你打算把 Glances 的 MCP 能力和编码 Agent 结合做长期巡检可以了解 Coding Plan。把 Key 写进环境变量不要硬编码进脚本export TAOTOKEN_API_KEYsk-你的Key注意API 基础地址是https://taotoken.net/api这个地址不带任何查询参数直接作为 base_url 使用。控制台和文档里出现的带 UTM 的链接是给页面跳转用的不要混进代码。如果你还没创建 Key先去控制台创建完顺手打开接入文档对照一下请求格式避免后面 curl 报 401 时来回猜。3. 可复制配置glances.conf 骨架与告警阈值Glances 的配置文件默认在~/.config/glances/glances.confLinux或/etc/glances/glances.conf全局。如果文件不存在手动建一个。下面这份骨架覆盖了最常用的几个模块阈值部分我按生产环境的保守值给你可以按自己机器的基线调整。[global] # 刷新间隔秒 refresh2 # 是否在终端显示颜色 check_updatefalse [cpu] # CPU 使用率告警阈值 careful70 warning85 critical95 [mem] # 内存使用率阈值 careful70 warning85 critical95 [swap] careful50 warning70 critical90 [load] # 1 分钟负载按核数比例判断更合理这里给绝对值示例 careful4 warning8 critical16 [fs] # 磁盘使用率按挂载点分别判断 careful70 warning85 critical95 # 忽略的挂载点避免把 tmpfs 也算进来 ignore_fstmpfs,devtmpfs,overlay [network] # 网卡速率阈值单位 bit/s按需调整 careful100000000 warning500000000 critical900000000 [processlist] # 进程列表排序字段和显示数量 sort_keycpu_percent process_short_nametrue max_processes20几个关键点解释一下。careful / warning / critical是 Glances 的三级阈值终端里分别对应黄、橙、红。[fs]段的ignore_fs很重要容器环境里 tmpfs 和 overlay 挂载点会干扰判断不排除掉的话磁盘告警会一直闪。[load]的绝对值阈值只适合固定规格的机器如果你机器核数不固定更稳妥的做法是用glances的插件或外部脚本按load / nproc计算。配置写完后用命令行模式验证阈值是否生效glances --config ~/.config/glances/glances.conf如果某个指标超过warning对应那一行会变色。这一步先确认配置被正确加载再往下接 Web 模式和 AI 摘要。Web 模式启动命令glances -w --config ~/.config/glances/glances.conf默认监听0.0.0.0:61208浏览器打开http://你的服务器IP:61208就能看到 Web 仪表盘。生产环境建议加反向代理和认证别直接暴露公网。4. 验证请求curl 调用 AI 做异常摘要配置和 Web 模式都跑起来后接下来是核心把 Glances 的指标喂给模型让它输出异常摘要。Glances 支持 JSON 输出这是最适合做程序化处理的格式。先拿到当前指标的 JSONglances --stdout cpu,mem,fs --disable-webui /tmp/glances_snapshot.json--stdout会把指定插件的数据以 JSON 打到标准输出。你也可以用 Web 模式的 API 端点效果一样curl -s http://127.0.0.1:61208/api/4/cpu curl -s http://127.0.0.1:61208/api/4/mem curl -s http://127.0.0.1:61208/api/4/fs拿到 JSON 后构造一个请求发给 TaoToken 的对话通道。下面这条 curl 可以直接复制运行把$TAOTOKEN_API_KEY换成你的 Keycurl -s https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d { model: claude-3-5-sonnet, messages: [ { role: system, content: 你是运维助手。用户会给你一段 Glances 采集的系统指标 JSON请用中文输出不超过 3 条的异常摘要每条一句话指出指标、当前值和可能原因。没有异常就回复“指标正常”。 }, { role: user, content: CPU 使用率 92%内存使用率 88%根分区 / 使用率 96%剩余 3.2GB。 } ], max_tokens: 300 }预期输出结构大致是这样实际措辞会因模型不同略有差异{ choices: [ { message: { role: assistant, content: 1. CPU 使用率 92%接近临界值可能存在计算密集型进程持续占用。\n2. 根分区 / 使用率 96%剩余 3.2GB建议清理日志或扩容。\n3. 内存使用率 88%需关注是否有进程内存泄漏。 } } ] }如果你在终端里直接跑可以用jq把 content 抽出来看curl -s https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d {model:claude-3-5-sonnet,messages:[{role:user,content:CPU 92%内存 88%根分区 96% 剩余 3.2GB输出异常摘要}],max_tokens:300} \ | jq -r .choices[0].message.content到这里链路就通了Glances 采集 → JSON 输出 → TaoToken 对话通道 → 中文摘要。你可以把这个逻辑包成一个 shell 脚本配合 cron 每 5 分钟跑一次只在检测到critical阈值时才调用模型避免无谓的 token 消耗。如果你更想手动验证模型通道是否正常可以直接打开模型对话页面发一条测试消息确认 Key 和通道都没问题再回到脚本里调试。5. 本篇常见错排查报错一glances: command not foundpip 安装后命令不在 PATH 里常见于用pip install --user的情况。检查~/.local/bin是否在 PATH 中或者直接用python -m glances启动。用 pipx 或 uvx 安装的话一般不会有这个问题。报错二Web 模式启动后浏览器打不开先确认端口监听ss -tlnp | grep 61208。如果只监听了127.0.0.1说明绑定地址不对加-B 0.0.0.0参数。如果是云服务器检查安全组是否放行了 61208 端口。另外注意-w和--disable-webui不要同时用后者会关掉 Web 界面。报错三curl 返回 401 Unauthorized九成是 Key 的问题。确认$TAOTOKEN_API_KEY环境变量在当前 shell 里真的存在echo $TAOTOKEN_API_KEY。如果是在脚本里跑注意脚本执行环境可能没有继承你交互式 shell 的环境变量需要在脚本里显式 export 或从配置文件读取。另外确认请求头是Authorization: Bearer sk-xxxBearer 和 Key 之间有一个空格。报错四curl 返回 404 或连接超时检查 base_url 是不是写成了带路径的形式。正确的基础地址是https://taotoken.net/api对话端点是/v1/chat/completions拼起来是https://taotoken.net/api/v1/chat/completions。如果你把控制台页面的带 UTM 链接复制进了代码那肯定不对那些参数是给浏览器跳转用的。报错五Glances 阈值配置不生效最常见的原因是配置文件路径不对。Glances 按--config参数 环境变量 默认路径的顺序查找。用glances --config 你的路径显式指定最稳妥。另外注意 ini 文件的 section 名必须和插件名完全一致[cpu]写成[CPU]在某些版本下不识别。报错六JSON 输出里中文乱码--stdout默认按系统 locale 编码输出。如果 locale 是C或POSIX中文会乱。临时解决LC_ALLen_US.UTF-8 glances --stdout ...或者干脆只取数值字段不取带中文的进程名。6. 把监控链路固定下来的几个习惯配置和验证都跑通之后真正决定这套方案能不能长期用的是习惯不是工具本身。我自己踩过的坑是一开始把阈值设得太敏感结果告警天天响后来干脆不看了。阈值应该基于你机器一周的基线数据来定而不是拍脑袋。第二个习惯是把 AI 摘要做成按需触发。不是每次采集都调模型而是先用 Glances 自己的阈值判断只有出现critical时才把 JSON 发给模型。这样既省 token又避免摘要噪音淹没真正的问题。第三个习惯是保留原始 JSON。模型摘要可能漏掉细节出问题时你需要回看原始指标。建议把每次触发摘要时的 JSON 快照存一份按日期归档排查历史问题时很有用。如果你打算把这条链路扩展到多台机器Glances 的客户端/服务端模式-s/-c可以让你在一台机器上集中查看所有节点的状态AI 摘要脚本也只需要在一个地方维护。再进一步如果你想让 AI 直接通过 MCP 查询 Glances 而不走 JSON 中转可以在 Web 模式加--enable-mcp然后让支持 MCP 的编码工具直连——这条路适合做长期巡检和自动化修复的团队可以了解 Coding Plan 的通道配置方式。
返回列表