你必须知道的容器监控 (1) Docker自带子命令与Weave Scope
本篇已加入《.NET Core on K8S学习实践系列文章索引》,可以点击查看更多容器化技术相关系列文章。本篇会介绍几个目前比较常用且流行的容器监控工具,首先我们来看看Docker自带的几个监控子命令:ps、top以及stats,然后是一个功能更强的开源监控工具Weave Scope。
# 实验环境:阿里云ECS主机(两台),CentOS 7.4
一、Docker自带监控子命令
1.1 ps
想必只要我们看过一点docker的文章,就应该都知道docker ps这个命令,它使我们可以方便的查看现在正在运行的所有容器实例。
# docker ps
执行后效果如下图:
其实,它等价于下面两句命令:
# docker container ps
# docker container ls
1.2 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和内存的占用量。
1.3 stats
如果我们想要查询每个容器对于各种资源的使用情况,那么可以直接使用docker stats,这是一个强大的命令,默认会显示一个实时变化的列表,以显示每个容器实例的CPU使用率、内存使用量以及可用量等等。
Note:可以看到上图中内存的Limit都是3.7G,这是因为在容器启动时没有特别指定内存Limit,所以这里都会默认显示Host主机的总内存量(这里我的阿里云ECS主机是4G的内存配置),但并不意味着每个容器都能使用到这么多的内存。因此,我们完全可以为不同的容器实例设置不同的资源限制值,我也有写一篇文章《Docker资源限制学习与验证》。
可以看到默认列表是基于容器ID来排列的,其实并不便于我们查看某个具体容器的资源使用情况,我们可以加上具体容器名字来定位和查看详情:
# docker stats exceptionless_api_1
二、强大监控工具Weave Scope
2.1 安装与运行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。
2.2 监控容器
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命令输入了:
2.3 监控Host主机
除了监控容器之外,Weave Scope还支持监控容器所在的Host。当我们单击顶部菜单中的“Hosts”选项,即可显示当前Host的信息:
可以看到,我目前就只有一台阿里云ECS主机Host。
同理,单击该Host图标也会显示其详细信息:
从图中可以看到,Host的实时资源使用情况和历史曲线我们都能够清晰的看到,滚动下拉条还可以看到Host上运行的进程和容器列表,如下图所示:
单击某个容器链接,就可以看到该容器的详细监控信息了,很方便。
此外,对于Host也提供了单击进入Shell的按钮,可以方便地打开Shell窗口做远程管理:
2.4 监控多个Host主机
实际环境中,我们会有多个Host,每个Host都会部署多个容器,那么如何让多个Host作为一个集群被监控呢?
假设我们有两个Host,只需要在这两个Host中执行以下命令进行启动即可:
# scope launch 192.168.16.150 192.168.16.151
这样无论访问哪个服务器的4040端口(假设没有更改默认端口)都能监控到两个Host。
这里我的两台阿里云ECS主机(edc-aliyun-server1 & edc-aliyun-server2)都被监控到了,棒吧!
2.5 逻辑条件定位查询
实际环境中我们会有很多个容器,那么如何快速查询到某个关键指标的容器呢?
Weave Scope还提供了逻辑条件的查询,这里我们以CPU和内存为例:
(1)查询内存使用量>900MB的容器实例:
筛选出来,目前只有一个容器内存使用超过了900mb。
(2)查询CPU占用率>1%的容器实例:
筛选出来,也只有一个(当然也跟我实验环境容器实例并不多有关)。
三、小结
对于容器监控,docker自带的监控子命令是最简单的最容易使用的,但是对于多Host监控、告警及监控非容器资源都不支持,且用户友好度不够。Weave Scope则解决了多Host监控、监控非容器资源,但是不支持告警,不过对于一般小型的微服务容器实例监控是足够了。此外,Weave Scope对于大屏显示的界面友好度及Dashboard做的还是不够好,因此后面第二篇我们会学习Prometheus,它是一个更加强大和优秀的开源容器监控方案。
参考资料
Cloud Man,《每天5分钟玩转Docker容器技术》
冰冻vs西瓜,《利用WeaveScope监控容器》
sjyu_eadd,《Docker那些事儿-Docker容器监控工具》
你必须知道的容器监控 (1) Docker自带子命令与Weave Scope的更多相关文章
- 第 10 章 容器监控 - 078 - Docker 最常用的监控方案
Docker 最常用的监控方案 当 Docker 部署规模逐步变大后,可视化监控容器环境的性能和健康状态将会变得越来越重要. Docker 自带的几个监控子命令: ps .top .stats 功能更 ...
- Docker容器监控(十)--技术流ken
docker自带的监控命令 docker自带了三个监控命令即ps, top, stats ps docker ps 可以帮助我们很快的了解当前正在运行的容器 -a:会显示已经停掉的容器 [root@h ...
- Docker容器监控(十)
docker自带的监控命令 docker自带了三个监控命令即ps, top, stats ps docker ps 可以帮助我们很快的了解当前正在运行的容器 -a:会显示已经停掉的容器 [root ...
- Docker 容器监控平台-Weave Scope
官网地址:https://www.weave.works/oss/scope/ 安装 执行如下脚本安装运行 Weave Scope. curl -L git.io/scope -o /usr/loca ...
- 第 10 章 容器监控 - 080 - Weave Scope 容器地图
Weave Scope 容器地图 Weave Scope 的最大特点是会自动生成一张 Docker 容器地图,让我们能够直观地理解.监控和控制容器. 安装 执行如下脚本安装运行 Weave Scope ...
- centos7下安装docker(17.2docker监控---weave scope)
weave scope的最大的特点是会自动生成一张docker 容器地图,让我们能够直观的理解,监控和控制地图 先来感受一下(盗图) 1.安装 执行如下脚本安装运行weave scope curl ...
- 080、Weave Scope 容器地图(2019-04-28 周日)
参考https://www.cnblogs.com/CloudMan6/p/7655294.html Weave Scope 的最大特点是会自动生成一张 Docker 容器地图,让我们能够直接的理 ...
- Weave Scope 多主机监控 - 每天5分钟玩转 Docker 容器技术(81)
除了监控容器,Weave Scope 还可以监控 Docker Host. 点击顶部 HOSTS 菜单项,地图将显示当前 host. 与容器类似,点击该 host 图标将显示详细信息. host 当前 ...
- 用 Weave Scope 监控集群 - 每天5分钟玩转 Docker 容器技术(175)
创建 Kubernetes 集群并部署容器化应用只是第一步.一旦集群运行起来,我们需要确保一起正常,所有必要组件就位并各司其职,有足够的资源满足应用的需求.Kubernetes 是一个复杂系统,运维团 ...
随机推荐
- (附源码gitHub下载地址)spring boot -jta-atomikos分布式事务
应用场景:双数据源,就是某些项目会涉及到两个数据源或者两个以上的数据源,这个多数据源的项目一般是数据同步,也就是把数据从另一个系统中,保存到另一个系统,两边的 数据库又不一样,比如一个Mysql.一个 ...
- 注解@Async解决异步调用问题
序言:Spring中@Async 根据Spring的文档说明,默认采用的是单线程的模式的.所以在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的. 那么当多个任务的执行势必会相互影响. ...
- 白话系列之IOC,三个类实现简单的Ioc
前言:博客园上已经有很多IOC的博客.而且很多写的很好,达到开源的水平,但是对于很多新人来说,只了解ioc的概念,以及怎么去使用ioc.然后想更进一步去看源码,但是大部分源码都比较困难,当不知道一个框 ...
- Elastic Stack 笔记(三)Kibana5.6 安装
博客地址:http://www.moonxy.com 一.前言 Kibana 是 Elastic Stack 公司推出的一个针对 Elasticsearch 的开源分析及可视化平台,可以搜索.查看存放 ...
- 03 (OC)* UITableView优化
一:cell注册和初始化 1:不注册cell 2:注册类 3:注册nib 4:storyboard 二:核心思想 1:UITableView的核心思想是:cell的重用机制.UITbleView只会创 ...
- Bat批处理命令执行中文路径解决方法
用window自带的记事本新建一个bat,然后把命令复制进去,保存就OK
- HTML文档简介
HTML简介 HTML标签 html文档标签: html源代码就好像word文档,有特殊的语法结构定义自己的功能. html文档标签 html标签,其下由两个主要节点标签head.body. head ...
- [Linux] linux下vim对于意外退出的文档的再次开启
转载自博客:https://blog.csdn.net/ljp1919/article/details/48372615 1.对于同一个文件如果上次已经打开,而未关闭的情况下,又打开该文件进行编辑时, ...
- 阿里巴巴 Sentinel + InfluxDB + Chronograf 实现监控大屏
前言 在上一篇推文中,我们使用时序数据库 InfluxDb 做了流控数据存储,但是数据存储不是目的,分析监控预警才是最终目标,那么问题来了,如何更好的实现呢?用过阿里巴巴 Sentinel 控制台的小 ...
- python Fatal error in launcher
1.之前电脑上只安装了一个python2.7时pip install virtualenv安装了virtualenv,后来又装了py3.6.最近想做断网环境下的虚拟环境快速移植发现查看virtuale ...