前面一篇文章中介绍了Prometheus动态服务发现配置的方式,比如基于文件的服务发现或者基于Consul的服务发现。这篇文章将继续对Kubernetes和Prometheus进行集成的常见方式进行概括的介绍。
集成方式
Kubernetes主要提供了如下5种服务发现模式和Prometheus进行集成:
- Node
- Pod
- Endpoints
- Service
- Ingress
Node服务发现模式
kubernetes_sd_configs:
- role: node
Pod服务发现模式
kubernetes_sd_configs:
- role: pod
Endpoints服务发现模式
kubernetes_sd_configs:
- role: endpoints
Service服务发现模式
kubernetes_sd_configs:
- role: service
Ingress服务发现模式
kubernetes_sd_configs:
- role: ingress
黑盒监控 vs 白盒监控
依据是否清楚内部运行状态,可以将监控分为黑盒监控与白盒监控两种。黑盒监控不了解应用内部运行状态,同时也不依赖于基础框架的构成(比如传统方式的应用和容器化基础框架的构成不同),以最终用户的角度进行监控,在故障的快速发现方面有较好的效果。常见的HTTP探针方式或者Blackbox Exporter等都是黑盒监控的方式。
而白盒监控由于能够清楚内部运行状态,能够更好地发现根本问题所在,同时可以更加主动地进行预测分析等,但是基础框架的构成对于白盒监控的影响较大。比如Kubernetes所提供的Node或者Pod的方式都是白盒监控。
一个好的监控系统中往往包括黑盒监控和白盒监控,利用黑盒监控可以从用户的角度快速发现故障,而利用白盒监控能够清楚内部状态的特点进行更好地分析从而快速发现根本原因或者主动进行问题发生可能性的预测,二者结合能够起到较好的效果。
监控方法
监控对象 | 监控指标内容 | 服务发现模式 | 监控方式 | 数据来源 |
---|---|---|---|---|
集群各节点Kubelet内置的cAdvisor | 节点中运行的容器的监控指标 | node | 白盒 | Kubelet |
集群各节点Kubelet组件 | 各节点Kubelet的基本运行状态相关的监控指标 | node | 白盒监控 | Kubelet |
部署到各个节点的Node Exporter | 主机资源相关的运行资源监控指标 | node | 白盒监控 | Node Exporter |
内置了Promthues支持的应用Pod实例 | Pod实例中采集的自定义的监控指标 | pod | 白盒监控 | 自定义Pod |
API Server组件的访问地址 | 获取的Kubernetes集群相关的运行监控指标 | endpoints | 白盒监控 | Api Server |
集群中Service的访问地址 | 通过Blackbox Exporter获取的监控指标 | service | 黑盒监控 | Blackbox Exporter |
集群中Ingress的访问地址 | 通过Blackbox Exporter获取监控指标 | ingress | 黑盒监控 | Blackbox Exporter |