Docker容器Kubernetesdocker知识库

容器监控实践—Docker原生

2019-01-07  本文已影响1人  徐亚松_v

前言

传统虚机监控一般采用类似Zabbix的方案,但容器出现之后,再使用Zabbix agent来采集数据的话就显得有些吃力了,如果每个容器都像OS那样监控,则metric数量将会非常巨大,而且这些数据很可能几分钟之后就没有意义了(容器已经停止或漂移),且容器的指标汇总更应该是按照APP甚至POD维度。

如果只是过渡方案,或者想将容器监控统一到公司现有的Zabbix中,可以参考zabbix-docker-monitoring,有很多模板如:zabbix-template-app-docker.xml

参考文章:https://segmentfault.com/a/1190000007568413

Docker原生监控

常用方式:

docker stats

该命令默认以流式方式输出,如果想打印出最新的数据并立即退出,可以使用 no-stream=true 参数。

可以指定一个已停止的容器,但是停止的容器不返回任何数据。

例如:

image

Remote API

Docker Remote API是一个取代远程命令行界面(rcli)的REST API
如:curl http://127.0.0.1:4243/containers/json

可以使用API来获取监控数据并集成到其他系统,注意不要给Docker daemon带来性能负担,如果你一台主机有很多容器,非常频繁的采集可能会大量占据CPU

伪文件系统

以下操作的环境为:Centos7系统 docker17.03版本

docker stats的数据来自于/sys/fs/cgroup下的文件

一般情况下,cgroup文件夹下的内容包括CPU、内存、磁盘、网络等信息:

image image

如memory下的文件有:

image.png

几个常用的指标含义:

image

memory.stat中的信息是最全的:

image

更多资料参考:cgroup memory

原理分析:Libcontainer 深度解析

总结

优缺点:

备注:

container-monitor-book系列 : https://yasongxu.gitbook.io/container-monitor/
上一篇下一篇

猜你喜欢

热点阅读