一、数据接收器 cAdvisor
cAdvisor 是google开发的容器监控工具,在host中运行cadvisor容器
1.下载并启动cadisor
2.监控容器
点击docker containers链接
显示容器列表
点击某个容器,比如sysdig ,进入该容器的监控页面。
以上就是cadvisor的主要功能,总结起来主要两点:
1.展示host和容器两个层次的监控数据。
2.展示历史变化数据。
cadvisor的一个亮点就是他可以将监控的数据导出给第三方工具,由这些工具进一步加工处理。我们可以把cadvisor定位为一个监控数据收集器,手机和导出数据是他的强项,而非展示数据。
二、prometheus架构
prometheus是一个非常优秀的监控工具。准确的来说,应该是监控方案。prometheus提供了监控数据搜集、存储 处理 可视化和告警一套完整的解决方案。
1.prometheus server
prometheus server 负责从exporter拉取和存储监控数据,并提供一套灵活的查询语言(promql)供用户使用。
2.exporter
exporter负责收集目标对象的性能数据,并通过http接口供prometheus server获取。
3.可视化组件
监控数据的可视化展现对监控方案至关重要。以前prometheus自己开发了一套工具,不过后来费弃了,因为开源社区出现了更为优秀的产品grafana。 grafana能够与prometheus无缝集成,提供完美的数据展示能力。
4.altertmanager
用户可以定义基于监控数据的告警规则,规则会处罚告警。一旦alermanager收到告警,会通过预定义的方案发出告警通知,支持的方式包括email pagerduty webhook等。
三、prometheus部署
环境说明:
1.运行node-exporter
由于用到主机 所以会有一个警告,所以需要:
2.运行cadvisor(两台都需要安装)
这个查看到的是容器的信息
3.运行prometheus server
由于使用了--net=host 这样prometheus server 可以直接与exporter和grafana通信。prometheus.yml是prometheus server 的配置文件
4.运行grafana
使用了 --net=host 这样grafana可以直接与prometheus server 通信。 -e "GF_SERVER_rOOT_URL=http://grafana.server.name"指定了grafana admin用户密码secret。 grafana启动后,在浏览器中打开http://192.174.1.40:3000/
登录后,grafana将引导我们配置data source。
结果:
现在可以访问prometheus中存放的监控数据,但是如何展示:
grafana是通过dashboard展示数据的,在dashboard中需要定义:
1.展示prometheus的那些多为数据?需要给出具体的查询语言表达式。
2.用什么形式展示,比如二维线性图,仪表盘,各种坐标的含义。
可以借助开源社区,直接使用线程的dashboard 访问 https://grafana.com/dashboards?dataSource=prometheus&search=docker 将会看到许多监控docker的dashboard
导入下载的json文件
或者导入Docker and system monitoring 的j son文件
五、各种docker监控方案总结
1.部署容易度
ps/top/stats/无疑石咀容易使用的,他们是docker自带的子命令,随时随地都可以用来快速了解容器状态。其余几种也都能以容器的方式运行。总的来说都不算复杂。相对而言,prometheus涉及的组件比较多,搭建整个方案需要运行的容器数量也要多鞋,部署和管理的难度稍大。
2.数据详细度
ps/top/stats/和cadvisor能够监控容器基本的资料使用情况,sysdig weave scope 和prometheus则能提供更丰富的数据。
3.多host监控
weave scope和prometheus可以监控整个集群,而其余的工具只提供单个host的监控能力。
4.告警功能
只有prometheus具备源生的告警功能。
5.监控非容器资源
sysdig weave scope 和 cadvisor可以监控到host操作系统的状态,prometheus则可以通过exporter支持应用级别的监控,比如监控和ceph 、haproxy等。
六、四个方面的比较结果: