k8s與監控--解讀prometheus監控kubernetes的配置文件
阿新 • • 發佈:2018-09-26
集成 配置 監控部署 http lac cpu 終端 接口 cadvisor 前言
Prometheus 是一個開源和社區驅動的監控&報警&時序數據庫的項目。來源於谷歌BorgMon項目。現在最常見的Kubernetes容器管理系統中,通常會搭配Prometheus進行監控。主要監控:
Node:如主機CPU,內存,網絡吞吐和帶寬占用,磁盤I/O和磁盤使用等指標。node-exporter采集。
容器關鍵指標:集群中容器的CPU詳細狀況,內存詳細狀況,Network,FileSystem和Subcontainer等。通過cadvisor采集。
Kubernetes集群上部署的應用:監控部署在Kubernetes集群上的應用。主要是pod,service,ingress和endpoint。通過black-box和kube-apiserver的接口采集。
kubernetes-apiservers
該項主要是讓prometheus程序可以訪問kube-apiserver,進而進行服務發現。看一下服務發現的代碼可以看出,主要服務發現:node,service,ingress,pod。
kubernetes-nodes
發現node以後,通過/api/v1/nodes/${1}/proxy/metrics來獲取node的metrics。 該兩種資源監控方式差不多,都是需要安裝black-box,然後類似於探針去定時訪問,根據返回的http狀態碼來判定service和ingress的服務可用性。
kubernetes-pods
對於pod的監測也是需要加註解:
Prometheus 是一個開源和社區驅動的監控&報警&時序數據庫的項目。來源於谷歌BorgMon項目。現在最常見的Kubernetes容器管理系統中,通常會搭配Prometheus進行監控。主要監控:
Node:如主機CPU,內存,網絡吞吐和帶寬占用,磁盤I/O和磁盤使用等指標。node-exporter采集。
容器關鍵指標:集群中容器的CPU詳細狀況,內存詳細狀況,Network,FileSystem和Subcontainer等。通過cadvisor采集。
Kubernetes集群上部署的應用:監控部署在Kubernetes集群上的應用。主要是pod,service,ingress和endpoint。通過black-box和kube-apiserver的接口采集。
該項主要是讓prometheus程序可以訪問kube-apiserver,進而進行服務發現。看一下服務發現的代碼可以看出,主要服務發現:node,service,ingress,pod。
kubernetes-nodes
發現node以後,通過/api/v1/nodes/${1}/proxy/metrics來獲取node的metrics。
kubernetes-cadvisor
cadvisor已經被集成在kubelet中,所以發現了node就相當於發現了cadvisor。通過 /api/v1/nodes/${1}/proxy/metrics/cadvisor采集容器指標。
kubernetes-services和kubernetes-ingresses
kubernetes-pods
對於pod的監測也是需要加註解:
prometheus.io/scrape,為true則會將pod作為監控目標。
prometheus.io/path,默認為/metrics
prometheus.io/port , 端口
所以看到此處可以看出,該job並不是監控pod的指標,pod已經通過前面的cadvisor采集。此處是對pod中應用的監控。寫過exporter的人應該對這個概念非常清楚。通俗講,就是你pod中的應用提供了prometheus的監控功能,加上對應的註解,那麽該應用的metrics會定時被采集走。
kubernetes-service-endpoints
對於服務的終端節點,也需要加註解:
prometheus.io/scrape,為true則會將pod作為監控目標。
prometheus.io/path,默認為/metrics
prometheus.io/port , 端口
prometheus.io/scheme 默認http,如果為了安全設置了https,此處需要改為https
這個基本上同上的。采集service-endpoints的metrics。
k8s與監控--解讀prometheus監控kubernetes的配置文件