如何从外部 node.js 脚本获取 GKE 上 Kubernetes pods 的使用指标

How to get usage metrics for Kubernetes pods on GKE from external node.js script

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

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

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

  2. 现在要通过调用 projects.timeSeries.query 获取相同的数据,请在 API 中的 “Try this API” 框中尝试通过在名称参数中使用 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"
  

}

现在,单击 执行 按钮以获取所有内核的累计消耗 CPU 时间,响应为 200 OK。

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