k8s与监控--解读prometheus监控kubernetes的配置文件

前言
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。

kubernetes-cadvisor
cadvisor已经被集成在kubelet中,所以发现了node就相当于发现了cadvisor。通过 /api/v1/nodes/${1}/proxy/metrics/cadvisor采集容器指标。

kubernetes-services和kubernetes-ingresses
该两种资源监控方式差不多,都是需要安装black-box,然后类似于探针去定时访问,根据返回的http状态码来判定service和ingress的服务可用性。
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。

猜你喜欢

转载自blog.51cto.com/11831901/2285685