Glances Cloud 插件详解:基于 OpenStack 元数据服务识别云主机实例信息
指标监控监控大盘CLI告警MCP 服务【免费下载链接】glancesGlances an Eye on your system. A top/htop alternative for GNU/Linux, BSD, macOS and Windows operating systems.项目地址https://gitcode.com/gh_mirrors/gl/glances点击查看免费下载导读本文围绕 docs/aoa/cloud.rst 讲解的cloud 插件展开当你的主机运行在 OpenStack含 Amazon EC2 兼容 API 的云平台上时Glances 可以通过标准的 OpenStack 元数据服务metadata service自动获取云平台、实例 ID、实例类型、实例名称与可用区等信息并显示在 TUI 界面中。读完本文你将掌握该插件的启用方式、配置项含义、底层采集原理两个异步线程与字段映射关系以及实际运行的前提条件与排查要点。一、插件功能概述cloud 插件的目的非常单一且明确识别宿主机所在的数据中心/云平台环境并把实例的元信息呈现出来。官方文档的描述为This plugin displays information about the cloud provider if your host is running on OpenStack.也就是说它不是通用云监控插件而是专门面向OpenStack及其EC2 兼容 API的场景。从 插件源码 的模块注释可以确认其支持的云 API 范围ThreadOpenStack标准VanillaOpenStack 元数据服务ThreadOpenStackEC2兼容 Amazon EC2 元数据服务的 OpenStack 环境。该插件默认处于禁用状态需要显式启用后才会启动采集线程。二、工作原理OpenStack 元数据服务OpenStack Nova 为实例提供了一套实例内的元数据服务metadata service虚拟机可以通过一个保留的链路本地地址访问IPv4169.254.169.254IPv6fe80::a9fe:a9fecloud 插件正是基于这一机制在实例内部发起 HTTP 请求来读取平台下发的元数据无需任何云平台账号或认证信息。官方文档将这一入口称为 standard OpenStack metadata service。从源码看插件定义了两套 API 地址与字段映射glances/plugins/cloud/init.py平台API 根地址字段映射OpenStackhttp://169.254.169.254/openstack/latest/meta-dataid ← project_idname ← nametype ← meta/roleregion ← availability_zoneAmazon EC2兼容http://169.254.169.254/latest/meta-dataid ← ami-idname ← instance-idtype ← instance-typeregion ← placement/availability-zone最终汇总的 stats 是一个字典包含五个键stats { id: # 项目 ID / AMI ID name: # 实例名称 / 实例 ID type: # 角色 / 实例类型 region: # 可用区 platform # OpenStack 或 Amazon EC2 }源码中甚至保留了一段仅供本机测试用的示例glances/plugins/cloud/init.pystats {id: ami-id, name: My VM, type: Gold, region: France, platform: OpenStack}三、启用与配置3.1 命令行启用由于插件默认禁用官方文档明确要求通过--enable-plugin cloud选项启用glances --enable-plugin cloud--enable-plugin别名--enable-plugins/--enable是 Glances 全局插件开关定义于 glances/main.py支持逗号分隔的插件列表。与之配套的还有--disable-plugin别名--disable-plugins/--disable支持all关键字glances/main.py例如只保留 cloud 插件glances --disable-plugin all --enable-plugin cloud3.2 配置文件配置Glances 的默认配置文件 conf/glances.conf 中包含完整的[cloud]小节conf/glances.conf[cloud] # This plugin is disabled by default disableTrue # Refresh rate for this plugin (in seconds). Default is the global refresh rate. # Cloud metadata API calls are slow. refresh120两个配置项的含义disableTrue默认关闭插件这与文档disable by default的描述一致refresh120该插件独立的刷新周期秒不跟随全局刷新率。配置注释明确说明原因——云元数据 API 调用较慢因此把刷新间隔拉长到 120 秒避免频繁发起元数据请求。从源码看插件的启停判定最终由插件基类 glances/plugins/plugin/model.py 的is_enabled()/is_disabled()完成它优先读取disable_cloud参数配置文件disableTrue会映射到该参数否则回退到enable_cloud由--enable-plugin设置返回d is False作为最终判定结果。也就是说配置文件与命令行开关是同一套判定逻辑的两种入口。3.3 依赖要求cloud 插件依赖 Pythonrequests库glances/plugins/cloud/init.py。若环境中缺少requests插件会打印告警日志 Missing Python Lib (...), Cloud plugin is disabled并自动禁用自身且采集线程会立即停止glances/plugins/cloud/init.py。因此启用前请确认依赖已安装。四、TUI 界面输出格式当插件启用、且成功从元数据服务取回数据时TUI 界面会显示一行云平台信息。输出逻辑位于 glances/plugins/cloud/init.py 的msg_curse()第一段以标题样式TITLE显示platform即OpenStack或Amazon EC2第二段显示{type} instance {name} ({region})。对应的渲染模板为msg self.stats.get(platform, Unknown) # 例OpenStack msg {} instance {} ({}).format( self.stats.get(type, Unknown), # 例Gold / m1.small self.stats.get(name, Unknown), # 例My VM / i-xxxx self.stats.get(region, Unknown), # 例France / us-east-1a )有两个值得注意的细节无数据时不显示若 stats 为空或插件被禁用msg_curse()直接返回空glances/plugins/cloud/init.py信息不完整时不显示若拿不到platform或name同样不渲染避免输出 Unknown 噪声——这是针对 issue #2485 的显式处理glances/plugins/cloud/init.py。因此在实际 TUI 中只有数据完整可用时你才会看到 cloud 那一行。五、源码级实现解析两个采集线程cloud 插件最核心的实现特点是用两个后台线程异步抓取元数据避免阻塞 Glances 主循环。5.1 线程生命周期在 CloudPlugin.init中只有is_enabled()判定插件已启用时才会创建并启动两个线程if self.is_enabled(): self.OPENSTACK ThreadOpenStack() self.OPENSTACKEC2 ThreadOpenStackEC2() self.OPENSTACK.start() self.OPENSTACKEC2.start()插件退出时exit() 会依次调用两个线程的stop()通过线程内部的threading.Event安全收尾。5.2 采集流程与回退逻辑update()的更新策略glances/plugins/cloud/init.py是stats self.OPENSTACK.stats if not stats: stats self.OPENSTACKEC2.stats即优先使用标准 OpenStack 元数据若为空说明当前环境不是 Vanilla OpenStack则回退到 EC2 兼容 API。5.3 字段抓取与超时ThreadOpenStack.run()glances/plugins/cloud/init.py按OPENSTACK_API_METADATA定义的字段逐条发起请求r requests.get(r_url, timeout3)超时设为3 秒代码注释解释为本地请求3 秒超时足够glances/plugins/cloud/init.py任一请求失败异常或非 OK 状态都会break此时不会写入platform字段整个 stats 保持为空从而触发上面的 EC2 回退只有当四个字段全部成功获取循环正常走完else分支时才设置platform OpenStackglances/plugins/cloud/init.py。这种全部成功才认定平台的设计保证了不会把残缺数据当成有效结果。ThreadOpenStackEC2继承自ThreadOpenStack仅覆盖平台名、API 地址和字段映射三处常量glances/plugins/cloud/init.py。六、适用前提与限制基于文档与源码使用 cloud 插件需要满足以下前提缺一不可运行在 OpenStack 云上含提供 EC2 兼容元数据服务的环境。在物理机、普通虚拟机或非 OpenStack 云如仅提供 AWS 原生元数据的场景需另行确认兼容性上插件不会取到数据实例能访问链路本地地址169.254.169.254。若云网络策略屏蔽了该地址采集会因超时失败插件静默无输出Python 环境已安装requests否则插件直接禁用显式启用插件通过--enable-plugin cloud或修改配置文件的disableFalse。几点限制说明该插件默认禁用、不参与默认输出需要按上文方式手动开启刷新周期独立为 120 秒修改refresh值可调整元数据请求频率不建议设得过低元数据 API 调用较慢从仓库结构看tests 目录中暂未见针对 cloud 插件的独立测试文件功能验证主要依赖真实 OpenStack 环境下的运行表现本地调试时可参考源码中注释掉的示例 stats 字典进行模拟。七、快速排障清单当 TUI 中看不到 cloud 信息时可按以下顺序排查现象可能原因处理方式日志出现 Missing Python Lib未安装requests安装依赖后重启 Glances无输出且插件已启用非 OpenStack 环境或元数据地址不可达在实例内curl http://169.254.169.254/openstack/latest/meta-data验证可达性输出 Unknown数据不完整插件按 issue #2485 逻辑隐藏检查元数据服务是否返回了完整字段想临时验证效果本地无云环境参考源码中测试用的示例 stats 字典仅测试用途结语cloud 插件是 Glances 众多插件中定位最聚焦的一个它只做一件事——通过 OpenStack 标准元数据服务识别宿主机云环境并把平台、实例类型、名称与可用区以一行信息呈现。其双线程异步采集 全字段成功才认定平台 EC2 自动回退的实现方式既保证了不阻塞主界面也保证了数据的可靠性。结合 docs/aoa/cloud.rst 的文档说明、插件源码 与 默认配置你可以快速在 OpenStack 云主机上启用并验证该功能。赞分享指标监控监控大盘CLI告警MCP 服务【免费下载链接】glancesGlances an Eye on your system. A top/htop alternative for GNU/Linux, BSD, macOS and Windows operating systems.项目地址https://gitcode.com/gh_mirrors/gl/glances点击查看免费下载相关推荐ESP32 GNSS 定位实战4步搞定从接线到深睡低功耗的 GPS 终端ESP32 GNSS 定位实战4步搞定从接线到深睡低功耗的 GPS 终端 本文解决一个问题用 ESP32 加一块 GNSS 模块做出能长期运行的定位终端从嵌入式物联网驱动开发视频看完就忘BiliNote让AI视频笔记生成一键完成省下一大半整理时间视频看完就忘BiliNote让AI视频笔记生成一键完成省下一大半整理时间 你的收藏夹里是不是也躺着几十个标着以后再看的教程、讲座和网课真正打开时往AI 应用大模型RAG语音后端前端桌面应用5步掌握Umi-OCR让扫描PDF文档焕发新生的终极指南5步掌握Umi OCR让扫描PDF文档焕发新生的终极指南 在数字化办公时代我们每天都会遇到各种扫描版PDF文档——合同、报告、论文、档案这些文档虽然保留了OCR桌面应用创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

