尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
python-docs-samples 实战:Cloud Monitoring API V3 客户端样例全解析(资源列举与自定义指标)
示例工程【免费下载链接】python-docs-samplesCode samples used on cloud.google.com项目地址https://gitcode.com/GitHub_Trending/py/python-docs-samples点击查看免费下载本文是 python-docs-samples 仓库中 Cloud Monitoring 目录下的 API Client 样例指南核心围绕 monitoring/api/v3/api-client/README.rst 展开。Cloud Monitoring 用于采集并分析来自 Google Cloud、AWS、托管探针、应用埋点以及 Cassandra、Nginx、Apache、Elasticsearch 等常见组件的指标、事件与元数据并通过仪表盘、图表和告警生成洞察。读完本文你将掌握如何基于 Google API 客户端库google-api-python-client构建 Cloud Monitoring API V3 客户端完成受监控资源描述符、指标描述符与时间序列三类数据的查询并理解自定义指标读写的基本思路。一、样例概览README 与仓库结构本目录的 README由 README.rst.in 自动生成登记了两个核心样例List resourceslist_resources.py检索 Cloud Monitoring API V3 数据展示受监控资源、指标与时间序列的列举方式Custom metricscustom_metric.py演示连接 Monitoring API 写入自定义指标并读回示例基于一个假设的 GAUGE 测量值。需要说明的是当前仓库快照中list_resources.py及其测试完整存在而custom_metric.py已在目录中移除其用法说明仍保留在 README 中README.rst 第 97-131 行本文据此还原其设计意图。目录还包含集成测试 list_resources_test.py 与依赖清单 requirements.txt、requirements-test.txt。二、运行环境与前置准备2.1 认证配置本样例要求应用具备可用的凭据。官方推荐的方式是通过 Application Default CredentialsADC完成认证为应用设置服务账号或用户凭据后Google API 客户端库会自动从环境变量、gcloud 配置等位置加载凭据。集成测试的注释也印证了这一点——list_resources_test.py 要求GOOGLE_APPLICATION_CREDENTIALS指向一个已启用 Monitoring API 的项目的服务账号见该文件第 17-24 行测试运行的项目 ID 通过GOOGLE_CLOUD_PROJECT环境变量读取。2.2 安装依赖克隆 python-docs-samples 仓库并进入样例目录git clone https://gitcode.com/GitHub_Trending/py/python-docs-samples.git cd monitoring/api/v3/api-client创建虚拟环境并激活README 注明样例兼容 Python 2.7 与 3.4实际当前实现使用 Python 3 特性如带时区的datetime建议使用 Python 3.8virtualenv env source env/bin/activate安装运行依赖pip install -r requirements.txtrequirements.txt 当前锁定三个关键包包版本作用google-api-python-client2.131.0提供googleapiclient.discovery.build动态构建 Monitoring v3 客户端google-auth2.38.0ADC 认证与凭据刷新是客户端调用的认证基础google-auth-httplib20.2.0将 google-auth 凭据桥接到 httplib2 传输层供 API 客户端使用若需运行测试另安装 requirements-test.txt 中的pytest、flaky以及低版本 Python 下的backoff。三、List resources 样例深度解析3.1 命令行参数运行方式与参数在 README.rst 第 73-93 行给出python list_resources.py --project_idYOUR-PROJECT-ID-h, --help显示帮助信息--project_id PROJECT_ID必填指定要访问的 Google Cloud 项目 ID。参数解析实现在 list_resources.py 第 117-125 行使用argparse并声明requiredTrue缺少项目 ID 时程序会直接报错退出。3.2 客户端构建与项目资源定位入口函数main(project_id)第 106-114 行完成了关键初始化client googleapiclient.discovery.build(monitoring, v3) project_resource projects/{}.format(project_id)discovery.build(monitoring, v3)基于 Discovery 文档动态生成 REST 客户端无需手动编写 HTTP 调用代码。随后将项目 ID 组装成 API 资源名projects/project_id作为后续所有 list 请求的name参数。3.3 三类查询受监控资源、指标描述符、时间序列样例依次演示了三个projects.*下的 list 方法1受监控资源描述符——list_monitored_resource_descriptors第 59-71 行client.projects().monitoredResourceDescriptors().list(nameproject_resource)该方法返回该 API 中所有可被监控的资源类型列表如 GCE 实例、Pub/Sub 主题等帮助你了解项目下存在哪些监控维度响应通过pprint.pformat格式化输出。2指标描述符——list_metric_descriptors第 74-84 行client.projects().metricDescriptors().list( nameproject_resource, filtermetric.type{}.format(metric), )与全量列举不同这里使用filter精确过滤出指定的指标类型。样例默认查询的指标为compute.googleapis.com/instance/cpu/usage_time即 Compute Engine 实例的 CPU 使用时间这是 GCP 内置的指标描述符之一。返回值会说明该指标的度量类型如 DELTA/GAUGE/CUMULATIVE、单位与标签结构。3时间序列——list_timeseries第 87-103 行client.projects().timeSeries().list( nameproject_resource, filtermetric.type{}.format(metric), pageSize3, interval_startTimeget_start_time(), interval_endTimeget_end_time(), )这是三个查询中最贴近业务的一个在指定时间窗口内读取该指标的实际采样点。注意这里设置了pageSize3以限制返回条数并通过interval_startTime/interval_endTime划定查询区间。时间窗口的计算逻辑第 34-56 行值得单独说明get_start_time()返回「当前 UTC 时间往前 1 小时 5 分钟」的时刻即窗口起点为 1 小时前再提前 5 分钟get_end_time()返回「当前 UTC 时间往前 1 小时」的时刻即窗口终点为 1 小时前。两者合起来构成一个跨越 5 分钟且完全落在过去的查询窗口这样设计是为了「读回此前写入的自定义指标值」确保窗口覆盖写入发生的时间段。两个函数都基于datetime.datetime.now(tzdatetime.timezone.utc)生成带 UTC 时区的 ISO 8601 字符串避免时区歧义。3.4 运行输出示例执行python list_resources.py --project_idYOUR-PROJECT-ID后程序依次打印三段响应list_monitored_resource_descriptors response: ...受监控资源类型清单list_metric_descriptors response: ...compute.googleapis.com/instance/cpu/usage_time的指标描述符list_timeseries response: ...该指标在最近 5 分钟窗口内至多 3 条时间序列采样点。输出均为 JSON 结构可直接在终端中检查数据结构或进一步接入其他处理逻辑。3.5 源码级验证集成测试如何校验结果list_resources_test.py 对上述三个查询逐一做了集成测试均标记pytest.mark.flaky容忍偶发网络波动测试函数断言内容test_list_monitored_resources输出中出现「An application running」受监控资源描述符的特征文本test_list_metrics输出中出现「Delta」CPU 使用时间指标的度量类型test_list_timeseries输出中包含list_timeseries response:头确认请求成功执行测试通过capsys捕获print输出并用正则校验关键字段从侧面印证了 list_resources.py 的输出格式与 API 响应结构。运行方式export GOOGLE_CLOUD_PROJECTyour-project-id export GOOGLE_APPLICATION_CREDENTIALS/path/to/service-account-key.json pytest list_resources_test.py四、Custom metrics 样例写入并读回自定义指标根据 README.rst 第 97-131 行的记录第二个样例custom_metric.py的设计目标是演示连接 Google Monitoring API 写入自定义指标并读回该示例基于一个假设的 GAUGE 测量值创建自定义指标。其命令行接口与list_resources.py完全一致python custom_metric.py --project_idYOUR-PROJECT-ID--project_id PROJECT_ID必填指定要访问的项目 ID。从 README 的「简单命令行程序」「基于假设的 GAUGE 测量」描述可以推断结合 Monitoring API V3 的标准流程该样例的核心步骤包括创建/确认自定义指标描述符通过projects.metricDescriptors.create定义一个形如custom.googleapis.com/metric-name的指标描述符指定其metricKind为GAUGE瞬时测量值而非累计计数写入时间序列点通过projects.timeSeries.create将带时间戳的采样点写入该指标GAUGE 指标每次写入代表当前时刻的测量快照读回验证利用list_timeseries在时间窗口内查询刚写入的值与list_resources.py中get_start_time()/get_end_time()的 5 分钟回溯窗口设计相呼应——这正是 list_resources.py 中时间窗口特意「再提前 5 分钟」的原因确保写入点落在可查询区间内。需要提醒的是当前仓库快照中已不包含custom_metric.py源文件上述流程为基于 README 描述与 API 语义的还原。若你的项目需要完整可运行的自定义指标样例可参考同仓库 monitoring/snippets/v3/cloud-client/snippets.py 与 quickstart.py 中关于自定义指标的实现二者位于同一 API 版本目录下接口语义一致。五、常见问题与排查建议认证失败401/403确认GOOGLE_APPLICATION_CREDENTIALS已指向启用了 Monitoring API 的项目服务账号且项目已开通 Monitoring API输出为空的时间序列list_timeseries的查询窗口是「1 小时前到 1 小时前 5 分钟」只有该窗口内存在采样点才会返回数据。对于刚写入的自定义指标请确认写入时间落在窗口内指标类型过滤写法filter使用 Monitoring 过滤语法metric.type...引号内为完整指标类型名拼写错误会返回空结果而非报错依赖版本兼容google-api-python-client锁定的 2.131.0 与google-auth-httplib2搭配是官方验证过的组合建议保持版本一致以避免传输层凭据桥接问题。六、总结本文围绕 monitoring/api/v3/api-client/README.rst 完整还原了 Cloud Monitoring API V3 客户端的两个核心场景List resources通过 list_resources.py 展示monitoredResourceDescriptors、metricDescriptors、timeSeries三个 list 方法的用法含过滤语法、分页与时间窗口设计并有 list_resources_test.py 提供可验证的集成测试Custom metrics依据 README 记录还原了「创建 GAUGE 自定义指标 → 写入 → 窗口读回」的闭环思路。这两类操作构成了 Cloud Monitoring 数据接入与查询的最小闭环前者是理解项目监控数据结构的起点后者是业务自定义埋点的基础。掌握googleapiclient.discovery.build(monitoring, v3)构建客户端、projects/{id}资源定位与三类 list 请求的调用模式后你就能在此基础上扩展出告警策略管理、仪表盘查询等更复杂的监控能力。赞分享示例工程【免费下载链接】python-docs-samplesCode samples used on cloud.google.com项目地址https://gitcode.com/GitHub_Trending/py/python-docs-samples点击查看免费下载相关推荐Cloud Healthcare API FHIR 实战指南基于 python-docs-samples 的 Python 客户端示例全解析Cloud Healthcare API FHIR 实战指南基于 python docs samples 的 Python 客户端示例全解析 本文是 pyth示例工程Cloud Healthcare API 数据集管理实战基于 python-docs-samples 的 Python v1 客户端示例全解析Cloud Healthcare API 数据集管理实战基于 python docs samples 的 Python v1 客户端示例全解析 导读 本文围绕示例工程vm0 ESLint自定义规则包122个TS文件里的团队最佳实践沉淀vm0 ESLint自定义规则包122个TS文件里的团队最佳实践沉淀 Okou 是一款连接团队现有工具、跨营销/销售/工程/运营执行任务的 AI 工作台。为了示例工程上一篇10分钟学会今日热榜部署从零到一的完整教程下一篇Cloudflare Computer预览版上手体验5分钟拥有持久化Agent工作空间创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

