本篇已加入《》,可以点击查看更多容器化技术相关系列文章。本篇会介绍几个目前比较常用且流行的容器监控工具,首先我们来看看Docker自带的几个监控子命令:ps、top以及stats,然后是一个功能更强的开源监控工具Weave Scope。

# 实验环境:阿里云ECS主机,CentOS 7.4

01

Docker自带监控子命令

ps

想必只要我们看过一点docker的文章,就应该都知道docker ps这个命令,它使我们可以方便的查看现在正在运行的所有容器实例。

# docker ps

  执行后效果如下图:

  其实,它等价于下面两句命令:

top

如果我们想要了解某个容器中到底运行了哪些进程,可以通过top命令来查询。

# docker top container_name

  这里假设我们想查询exceptionless_api这个容器中运行了哪些进程,通过以下命令查询:

# docker top exceptionless_api_1

  

  可以看到,在exceptionless_api_1这个容器中只运行了一个进程,该进程是一个.NET Core应用程序,其命令为:dotnet Exceptionless.Web.dll。

  如果想要看到更多信息比如状态、启动时间等等,可以加上-au:(当然可以参阅Linux ps命令的参数加上更多参数显示特定信息)

# docker top exceptionless_api_1 -au

  

  从上图可以看到,该进程对于CPU和内存的占用量。

stats

如果我们想要查询每个容器对于各种资源的使用情况,那么可以直接使用docker stats,这是一个强大的命令,默认会显示一个实时变化的列表,以显示每个容器实例的CPU使用率、内存使用量以及可用量等等。  

Note:可以看到上图中内存的Limit都是3.7G,这是因为在容器启动时没有特别指定内存Limit,所以这里都会默认显示Host主机的总内存量(这里我的阿里云ECS主机是4G的内存配置),但并不意味着每个容器都能使用到这么多的内存。因此,我们完全可以为不同的容器实例设置不同的资源限制值,我也有写一篇文章《Docker资源限制学习与验证》。

  可以看到默认列表是基于容器ID来排列的,其实并不便于我们查看某个具体容器的资源使用情况,我们可以加上具体容器名字来定位和查看详情:

# docker stats exceptionless_api_1

  

02

开源监控工具Weave Scope

安装与运行

Weave Scope 是 Docker 和 Kubernetes 可视化监控工具。Scope 提供了至上而下的集群基础设施和应用的完整视图,用户可以轻松对分布式的容器化应用进行实时监控和问题诊断。

  Weave Scope的GitHub地址为:https://github.com/weaveworks/scope

  我们可以通过以下脚本安装运行Weave Scope:

# curl -L git.io/scope -o /usr/local/bin/scope
# chmod a+x /usr/local/bin/scope
# scope lanuch

  

  看到上图中的提示信息,代表你已经成功启动了Weave Scope。

监控容器

Weave Scope默认的端口号绑定的是4040,因此我们可以直接访问http://[Host IP]:4040就可以看到如下图所示的界面:  

  从上图中可以看到,目前我的Host中有哪些容器实例,他们之间的关联是什么样的。比如这里我有一个Exceptionless的容器实例群,包括UI、API、Job、ElasticSearch、Kibna以及Redis。其中UI和其他容器没有关联关系,而API、Job、Kibna以及Redis都互有联系。

  此外,Weave Scope还有自己的容器,因为我们的Weave Scope也是容器运行的,点击筛选“System containers”就会显示Weave自己的容器了:

  

  默认情况下,Weave提供了CPU占用率和内存使用量这两个关键指标的监控,我们可以选择不同的指标进行查看:

  比如这里我选中Memory,Weave会采用水位高低的显示方式来展示内存使用量;同理,CPU占用率也是一样。

  

  如果想查看某个容器的详细信息,可以单击该容器的图标,这里我们点击exceptionless_elasticsearch这个容器,可以看到如下图所示的详细信息:

  

  从上图可以看到详情主要包括两个部分:

  (1)Status:CPU、内存实时占用率以及历史曲线(注意CPU和内存那条线不一定都是直的,是曲线哟);

  (2)Info:容器镜像名称、启动命令、网络、状态等信息;

  滚动下拉还可以看到如下图所示的信息:

  

  从上图可以看到容器中正在运行的进程及其资源占用情况。点开Image,还会看到更详细的镜像信息。

  此外,我们还看到了容器详情上面有一排按钮,可以支持我们对容器进行操作,从而不再需要去记住那些docker attach等命令。

  

  第一个图标是attach,点击可以attach容器的启动进程,等价于:docker attach。

   第二个图标是打开shell,点击可以进入容器中,等价于:docker exec。

  后面三个代表restart重启容器,pause暂停容器 及 stop停止容器。

  比如我点击第二个图标,即可进入该容器中可以进行shell命令输入了:  

