技术交流28群

服务热线

135-6963-3175

微信服务号

容器监控工具heapster与Prometheus的选择 更新时间 2019-10-12 浏览1429次

Advisor与prometheus都是容器时代的产物。cAdvisor+heapster+influxdb的组合显然更契合与k8s框架;而prometheus更适合于单个节点下各种复杂情景的监控。

工具简要说明

cAdvisor:docker的采集器

Heapster:k8s的监控工具

Influxdb:时序数据库

Grafana:页面展示工具(与heapster与Prometheus均可集成)

Prometheus:集成采集、存储(支持多种时序数据库)、页面展示与一体的监控工具

  1. cAdvisor+Heapster+influxdb

cAdvisor 是谷歌公司用来分析运行中的Docker容器的资源占用以及性能特性的工具, cAdvisor部署为一个运行中的daemon,它会收集、聚集、处理并导出运行中容器的信息。这些信息能够包含容器级别的资源隔离参数、资源的历史使用状况、反映资源使用和网络统计数据完整历史状况。对docker的监控能力非常强大。cAdvior功能已经被集成到了kubelet组件中,也就是说,安装好kubernetes后,cAdvisor就已经安装到了每一个计算节点上。

Heapster同样是Google提供的,用于对k8s集群的监控。Heapster可以通过容器启动,传入kubernetes master的地址,heapster会通过调用kubernetes api获取所有kubernetes计算节点,然后通过kubelet的外部调用端口号(默认为10250)调用kubelet的http api,kubelet会进行调用cAdvisor接口获取当前计算节点上的容器数据以及当前主机的性能数据,返回给heapter。这样heapster就收集到了kubernetes集群的所有容器数据以及主机数据。Heapster支持数据传输到Influxdb中进行存储。数据展现我们就是自己调用influxdb的api获取数据,结合我们的业务相关数据进行计算,用echarts进行前端图表展现。

2.Prometheus

Prometheus 是google力捧的监控方案,社区非常活跃,发展很是迅速,功能在不断的飞速补充和完善。一个监控范围覆盖容器、主机、存储、数据库、各种中间件,同时还具体完善的时序数据存储、告警中心等能力。它的服务过程是这样的 Prometheus daemon 负责定时去目标上抓取 metrics(指标) 数据,每个抓取目标需要暴露一个http服务的接口给它定时抓取。


采集范围的不同

1. cAdvisor

容器级别的资源隔离参数、资源的历史使用状况、反映资源使用和网络统计数据完整历史状况、主机数据等。

2. Prometheus

提供多维的数据模型,借助这种多维性所提供的灵活查询语言,所以理论上服务支持Prometheus端点或是提供http端口的转换器都可以手动拉取数据,既适用于面向服务器等硬件指标的监控,也适用于高动态的面向服务架构的监控。

应用场景的不同

1. cAdvisor+Heapster+influxdb

基于cAdvisor与Heapster的设计初衷,对于k8s集群能够完美的适应,适合于监控k8s集群中各容器的信息。

2. Prometheus

Prometheus它的价值在于可靠性,甚至在很恶劣的环境下,你都可以随时访问它和查看系统服务各种指标的统计信息。如果你对统计数据需要100%的精确,它并不适用,例如:它不适用于实时计费系统。

各自缺点

1. cAdvisor+Heapster+influxdb

监控的数据范围有限,只能监控到主机级别和容器级别,显然对容器中的服务监控无能为力。

2. Prometheus

对于Prometheus的使用者来说,所有的公制端点都必须是可达的,这意味着一个更加复杂的安全网络配置,在大型部署中,扩展成为一个问题。