用Python Tkinter开发反应力测试小游戏:GUI编程与事件驱动实战

用Python Tkinter开发反应力测试小游戏:GUI编程与事件驱动实战

前阵子整理电脑里的 Python 练习项目,翻到一个很早写的“测反应力”小游戏。东西不复杂,核心就一个按钮、一个计时器、几个状态切换,但确实是练Python GUI编程特别合适的入门项目。很多人一提到图形化小游戏,总觉得得用 pygame 这…

📅 2026/10/4 11:08:01
Claude Code Skills 简介:用 SKILL.md 与 Progressive Disclosure 构建 Agent Skills

Claude Code Skills 简介:用 SKILL.md 与 Progressive Disclosure 构建 Agent Skills

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

📅 2026/10/4 11:08:01
MRAM与TM4C1299在工业嵌入式存储中的应用实践

MRAM与TM4C1299在工业嵌入式存储中的应用实践

做工业嵌入式这行,和数据打交道是躲不掉的。最近一个项目中,我用了 Everspin 的 MR25H40CDF(4Mbit SPI MRAM),搭配 TI 的 TM4C1299KCZAD(Cortex-M4F 主控,120MHz 主频),专…

📅 2026/10/4 11:08:01
MORE NEWS

更多资讯

📰

插件系统从设计到落地:plugin.json、TypeScript SDK与CLI全链路实践