监控Host

除了监控容器之外,Weave Scope还支持监控容器所在的Host。当我们单击顶部菜单中的“Hosts”选项,即可显示当前Host的信息:

  

  可以看到,我目前就只有一台阿里云ECS主机Host。

  同理,单击该Host图标也会显示其详细信息:

  

  从图中可以看到,Host的实时资源使用情况和历史曲线我们都能够清晰的看到,滚动下拉条还可以看到Host上运行的进程和容器列表,如下图所示:

  

  单击某个容器链接,就可以看到该容器的详细监控信息了,很方便。

  此外,对于Host也提供了单击进入Shell的按钮,可以方便地打开Shell窗口做远程管理:  

多Host监控

实际环境中,我们会有多个Host,每个Host都会部署多个容器,那么如何让多个Host作为一个集群被监控呢?

  假设我们有两个Host,只需要在这两个Host中执行以下命令进行启动即可:

# scope launch 192.168.16.150 192.168.16.151

  这样无论访问哪个服务器的4040端口(假设没有更改默认端口)都能监控到两个Host。

逻辑条件查询

实际环境中我们会有很多个容器,那么如何快速查询到某个关键指标的容器呢?

  Weave Scope还提供了逻辑条件的查询,这里我们以CPU和内存为例:

  (1)查询内存使用量>900MB的容器实例:

  

  筛选出来,目前只有一个容器内存使用超过了900mb。

  (2)查询CPU占用率>1%的容器实例:

  

  筛选出来,也只有一个(当然也跟我实验环境容器实例并不多有关)。

03

小结

对于容器监控,docker自带的监控子命令是最简单的最容易使用的,但是对于多Host监控、告警及监控非容器资源都不支持,且用户友好度不够。Weave Scope则解决了多Host监控、监控非容器资源,但是不支持告警,不过对于一般小型的微服务容器实例监控是足够了。此外,Weave Scope对于大屏显示的界面友好度及Dashboard做的还是不够好,因此后面第二篇我们会学习Prometheus,它是一个更加强大和优秀的开源容器监控方案。

参考资料

Cloud Man,《每天5分钟玩转Docker容器技术》

冰冻vs西瓜,《利用WeaveScope监控容器》

sjyu_eadd,《Docker那些事儿-Docker容器监控工具》

恰童鞋骚年,风华也许不再正茂,但却仍想挥斥方遒

本公众号会长期关注和分享.NET Core,Microservice,云原生(Docker & Kubernetes等),DevOps等技术内容文章,还会与你分享个人生活成长的点滴及各类好书的读书笔记,希望能对你有所帮助,一起成长!

点个【在看】,和更多人一起分享!

