只能從主機維度進行採集,沒有Namespace、Pod等維度的匯聚功能node
heapster負責調用各node中的cadvisor接口,對數據進行彙總,而後導到InfluxDB , 能夠從cluster,node,pod的各個層面提供詳細的資源使用狀況。
docker
Resource Metrics
對應的接口是 metrics.k8s.io,主要的實現就是 metrics-server,它提供的是資源的監控,比較常見的是節點級別、pod 級別、namespace 級別、class 級別。這類的監控指標均可以經過 metrics.k8s.io 這個接口獲取到api
Metrics Server 做爲標準的 Kubernetes API 把監控數據暴露出來的服務,好比獲取某一Pod的監控數據;不管是 heapster仍是 metric-server,都只是數據的中轉和聚合,二者都是調用的 kubelet 的 api 接口獲取的數據(prometheus-adapter也是調用kubelete api),而 kubelet 代碼中實際採集指標的是 cadvisor 模塊;cadvisor獲取指標時實際調用的是 runc/libcontainer庫,而libcontainer是對 cgroup文件 的封裝,即 cadvsior也只是個轉發者,它的數據來自於cgroup文件。
cgroup文件中的值是監控數據的最終來源,app
對於docker容器來說,來源於
/sys/fs/cgroup/memory/docker/[containerId]/memory.usage_in_bytes
對於pod來說
/sys/fs/cgroup/memory/kubepods/besteffort/pod[podId]/memory.usage_in_bytes
ide
一、知足監控條件要求
不管是業務應用仍是k8s系統組件,只要提供了metrics api,而且該api返回的數據格式知足標準的Prometheus數據格式要求便可。
spa
二、Prometheus格式標準
3d
一、原有prometheus配置文件
code
二、在當前prometheus配置文件下,添加以下內容server
- job_name: 'coredns' static_configs: - targets: ['10.96.0.10:9153']
三、從新應用該配置文件apply
blog