kube-state-metrics(KSM)是一个简单的服务,它监听Kubernetes API服务器并生成关于对象状态的指标(请参见下面“指标”部分中的示例)。它的重点不在于个别Kubernetes组件的健康状况,而是关注其中各种对象(如部署、节点和Pod)的健康状况。
kube-state-metrics通过从Kubernetes API对象生成指标,而无需修改这些对象,确保了其提供的功能与Kubernetes API对象本身具有相同的稳定性。这意味着在某些情况下,kube-state-metrics可能不会显示与kubectl完全相同的值,因为kubectl会应用一定的启发式方法来显示可理解的消息。kube-state-metrics提供了未经修改的来自Kubernetes API的原始数据,这样用户就可以获得他们所需的所有数据,并根据需要执行启发式方法。
这些指标通过HTTP端点 /metrics 在监听端口(默认为8080)上以纯文本形式导出。它们旨在被Prometheus本身或与抓取Prometheus客户端端点兼容的抓取器消费。您也可以在浏览器中打开 /metrics 来查看原始指标数据。请注意,/metrics 端点上公开的指标反映了Kubernetes集群的当前状态。当Kubernetes对象被删除时,它们将不再在 /metrics 端点上可见。
为kube-state-metrics
新增自定义的crd指标
指标如下
Metric Name | 描述 |
---|---|
user_cpu_total | 用户可以使用的cpu |
user_memory_total | 用户可以使用的memory |
kube-state-metrics
在internal/store
目录下记录了所有的metricFamily
,所以我们需要的指标写在这个目录下面。
在internal/store
下面新增了三个文件1
2
3user_types.go
user_test.go
user.go
1 | // internal/store/user_types.go |
1 | // internal/store/user.go |
1 | // internal/store/user_test.go |
1 | // internal/store/builder.go |
1 | // main.go |
1 | // pkg/options/resource.go |