如何使用基于令牌的访问获取虚拟机的 GCP 配额限制

2024-05-04

我想使用基于令牌的访问来获取 GCP VM 限制。 下面是我的Python代码。

from googleapiclient import discovery
from oauth2client import AccessTokenCredentials
import httplib2

token = 'xyz'
credentials = AccessTokenCredentails(access_token=token, user_agent='MyAgent')
http = credentials.authorize(httplib2.Http())
service = discovery.build('serviceusage', 'v1', http=http)
#...
# code to get the GCP Quota for VM.

在运行 terraform 来创建资源之前,我必须在创建虚拟机之前获取配额,以确保可用的实例数量。


要获取有关实际资源使用情况的值,您可以使用云监控API https://cloud.google.com/monitoring/docs/apis消费者配额 https://cloud.google.com/monitoring/api/resources#tag_consumer_quota资源。它不会是百分比,而是实际值。

例如:

您想知道有多少个虚拟机us-central1

有一个metric https://cloud.google.com/monitoring/api/resources#tag_consumer_quota为了那个原因:serviceruntime.googleapis.com/quota/allocation/usage。它提供了实际使用情况。

然后你可以创建 MQL https://cloud.google.com/monitoring/mql/query-editor查询以过滤您需要的所有内容:

fetch consumer_quota
| metric 'serviceruntime.googleapis.com/quota/allocation/usage'
| filter
    (resource.service == 'compute.googleapis.com')
    && (metric.quota_metric == 'compute.googleapis.com/instances')
| group_by 1d, [value_usage_aggregate: aggregate(value.usage)]
| every 1d

现在——当你使用curl通过API运行它 https://cloud.google.com/monitoring/mql/qn-from-api#ql-timeseries-query:

curl -d @query.json -H "Authorization: Bearer $TOKEN" \
--header "Content-Type: application/json" -X POST \
https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/timeSeries:query

您将得到回复:

{
  "timeSeriesDescriptor": {
    "labelDescriptors": [
      {
        "key": "resource.project_id"
      },
      {
        "key": "resource.service"
      },
      {
        "key": "resource.location"
      },
      {
        "key": "metric.quota_metric"
      }
    ],
    "pointDescriptors": [
      {
        "key": "value_usage_aggregate",
        "valueType": "INT64",
        "metricKind": "GAUGE",
        "unit": "1"
      }
    ]
  },
  "timeSeriesData": [
    {
      "labelValues": [
        {
          "stringValue": "my-test-project"
        },
        {
          "stringValue": "compute.googleapis.com"
        },
        {
          "stringValue": "us-central1"
        },
        {
          "stringValue": "compute.googleapis.com/instances"
        }
      ],
      "pointData": [
        {
          "values": [
            {
              "int64Value": "11"
            }
          ],
          "timeInterval": {
            "startTime": "2022-03-30T08:38:44.064174Z",
            "endTime": "2022-03-30T08:38:44.064174Z"
          }
        }
      ]
    }
  ]
}

你感兴趣的线 "int64Value": "11"其中包含数字 11,在我的例子中,它是当前虚拟机的数量(它是运行和停止的总和)。

