【问题标题】:How to get usage metrics for Kubernetes pods on GKE from external node.js script如何从外部 node.js 脚本获取 GKE 上 Kubernetes pod 的使用指标
【发布时间】:2022-01-27 12:28:27
【问题描述】:

我需要获取 Kubernetes pod 的使用指标(CPU 和 RAM),但由于我的应用程序的其他组件使用这些数据,我需要通过 Node.js 查询它,而不是使用 Metrics explorer 下拉菜单GCP 控制台仅查看图表中可视化的数据。我已经在https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/query 尝试过 API,这似乎最像我正在寻找的东西。但是,在对我的项目进行测试后,我得到了一个空响应,即使 Metrics Explorer 中的相同查询在图表上显示了数据。如果有人有关于如何正确使用此 API 的提示,我将不胜感激。

【问题讨论】:

  • 您是否启用了 API 并授予 API 令牌权利permissions
  • 是的,权限都很好,根据我的请求,我得到了 200 响应,但正文是空的,这是令人困惑的部分。我也刚刚试用了这个 API:cloud.google.com/monitoring/api/ref_v3/rest/v3/… 并确实返回了 TimeSeries 对象的列表,但它们都只填写了 metric 字段,其他所有内容都丢失了。
  • 使用list时,是否在请求体中指定view
  • 您能否提供您使用的示例查询并参考此stack case 以列出与过滤器匹配的时间序列。
  • 即使将列表指定为 FULL,时间序列数据也会丢失。这是我使用的过滤器:metric.type="kubernetes.io/container/cpu/core_usage_time"。

标签: node.js kubernetes google-kubernetes-engine metrics


【解决方案1】:

我已经重现了您的用例并成功执行了查询,并以纳秒为单位获得了所有内核上消耗的 CPU 时间的累积量,并具有 200 OK 响应

  1. 创建 GKE 集群后,导航到指标资源管理器并选择指标 metric.type="kubernetes.io/container/cpu/core_usage_time",您可以在图表中看到集群的数据。现在单击“MQL”按钮以使用 MQL 语法获取相同的查询。

  2. 现在要通过调用 projects.timeSeries.query 获取相同的数据,请尝试在 API Explorer 的 “Try this API” 框中,通过在 name 参数中使用格式 projects/[PROJECT_ID] 输入项目 ID 来尝试。确保将 [PROJECT_ID] 替换为您的项目 ID。

  3. 在请求正文中将查询添加为
    "query": "fetch k8s_container::kubernetes.io/container/cpu/core_usage_time| within 5m"

请求正文的语法:

{

 "query": "fetch k8s_container::kubernetes.io/container/cpu/core_usage_time| within 5m"
  

}

现在,点击 Execute 按钮以获取所有核心上的累积 CPU 时间消耗量,并有 200 OK 响应。

有关使用 timeseries.query 检索数据的更多信息,请参阅link

【讨论】:

    猜你喜欢
    • 2020-11-10
    • 1970-01-01
    • 1970-01-01
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2016-02-25
    • 2019-02-12
    相关资源
    最近更新 更多