前言
整體來看,kube-state-metrics是為prometheus采集k8s資源數據的exporter。prometheus 的exporter任務是將和業務相關的數據指標轉換成prometheus的數據模型,當然prometheus 為這種轉換提供了方法。
kube-state-metrics采集的數據
kube-state-metrics能夠采集絕大多數k8s內置資源的相關數據,例如pod、deploy、service等等。同時它也提供自己的數據,主要是資源采集個數和采集發生的異常次數統計。
prometheus指標類別
-
Counter (累加指標)
一個累加指標數據,這個值隨着時間只會逐漸的增加,比如程序完成的總任務數量,運行錯誤發生的總次數。常見的還有交換機中snmp采集的數據流量也屬於該類型,代表了持續增加的數據包或者傳輸字節累加值。
-
Gauge (測量指標)
Gauge代表了采集的一個單一數據,這個數據可以增加也可以減少,比如CPU使用情況,內存使用量,硬盤當前的空間容量等等。
-
Summary (概略圖)
-
Histogram (直方圖)
已經有了cadvisor、heapster、metric-server,幾乎容器運行的所有指標都能拿到,但是下面這種情況卻無能為力:
- 我調度了多少個replicas?現在可用的有幾個?
- 多少個Pod是running/stopped/terminated狀態?
- Pod重啟了多少次?
- 我有多少job在運行中
而這些則是kube-state-metrics提供的內容,它基於client-go開發,輪詢Kubernetes API,並將Kubernetes的結構化信息轉換為metrics。