1. 从“plugins”这个标题说起:插件系统到底在解决什么问题“plugins”这个词看起来简单,但它背后牵扯的东西一点都不少。我接触过不少项目,标题就叫 plugins,正文却是空的,关键词和摘要也没给。这种情况下&#xff0c…

📰

如何在Zed中运行little-coder:pi-acp桥接与社区扩展生态完全指南

如何在Zed中运行little-coder:pi-acp桥接与社区扩展生态完全指南 【免费下载链接】little-coder A harness optimized to smaller LLMs 项目地址: https://gitcode.com/gh_mirrors/li/little-coder 想在 Zed 的 Agent 面板里直接使用 little-coder&#xff1…

📰

解锁 AI 的“火眼金睛”:OpenClaw 接入腾讯云 OCR 实战指南——从简历识别到智能文档处理的全面进阶|TaoToken 统一 Key 配置

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

📰

Symfony Notifier Mercure 桥接组件实战:DSN 配置、ChatMessage 选项与底层发布原理

后端Web框架 【免费下载链接】symfony The Symfony PHP framework 项目地址: https://gitcode.com/GitHub_Trending/sy/symfony 点击查看 免费下载 Mercure 是一个基于 Server-Sent Events (SSE) 的实时通信协议,Symfony 通过 symfony/mercure-notifier…

📰

不用折腾!最简单的 OpenClaw 本地安装方法(TaoToken 统一 Key 接入版)

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

📰

OpenSPG/KAG 0.8 发布:可配置知识库索引 x 拥抱接入MCP x 系统接口完善,多跳问答效果持续领先

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

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