DataHub SageMaker 元数据摄取指南:Feature Groups、模型、任务与血缘的端到端接入

DataHub SageMaker 元数据摄取指南:Feature Groups、模型、任务与血缘的端到端接入

DataHub SageMaker 元数据摄取指南:Feature Groups、模型、任务与血缘的端到端接入 【免费下载链接】datahub The Context Platform for your Data and AI Stack 项目地址: https://gitcode.com/GitHub_Trending/da/datahub 本文基于 DataHub 官方源文档&…

2026/9/20 22:22:35 阅读更多 →
Windows下nvm-windows完全指南:安装、切换与镜像加速

Windows下nvm-windows完全指南:安装、切换与镜像加速

我在 Windows 上折腾 Node.js 这些年前前后后换过几十个版本。有一阵子全靠官网安装包来回卸载重装,结果就是各种环境冲突,直到用上 nvm-windows 才算是真正解脱。这篇就把 Windows 下 nvm 的完整玩法一次讲清楚,从安装、环境变量&#xff0c…

2026/9/20 23:51:21 阅读更多 →
电赛实用信号源设计:DDS与STM32实现频率步进和稳定度控制

电赛实用信号源设计:DDS与STM32实现频率步进和稳定度控制

简介:全国大学生电子设计竞赛培训资料中的题目二,聚焦实用信号源的设计与制作,面向电子类参赛学生和指导老师,尤其适合备赛阶段梳理正弦波与脉冲波信号源的指标要求与技术方案。文档完整收录赛题任务、基本要求与发挥部分&#xf…