现在您需要做的“所有”就是将其合并到您的 python 脚本中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用基于令牌的访问获取虚拟机的 GCP 配额限制 的相关文章

  • Twisted 的 Deferred 和 JavaScript 中的 Promise 一样吗?

    我开始在一个需要异步编程的项目中使用 Twisted 并且文档非常好 所以我的问题是 Twisted 中的 Deferred 与 Javascript 中的 Promise 相同吗 如果不是 有什么区别 你的问题的答案是Yes and No
  • 递归 lambda 表达式可能吗?

    我正在尝试编写一个调用自身的 lambda 表达式 但我似乎找不到任何语法 或者即使它是可能的 本质上我想将以下函数传输到以下 lambda 表达式中 我意识到这是一个愚蠢的应用程序 它只是添加 但我正在探索可以在 python 中使用 l
  • 如何在Python中流式传输和操作大数据文件

    我有一个相对较大 1 GB 的文本文件 我想通过跨类别求和来减小其大小 Geography AgeGroup Gender Race Count County1 1 M 1 12 County1 2 M 1 3 County1 2 M 2
  • 如何在python 3.7中生成条形码

    我正在使用 python 3 7 为了生成条形码 我尝试使用安装 pyBarcode 库pip install pyBarcode 但它显示以下错误 找不到满足 pyBarcode 要求的版本 来自版本 找不到 pyBarcode 的匹配分
  • 用缺失的日期填充其他列 Nan Pandas DataFrame

    我实际上是从几个 Excel 文件中提取数据来监控我的每日卡路里摄入量 我设法使用列表理解来生成日期 我尝试使用合并或连接 但它不起作用 ValueError 您正在尝试合并对象和 float64 列 date list 2021 05 2
  • 补丁 - 为什么相对补丁目标名称不起作用?

    我已经从模块导入了一个类 但是当我尝试修补类名而不使用模块作为前缀时 出现类型错误 TypeError Need a valid target to patch You supplied MyClass 例如 以下代码给出了上述错误 imp
  • Pandas:GroupBy 到 DataFrame

    参考这个关于 groupby 到 dataframe 的非常流行的问题 https stackoverflow com questions 10373660 converting a pandas groupby object to dat
  • Python - 来自 .进口

    我第一次尝试图书馆 我注意到解决图书馆内导入问题的最简单方法是使用如下结构 from import x from some module import y 我觉得这件事有些 糟糕 也许只是因为我不记得经常看到它 尽管公平地说我还没有深入研究
  • 删除 Django 1.7 中的应用程序(和关联的数据库表)

    是否可以使用 Django 1 7 迁移来完全删除 卸载应用程序及其所有跟踪 主要是其所有数据库表 如果没有 在 Django 1 7 中执行此操作的适当方法是什么 python manage py migrate
  • pyspark 数据框中的自定义排序

    是否有推荐的方法在 pyspark 中实现分类数据的自定义排序 我理想地寻找 pandas 分类数据类型提供的功能 因此 给定一个数据集Speed列 可能的选项是 Super Fast Fast Medium Slow 我想实现适合上下文的
  • Python3.0 - 标记化和取消标记化

    我正在使用类似于以下简化脚本的内容来解析较大文件中的 python 片段 import io import tokenize src foo bar src bytes src encode src io BytesIO src src l
  • 在没有模型的情况下将自定义页面添加到 django admin

    我正在尝试在没有模型关联的情况下向管理员添加自定义页面 这就是我迄今为止所取得的成就 class MyCustomAdmin AdminSite def get urls self from django conf urls import
  • Keras:如何保存模型或权重?

    如果这个问题看起来很简单 我很抱歉 但是阅读 Keras 保存和恢复帮助页面 https www tensorflow org beta tutorials keras save and restore models https www t
  • 如何使用文本相似性删除 pandas 数据框中相似(不重复)的行?

    我有数千个数据 这些数据可能相似也可能不相似 使用 python 的默认函数 drop duplicates 并没有真正的帮助 因为它们只检测相似的数据 例如 如果我的数据包含类似以下内容怎么办 嗨 早上好 嗨 早上好 Python 不会将
  • 使用Python计算目录的大小?

    在我重新发明这个特殊的轮子之前 有没有人有一个很好的例程来使用 Python 计算目录的大小 如果例程能够很好地以 Mb Gb 等格式格式化大小 那就太好了 这会遍历所有子目录 总结文件大小 import os def get size s
  • 通过索引访问Python字典的元素

    考虑一个像这样的字典 mydict Apple American 16 Mexican 10 Chinese 5 Grapes Arabian 25 Indian 20 例如 我如何访问该字典的特定元素 例如 我想在对 Apple 的第一个
  • Jython 和 SAX 解析器:允许的实体不超过 64000 个?

    我做了一个简单的测试xml saxJython 中的解析器在处理大型 XML 文件 800 MB 时遇到以下错误 Traceback most recent call last File src project xmltools py li
  • Anaconda 无法导入 ssl 但 Python 可以

    Anaconda 3 Jupyter笔记本无法导入ssl 但使用Atom终端导入ssl没有问题 我尝试在 Jupyter 笔记本中导入 ssl 但出现以下错误 C ProgramData Anaconda3 lib ssl py in
  • Elasticsearch 通过搜索返回拼音标记

    我用语音分析插件 https www elastic co guide en elasticsearch plugins current analysis phonetic html由于语音转换 从弹性搜索中进行一些字符串匹配 我的问题是
  • 如何为不同操作系统/Python 版本编译 Python C/C++ 扩展?

    我注意到一些成熟的Python库已经为大多数架构 Win32 Win amd64 MacOS 和Python版本提供了预编译版本 针对不同环境交叉编译扩展的标准方法是什么 葡萄酒 虚拟机 众包 我们使用虚拟机和Hudson http hud

随机推荐