你必须知道的容器监控 (1) Docker自带子命令与Weave Scope相关推荐

  1. 第 10 章 容器监控 - 078 - Docker 最常用的监控方案

    Docker 最常用的监控方案 当 Docker 部署规模逐步变大后,可视化监控容器环境的性能和健康状态将会变得越来越重要. Docker 自带的几个监控子命令: ps .top .stats 功能更 ...

  2. Docker进阶-容器监控cAdvisor+InfluxDB+Granfana

    概述 前面文章介绍使用docker compose组合应用并利用scale快速对容器进行扩容. 由于docker compose启动的服务都在同一台宿主机上,对于一个宿主机上运行多个容器应用时,容器的 ...

  3. docker 容器监控_以简便的方式监控Docker容器中的ADF应用程序

    docker 容器监控 在这篇简短的文章中,我将展示一种简单的方法来确保在Docker容器中运行的ADF应用程序在内存利用率方面是健康的Java应用程序. 我将使用标准工具JConsole,它是计算机 ...

  4. elasticsearch docker无法挂载_Docker 容器监控方案怎么选?看看这套开源方案

    来自:简书,作者:__七把刀__ 链接:https://www.jianshu.com/p/abfa502e43a6 随着线上服务的全面docker化,对docker容器的监控就很重要了.SA的监控系 ...

  5. Docker 容器监控原理及 cAdvisor 的安装与使用

    生产环境中监控容器的运行状况十分重要,通过监控我们可以随时掌握容器的运行状态,做到线上隐患和问题早发现,早解决.所以今天我就和你分享关于容器监控的知识(原理及工具 cAdvisor). 虽然传统的物理 ...

  6. 如何使用Zabbix官方模板轻松实现Docker容器监控?

    感谢王军 ZCP(Zabbix 高级认证专家)翻译!欢迎投稿分享你的使用经验. 本文将介绍通过Zabbix监控Docker容器.使用官方模板 Docker by Zabbix agent2 templ ...

  7. Docker容器监控可视化cAdivisor+InfluxDB+Grafana

    问题 在日常的Docker使用过程中, 要想了解容器当前的运行状况 ,  通过docker stats命令就可以很方便的看到当前宿主机上所有容器的CPU,内存以及网络流量等数据 , 但是, docke ...

  8. docker容器监控

    docker容器监控 一.docker介绍 Docker的中文意思就是码头工人,进入到Docker的官方网站后,也可以看到Docker的图标,如下图所示. 这个Docker图标上就是一条鲸鱼,上面有很 ...

  9. prometheus(普罗米修斯监控)部署、主机监控及docker容器监控

    部署前准备 prometheus相关材料下载 官方下载地址: Prometheus下载地址:https://prometheus.io go下载地址:https://golang.org Grafan ...

最新文章

  1. 腾讯优图实验室-计算机视觉(日常实习生招聘)
  2. [原创]前后端交互的方式整理
  3. python发明者叫什么-python是谁发明的
  4. php3.2手册中文版,Uploadify v3.2中文手册分享
  5. ios FMDB数据库添删改查应用
  6. 虚拟串口服务器zenetmanager,Avocent服务器/串口管理 KVM
  7. iOS:重识Transform和frame
  8. StackedGAN详解与实现(采用tensorflow2.x实现)
  9. 使用jQuery实现一个类似GridView的编辑,更新,取消和删除的功能
  10. 面向太阳,不问春暖花开
  11. 分享我用cnode社区api做微信小应用的入门过程
  12. pclzip.lib.php,LimeSurvey
  13. 惠普打印机双击之后没有扫描_惠普打印机为什么扫描不了,显示这个,什么意思,怎么处理?急...
  14. Netty和Tomcat有什么区别
  15. 主动扫描技术nmap详解
  16. JS内功修炼-基础篇
  17. acdream 1401 Lempel-Ziv Compression
  18. 初一知识用计算机进行运算,【初一数学】必考的21个知识点!
  19. VSCode:python import下载的第三方库,报错问题解决
  20. Stata倍分法:不满足平行趋势假设咋办?

热门文章

  1. 找到特定ip地址 修改ip_您如何找到网站的IP地址?
  2. layui 启用禁用_在不启用Apple Pay的情况下禁用烦人的Apple Pay通知
  3. php算法求出兔子数列,PHP算法:斐波那契数列的N种算法
  4. vim编辑和命令模式、实践
  5. Spring Cloud Gateway 原生支持接口限流该怎么玩
  6. Android Bootloader LittleKernel的两篇文章 【转】
  7. Mybatis——返回类型为 集合嵌套集合 应该如何处理
  8. Oracle级联查询
  9. IOS使用Auto Layout中的VFL适配
  10. GDB调试程序实例演示