如何从外部 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 时间(以纳秒为单位)。
创建 GKE 集群后,导航到指标资源管理器和 select 指标,metric.type="kubernetes.io/container/cpu/core_usage_time"
您可以在图表中看到集群的数据。现在单击“MQL”按钮以使用 MQL 语法获取相同的查询。
现在要通过调用 projects.timeSeries.query
获取相同的数据,请在 API 中的 “Try this API” 框中尝试通过在名称参数中使用 projects/[PROJECT_ID]
格式输入项目 ID 来打开资源管理器。确保将 [PROJECT_ID] 替换为您的项目 ID。
在请求正文中将查询添加为
"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。
我需要获取我的 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 时间(以纳秒为单位)。
创建 GKE 集群后,导航到指标资源管理器和 select 指标,
metric.type="kubernetes.io/container/cpu/core_usage_time"
您可以在图表中看到集群的数据。现在单击“MQL”按钮以使用 MQL 语法获取相同的查询。现在要通过调用
projects.timeSeries.query
获取相同的数据,请在 API 中的 “Try this API” 框中尝试通过在名称参数中使用projects/[PROJECT_ID]
格式输入项目 ID 来打开资源管理器。确保将 [PROJECT_ID] 替换为您的项目 ID。在请求正文中将查询添加为
"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。