加入收藏 | 设为首页 | 会员中心 | 我要投稿 常州站长网 (https://www.0519zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 移动互联 > 评测 > 正文

容器监控系统如何做,看看这篇就够了

发布时间:2019-10-10 05:04:14 所属栏目:评测 来源:七把刀
导读:副标题#e# 随着线上服务的全面docker化,对docker容器的监控就很重要了。SA的监控系统是物理机的监控,在一个物理机跑多个容器的情况下,我们是没法从一个监控图表里面区分各个容器的资源占用情况的。 为了更好的监控容器运行情况,更重要的是为了后续的容
副标题[/!--empirenews.page--]

容器监控系统如何做,看看这篇就够了

随着线上服务的全面docker化,对docker容器的监控就很重要了。SA的监控系统是物理机的监控,在一个物理机跑多个容器的情况下,我们是没法从一个监控图表里面区分各个容器的资源占用情况的。

为了更好的监控容器运行情况,更重要的是为了后续的容器动态调度算法需要的大量运行时数据的搜集,经过调研后,基于CAdvisor + InfluxDB + Grafana搭建了这套容器监控系统。

1、容器监控方案选择

在调研容器监控系统的时候,其实是有很多选择的,比如docker自带的docker stats命令,Scout,Data Dog,Sysdig Cloud,Sensu Monitoring Framework,CAdvisor等。

通过docker stats命令可以很方便的看到当前宿主机上所有容器的CPU,内存以及网络流量等数据。但是docker stats命令的缺点就是统计的只是当前宿主机的所有容器,而获取的监控数据是实时的,没有地方存储,也没有报警功能。

容器监控系统如何做,看看这篇就够了

而Scout(链接:https://scoutapp.com/)、Sysdig Cloud,Data Dog虽然都提供了较完善的服务,但是它们都是托管的服务而且都收费,于是也不在考虑范围之内。Sensu Monitoring Framework(链接:https://sensu.io/)集成度较高,也免费,但是部署过于复杂。最后,我们选择了CAdvisor做容器监控工具。

CAdvisor谷歌出品,优点是开源产品,监控指标齐全,部署方便,而且有官方的docker镜像。缺点是集成度不高,默认只在本地保存2分钟数据。不过在调研之后发现可以加上InfluxDB存储数据,对接Grafana展示图表,比较便利地搭建好了容器监控系统,数据收集和图表展示效果良好,对系统性能也几乎没有什么影响。

2、容器资源监控-CAdvisor

2.1 部署与运行

CAdvisor是一个容器资源监控工具,包括容器的内存,CPU,网络IO,磁盘IO等监控,同时提供了一个WEB页面用于查看容器的实时运行状态。CAdvisor默认存储2分钟的数据,而且只是针对单物理机。不过,CAdvisor提供了很多数据集成接口,支持InfluxDB,Redis,Kafka,Elasticsearch等集成,可以加上对应配置将监控数据发往这些数据库存储起来。

由于CAdvisor已经容器化,部署和运行很简单,执行如下命令即可:

容器监控系统如何做,看看这篇就够了

运行之后,就可以在浏览器打开http://ip:8080查看宿主机的容器监控数据了。

2.2 集成InfluxDB

如前面说到,CAdvisor默认只在本机保存最近2分钟的数据,为了持久化存储数据和统一收集展示监控数据,需要将数据存储到InfluxDB中。InfluxDB是一个时序数据库,专门用于存储时序相关数据,很适合存储CAdvisor的数据。而且,CAdvisor本身已经提供了InfluxDB的集成方法,在启动容器时指定配置即可。

我们使用了管理容器来管理CAdvisor,修改后的启动配置如下。主要指定了存储引擎为InfluxDB,以及指定InfluxDB的HTTP API的地址(这里用到了自建DNS的域名 influxdb.service.consul以避免暴露外部端口),还有对应的数据库和用户名密码。

  1. {  
  2. "binds": [  
  3. "/:/rootfs:ro",  
  4. "/var/run:/var/run:rw",  
  5. "/sys:/sys:ro",  
  6. "/home/docker/var/lib/docker/:/var/lib/docker:ro"  
  7. ],  
  8. "image": "forum-cadvisor",  
  9. "labels": {  
  10. "type": "cadvisor"  
  11. },  
  12. "command": " -docker_only=true -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxdb.service.consul:8086 -storage_driver_user=testuser -storage_driver_password=testpwd",  
  13. "tag": "latest",  
  14. "hostname": "cadvisor-{{lan_ip}}"  
  15. }  

注意到我们使用了一个自己的forum-cadvisor镜像来代替官方的cadvisor镜像,这是为了修复cadvisor一些问题以及基于管理方便性的考虑。

2.3 CAdvisor存在的问题

1)运行报错问题

运行最新的CAdvisor容器的时候,发现容器有如下的错误日志:

容器监控系统如何做,看看这篇就够了

这个问题是因为没有安装 findutils 工具导致的。

2)统计不到容器内存数据

(编辑:常州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读