简谈docker容器监控

栏目: 服务器 · Linux · 发布时间: 8年前

内容简介:新年快乐docker是用cgroup实现,虽然cgroup用ns实现从cpu memory blkio net 等方面的隔离,但终究还不是一个完整的操作系统,很多在操作系统能做的操作到docker里面就不能,常见的如free。free到的内存还是宿主机上面的内存,不能显示该容器实际所使用的内存。造成这种问题的根本原因还是因为docker容器和宿主机是共享了

新年快乐

docker是用cgroup实现,虽然cgroup用ns实现从cpu memory blkio net 等方面的隔离,但终究还不是一个完整的操作系统,很多在操作系统能做的操作到 docker 里面就不能,常见的如free。free到的内存还是宿主机上面的内存,不能显示该容器实际所使用的内存。

造成这种问题的根本原因还是因为docker容器和宿主机是共享了 /proc 文件夹,大多数系统指标的命令读取的还是从proc文件夹读取所以造成了在docker内无法获取到该容器的真实数据。除此之外,一般docker容器还共享了/sys文件夹

所以针对这个有几种做法获取到准备的容器资源使用情况

docker api

docker api docker 提供了一系组REST API其中就包括获取容器状态的API,这个收集的数据相对比较全面,但是docker api有个缺点就是版本迭代很多,json协议有小幅度的修改,所以需要跟进下每个版本的协议

lxcfs 增强容器内部获取信息

lxcfs lxcfs是一个基于fuse编写的文件系统,容器类应用在运行时可以挂载lxcfs的目录实现容器内读到的/proc是对应该容器自身的数据

其原理就是挂载lxcfs的/proc目录作为容器的/proc目录,使用方法如下

sudo ./lxcfs -s -f -o allow_other /var/lib/lxcfs/
docker run -it --rm --privileged=true --cpuset-cpus=0,1 -v /var/lib/lxcfs/proc/uptime:/proc/uptime:rw -v /var/lib/lxcfs/proc/cpuinfo:/proc/cpuinfo:rw -v /var/lib/lxcfs/proc/stat:/proc/stat -v /var/lib/lxcfs/cgroup/:/cgroup/:rw  centos:7 /bin/bash

把原本容器的/proc mout成lxcfs所实现的,之后在容器内部读到的/proc文件其实是经过lxcfs处理的,lxcfs重新实现了读/proc文件的操作,容器内读取/proc的操作,lxcfs会根据该容器的pid找出对应的cgroup信息,然后计算出实际上属于改容器那部分的数据。

但是lxcfs支持的proc还是比较少的,具体看lxcfs的github,具体应用起来的话还是需要二次开发,不然其实应用到生产还是比较有限

cadvisor

cadvisor的获取数据的思路和lxcfs类似,也是读取cgroup的信息,不过是作为一个守护进程定时读取cgroup的数据,这种模式基本是无侵入性,使用起来很方便,而且数据存储这块支持很多种,虽然也存在收集数据太少的情况,大体的cpu 网络 内存数据都收集到了,负载也有个粗略的公式计算出来,大体上就是开箱即用,真正的生产使用的话,还是需要基于cadvior二次开发,因为这个代码结构比较简单,所以基于cadvisor做二次开发是比较简单的事情。是一个不错的选择。

总结

简单的过了这三种收集方式,后两种基于cgroup信息收集的方式需要储备的知识比较多,但是目前cgroup的资料都比较少,大部分都是浅浅一过,需要耗费大量的时间去研究cgroup各个子系统的统计数据。诸君共勉,新年快乐,新年快乐,新年快乐


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

Data Structures and Algorithms

Data Structures and Algorithms

Alfred V. Aho、Jeffrey D. Ullman、John E. Hopcroft / Addison Wesley / 1983-1-11 / USD 74.20

The authors' treatment of data structures in Data Structures and Algorithms is unified by an informal notion of "abstract data types," allowing readers to compare different implementations of the same......一起来看看 《Data Structures and Algorithms》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

MD5 加密
MD5 加密

MD5 加密工具

SHA 加密
SHA 加密

SHA 加密工具