docker_监控
Docker 自带的监控子命令
ps
docker container ps
查看当前运行的容器。
新版的 Docker 提供了一个新命令 docker container ls
,其作用和用法与 docker container ps
完全一样。不过 ls
含义可能比 ps
更准确
top
执行 docker container top [container]
命令,查看容器运行了哪些进程
stats
docker container stats
用于显示每个容器各种资源的使用情况。
sysdig
sysdig 是一个轻量级的系统监控工具,同时它还原生支持容器。通过 sysdig 我们可以近距离观察 linux 操作系统和容器的行为。
安装和运行 sysdig 的最简单方法是运行 Docker 容器,命令行为:
docker container run -it --rm --name=sysdig --privileged=true
--volume=/var/run/docker.sock:/host/var/run/docker.sock
--volume=/dev:/host/dev
--volume=/proc:/host/proc:ro
--volume=/boot:/host/boot:ro
--volume=/lib/modules:/host/lib/modules:ro
--volume=/usr:/host/usr:ro
sysdig/sysdig
sysdig 容器是以 privileged
方式运行,而且会读取操作系统 /dev
,/proc
等数据
通过 docker container exec -it sysdig bash
进入容器,执行 csysdig
命令,将以交互方式启动 sysdig
这是一个类似 linux top 命令的界面。sysdig 按不同的 View 来监控不同类型的资源,点击底部 Views
菜单(或者按 F2),显示 View 选择列表
回车或者双击 Containers
,进入容器监控界面。
sysdig 会显示该 Host 所有容器的实时数据,每两秒刷新一次。各列数据的含义也是自解释的,如果不清楚,可以点一下底部 Legend
(或者按 F7)。如果想按某一列排序,比如按使用的内存量,很简单,点一下列头 VIRT
如果想看某个容器运行的进程,比如 weave
将光标移到目标容器,然后回车或者双击。
还可以继续双击查看进程中的线程。
返回上一级,按退格键即可。
点击底部 Search
菜单,然后输入关键字可以进行查找。如下图,关键字为 service
。
点击底部 Pause
菜单,暂停页面刷新。
sysdig 的特点如下:
- 监控信息全,包括 Linux 操作系统和容器。
- 界面交互性强。
sysdig 显示的是实时数据,看不到变化和趋势。而且是命令行操作方式,需要 ssh 到 Host 上执行,会带来一些不便。
Weave Scope
Weave Scope 的最大特点是会自动生成一张 Docker 容器地图,让我们能够直观地理解、监控和控制容器。如图
安装
执行如下脚本安装运行 Weave Scope。
curl -L git.io/scope -o /usr/local/bin/scope
chmod a+x /usr/local/bin/scope
scope launch
scope launch
将以容器方式启动 Weave Scope。
容器监控
Weave Scope 地图中间显示了 Host 当前运行的容器,不过少了几个 weave
相关的容器。
Weave Scope 将容器分为两类:Weave 自己的容器 System Container
,和其他容器 Application Container
,默认只显示后者。
Weave Scope 界面是一个可交互的地图,使用起来很方便。比如点击地图左下角选择开关 All
。
点击 CPU
选择器。将鼠标放到容器图标上,则会显示具体的 CPU%。
如果要查看容器的详细信息,比如bbox1,可以点击该容器的图标。
详细信息包括这么几部分:
Status
CPU、内存的实时使用情况以及历史曲线。
INFO
容器 image、启动命令、状态、网络等信息。
PROCESSES
容器中运行的进程。
ENVIRONMENT VARIABLES
环境变量。
DOCKER LABELS
容器启动命令。
IMAGE
镜像详细信息。
在容器信息的上面还有一排操作按钮。
Weave Scope 多主机监控
点击顶部 HOSTS
菜单项,地图将显示当前 host。
host 当前的资源使用情况和历史曲线一览无余。除此之外也能很方便地查看 host 上运行的进程和容器列表,点击容器名字还可以打开此容器的信息页面。
host 页面上部有一个按钮,点击可直接打开 host 的 shell 窗口
多主机监控
两个 Docker Host:
node3: 192.168.56.180.5
node2: 192.168.56.180.4
在两个 host 上都执行如下命令:
scope launch 192.168.180.5 192.168.180.4
点击 CONTAINERS
菜单项,将显示部署环境中所有的容器。
cAdvisor
在 host 中运行 cAdvisor 容器。
docker run
--volume=/:/rootfs:ro
--volume=/var/run:/var/run:rw
--volume=/sys:/sys:ro
--volume=/var/lib/docker/:/var/lib/docker:ro
--publish=8080:8080
--detach=true
--name=cadvisor
google/cadvisor:latest
监控 Docker Host
cAdvisor 会显示当前 host 的资源使用情况,包括 CPU、内存、网络、文件系统等。
监控容器
点击 Docker Containers
链接。
点击容器可以进入容器里查看,容器的信息
cAdvisor 的主要功能主要两点:
- 展示 Host 和容器两个层次的监控数据。
- 展示历史变化数据。
由于 cAdvisor 提供的操作界面略显简陋,而且需要在不同页面之间跳转,并且只能监控一个 host,这不免会让人质疑它的实用性。但 cAdvisor 的一个亮点是它可以将监控到的数据导出给第三方工具,由这些工具进一步加工处理。
可以把 cAdvisor 定位为一个监控数据收集器,收集和导出数据是它的强项,而非展示数据。
Prometheus
Prometheus 是一个非常优秀的监控工具。准确的说,应该是监控方案。Prometheus 提供了监控数据搜集、存储、处理、可视化和告警一套完整的解决方案。
Prometheus 的架构
Prometheus Server
Prometheus Server 负责从 Exporter 拉取和存储监控数据,并提供一套灵活的查询语言(PromQL)供用户使用。
Exporter
Exporter 负责收集目标对象(host, container…)的性能数据,并通过 HTTP 接口供 Prometheus Server 获取。
可视化组件
监控数据的可视化展现对于监控方案至关重要。以前 Prometheus 自己开发了一套工具,不过后来废弃了,因为开源社区出现了更为优秀的产品 Grafana。Grafana 能够与 Prometheus 无缝集成,提供完美的数据展示能力。
Alertmanager
用户可以定义基于监控数据的告警规则,规则会触发告警。一旦 Alermanager 收到告警,会通过预定义的方式发出告警通知。支持的方式包括 Email、PagerDuty、Webhook 等.
多维数据模型
通过维度对数据进行说明,附加更多的业务信息,进而满足不同业务的需求。同时维度是可以动态添加的,比如再给数据加上一个
user
维度,就可以按用户来统计容器内存使用量了。Prometheus 丰富的查询语言能够灵活、充分地挖掘数据的价值。前面示例中的 avg、sum、by 只是查询语言中很小的一部分功能,已经为我们展现了 Prometheus 对多维数据进行分片、聚合的强大能力。
部署
环境说明
通过 Prometheus 监控两台 Docker Host:192.168.180.4 和 192.168.180.5,监控 host 和容器两个层次的数据。
按照架构图,运行如下组件:
Prometheus Server
Prometheus Server 本身也将以容器的方式运行在 host 192.168.180.5 上。
Exporter
Prometheus 有很多现成的 Exporter,完整列表请参考 https://prometheus.io/docs/instrumenting/exporters/
本次实验使用:
- Node Exporter,负责收集 host 硬件和操作系统数据。它将以容器方式运行在所有 host 上。
- cAdvisor,负责收集容器数据。它将以容器方式运行在所有 host 上。
Grafana
显示多维数据,Grafana 本身也将以容器方式运行在 host 192.168.56.103 上。
运行 Node Exporter
在两个 host 上执行如下命令:
docker run -d -p 9100:9100
-v "/proc:/host/proc"
-v "/sys:/host/sys"
-v "/:/rootfs"
--net=host
prom/node-exporter
--path.procfs /host/proc
--path.sysfs /host/sys
--collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"
注意,使用--net=host
,这样 Prometheus Server 可以直接与 Node Exporter 通信。
Node Exporter 启动后,将通过 9100 提供 host 的监控数据。在浏览器中通过 http://192.168.180.4:9100/metrics 测试一下。
##### 运行 cAdvisor
在两个 host 上执行如下命令:
docker run
--volume=/:/rootfs:ro
--volume=/var/run:/var/run:rw
--volume=/sys:/sys:ro
--volume=/var/lib/docker/:/var/lib/docker:ro
--publish=8080:8080
--detach=true
--name=cadvisor
--net=host
google/cadvisor:latest
##### 运行 Prometheus Server
在 host 192.168.56.103 上执行如下命令:
docker run -d -p 9090:9090
-v /root/prometheus.yml:/etc/prometheus/prometheus.yml
--name prometheus
--net=host
prom/prometheus
prometheus.yml 是 Prometheus Server 的配置文件
最重要的配置是:
static_configs:
- targets: ['localhost:9090','localhost:8080','localhost:9100','192.168.56.180.5:9090','192.168.180.4:9100']
指定从哪些 exporter 抓取数据。这里指定了两台 host 上的 Node Exporter 和 cAdvisor。
另外 localhost:9090
就是 Prometheus Server 自己,可见 Prometheus 本身也会收集自己的监控数据。同样地,可以通过 http://192.168.180.5:9090/metrics 测试一下。
在浏览器中打开 http://192.168.180.5:9090 ,点击菜单 Status -> Targets
。
Target
的 State
都是 UP
,说明 Prometheus Server 能够正常获取监控数据。
运行 Grafana
在 host 192.168.56.103 上执行如下命令:
[top]
docker run -d -i -p 3000:3000
-e "GF_SERVER_ROOT_URL=http://grafana.server.name"
-e "GF_SECURITY_ADMIN_PASSWORD=secret"
--net=host
grafana/grafana
注意,这里我们使用了 --net=host
,这样 Grafana 可以直接与 Prometheus Server 通信
-e "GF_SECURITY_ADMIN_PASSWORD=secret
指定了 Grafana admin
用户密码 secret
。
Grafana 启动后。在浏览器中打开 http://192.168.180.5:3000/
配置
然后就可以展示数据
from cloudman https://home.cnblogs.com/u/CloudMan6/
docker_监控的更多相关文章
- zabbix监控docker容器状态
前言:前段时间在部署zabbix,有个需求就是需要监控容器的状态 也就是cpu 内存 io的占用,于是就自己写了一个脚本,以及模板,在这里分享一下 嘿嘿 : ) 废话我也就不多说,直接开始 首选,za ...
- 使用Monit监控本地进程
目前用它监控某些服务,失败自动重启,同时监控特定的日志文件,如果有变化,就发邮件报警 安装不细写了,网上好多 我先用cat /proc/version看了下我的系统是el6的,于是wget http: ...
- node服务的监控预警系统架构
需求背景 目前node端的服务逐渐成熟,在不少公司内部也开始承担业务处理或者视图渲染工作.不同于个人开发的简单服务器,企业级的node服务要求更为苛刻: 高稳定性.高可靠性.鲁棒性以及直观的监控和报警 ...
- 采用MiniProfiler监控EF与.NET MVC项目(Entity Framework 延伸系列1)
前言 Entity Framework 延伸系列目录 今天来说说EF与MVC项目的性能检测和监控 首先,先介绍一下今天我们使用的工具吧. MiniProfiler~ 这个东西的介绍如下: MVC Mi ...
- Logstash实践: 分布式系统的日志监控
文/赵杰 2015.11.04 1. 前言 服务端日志你有多重视? 我们没有日志 有日志,但基本不去控制需要输出的内容 经常微调日志,只输出我们想看和有用的 经常监控日志,一方面帮助日志微调,一方面及 ...
- C# 利用性能计数器监控网络状态
本例是利用C#中的性能计数器(PerformanceCounter)监控网络的状态.并能够直观的展现出来 涉及到的知识点: PerformanceCounter,表示 Windows NT 性能计数器 ...
- 使用Zabbix监控Oracle数据库
Orabbix介绍 监控Oracle数据库我们需要安装第三方提供的Zabbix插件,我们先测试比较有名的Orabbix,http://www.smartmarmot.com/product/orabb ...
- 【开源】.net 分布式架构之监控平台
开源地址:http://git.oschina.net/chejiangyi/Dyd.BaseService.Monitor .net 简单监控平台,用于集群的性能监控,应用耗时监控管理,统一日志管理 ...
- Opserver开源的服务器监控系统(ASP.NET)
Opserver是Stack Exchange下的一个开源监控系统,系统本身由C#语言开发的ASP.NET(MVC)应用程序,无需任何复杂的应用配置,入门很快.下载地址:https://github. ...
随机推荐
- PJSUA2开发文档--第六章 媒体 Media类
6. 媒体(Media) 媒体对象是能够产生媒体或接受媒体的对象. Media的重要子类是AudioMedia,它代表音频媒体.PJSUA2支持多种类型的音频媒体对象: 捕获设备的AudioMedia ...
- 关于MongoDB时间格式转换和时间段聚合统计的用法总结
一 . 背景需求 在日常的业务需求中,我们往往会根据时间段来统计数据.例如,统计每小时的下单量:每天的库存变化,这类信息数据对运营管理很重要. 这类数据统计依赖于各个时间维度,年月日.时分秒都有可能. ...
- linux kernel内存碎片防治技术
Linux kernel组织管理物理内存的方式是buddy system(伙伴系统),而物理内存碎片正式buddy system的弱点之一,为了预防以及解决碎片问题,kernel采取了一些实用技术,这 ...
- Cmder--Windows下代替原生的cmd命令行工具
Cmder是Windows下的命令行工具,用来代替Windows自带的cmd 官网:http://cmder.net/ 这里下载Full版本 https://github.com/cmderdev/c ...
- IDEWorkspaceChecks.plist文件是干什么用的?
在提交PR的时候,无意间发现了在xcworkspace/xcshareddata中多了一个名为IDEWorkspaceChecks.plist的文件.自己并没有手动创建此文件,在网上查了一下,最终对其 ...
- June. 22 2018, Week 25th. Friday
Where words fail, music speaks. 言语无法表达时,音乐就会响起. From Hans Christian Andersen. Where words fail, musi ...
- 数据库【mysql】之pymysql
安装模块 pip install pymysql 导入模块 import pymysql 创建链接 conn = pymysql.connect(host=') 创建索引 cursor = conn. ...
- 关于wxpython多线程研究包括(import Publisher等错误研究)
作为一个自动化测试人员,开发基本的应用桌面程序是必须的!最近在研究wxpython相关知识,目前看到多线程一块,发现官方文档介绍说:"在线程中不能修改修改窗口属性!",但是实际情况 ...
- 开放数据接口 API 简介与使用场景、调用方法
此文章对开放数据接口 API 进行了功能介绍.使用场景介绍以及调用方法的说明,供用户在使用数据接口时参考之用. 在给大家分享的一系列软件开发视频课程中,以及在我们的社区微信群聊天中,都积极地鼓励大家开 ...
- Entity Framework Core系列之实战(ASP.NET Core MVC应用程序)
本示例演示在ASP.NET 应用程序中使用EF CORE创建数据库并对其做基本的增删改查操作.当然我们默认你的机器上已经安装了.NET CORE SDK以及合适的IDE.本例使用的是Visual St ...