2026/9/20 23:01:56 阅读更多 →

最新新闻

Spring OAuth2 登录后跳不回 origin url?TaoToken 这样让 Codex 改对 LoginSuccessHandler

Spring OAuth2 登录后跳不回 origin url?TaoToken 这样让 Codex 改对 LoginSuccessHandler

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/20 23:51:56 阅读更多 →
小爱音箱免费听全网音乐:XiaoMusic 三步完整部署与进阶玩法指南

小爱音箱免费听全网音乐:XiaoMusic 三步完整部署与进阶玩法指南

小爱音箱免费听全网音乐:XiaoMusic 三步完整部署与进阶玩法指南 【免费下载链接】xiaomusic 使用小爱音箱播放音乐,音乐使用 yt-dlp 下载。 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaomusic XiaoMusic 是一个开源项目,能…

2026/9/20 23:51:56 阅读更多 →
GraphCast 如何用图神经网络把全球中程天气预报做到 0.25° 精度

GraphCast 如何用图神经网络把全球中程天气预报做到 0.25° 精度

GraphCast 如何用图神经网络把全球中程天气预报做到 0.25 精度 【免费下载链接】weathernext 项目地址: https://gitcode.com/GitHub_Trending/gr/weathernext GraphCast 是 Google DeepMind 开源的全球中程天气预测模型,可在 0.25 分辨率上逐步推演温度、风…

2026/9/20 23:51:56 阅读更多 →
基于 Podman libpod 构建派生项目:REST API、子进程与 Vendoring 三条集成路线的选型与实践

基于 Podman libpod 构建派生项目:REST API、子进程与 Vendoring 三条集成路线的选型与实践

基于 Podman libpod 构建派生项目:REST API、子进程与 Vendoring 三条集成路线的选型与实践 【免费下载链接】podman Podman: A tool for managing OCI containers and pods. 项目地址: https://gitcode.com/gh_mirrors/po/podman 本篇技术指南以 Podman 仓库…

2026/9/20 23:51:56 阅读更多 →
Reference an image in: /sub1/

Reference an image in: /sub1/

Reference an image in: /sub1/ 【免费下载链接】mkdocs Project documentation with Markdown. 项目地址: https://gitcode.com/gh_mirrors/mk/mkdocs Relative path [![Image](https://raw.gitcode.com/gh_mirrors/mk/mkdocs/raw/2862536793b3c67d9d83c33e0dd6d50a79…

2026/9/20 23:51:56 阅读更多 →
CANN ops-math 数学算子 IsNan 详解:源码实现、图模式调用与工程验证

CANN ops-math 数学算子 IsNan 详解:源码实现、图模式调用与工程验证

算子库人工智能CANN 【免费下载链接】ops-math 本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-math 点击查看 免费下载 导读 IsNan 是 CANN ops-math 数学算子库(math/ 目录&…

2026/9/20 23:50:56 阅读更多 →

日新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/20 0:00:46 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/20 0:00:46 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/20 0:00:46 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/20 0:00:46 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/19 23:01:36 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/19 17:50:38 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →