如何使用cAdvisor和Wavefront监控容器

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 本文讲的是如何使用cAdvisor和Wavefront监控容器【编者的话】本文对容器的可视化做了一些研究与探讨,揭示了容器资源指标监控的重要性。
本文讲的是如何使用cAdvisor和Wavefront监控容器【编者的话】本文对容器的可视化做了一些研究与探讨,揭示了容器资源指标监控的重要性。

据说仅仅在过去一年里Docker的使用量就翻了一倍,那么对容器监控的需求越来越急迫也在情理之中。虽然使用容器带来了很多好处,但是它在帮助我们简化很多工作的同时也带了额外的粒度和依赖性管理。这就是为什么可视化运行态容器很重要的原因。

更令人惊讶的是,直到目前为止,仍然没有用来监控Docker容器资源指标的直观方法。

Docker 1.5中引入的Docker Stats API带来了从容器中输出资源指标(CPU和内存使用量)的能力。而且也有很多开源的项目致力于容器的监控,这其中就包括Google的 cAdvisor 。从cAdvisor这个项目的 GitHub 上可以了解到cAdvisor这个工具是:

一个收集、聚合、处理以及导出运行态容器相关信息的后台进程。它为每个容器保留了隔离资源的参数、历史资源使用量、所有历史资源用量的矩形图以及网络统计。这些数据是由容器以及服务器导出的。

运行cAdvisor

cAdvisor最棒的一点在于它运行起来非常简单。因为它本身就是运行在容器里,所以你可以像运行其他任何容器一样把它运行起来,运行的结果是可预知并且始终一致的。它也可以和一些在容器外的 storage driver 打包使用。当你指定了storage driver参数的时候,它会自动把资源指标导出到对应的storage driver上。比如,下面的命令会在任意一个Docker主机上创建一个cAdvisor实例,然后把资源指标导出到一个StatsD服务器上:
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 \
-storage_driver=statsd \
-storage_driver_host=your_statsd_host:8125 \
-storage_driver_db=docker001

在Wavefront中查看容器指标

最近,我们把之前用来做演示的服务以及相关功能整合到新的服务器上。当我们开始做这件事时,我们想要用Docker重新部署。通过把每个服务隔离在容器中,我们可以简化部署和扩展的流程。我们也能够用cAdvisor隔离每个容器的资源指标。当你在同一个主机上运行多个容器的时候,这就特别有用,和我们的情况一样。

通过上面的命令,cAdvisor就可以立即输出指标到StatsD服务器上。这些指标已下面的命令格式创建:
stats.gauges.<storage_driver_db>.<container name>.<metric name>

Storage_driver_db是你的Docker主机传送给cAdvisor的任意一个名字。在这个案例里,我们使用了 docker001
containersWavefront01.png

cAdvisor也提供存储相关的资源指标,但是当你有挂载的数据卷的时候,监控起来就很困难。

对比容器资源使用量

我们迁移的其中一个服务是Twitter流处理应用。这个Twitter流处理应用(下图中的“twittermentionstream”)只从少量support账户处理tweets。在Twitter流量高峰时间段时,它处理的tweets每秒也不到0.2个。但是,它在我们的容器中仍然是消耗CPU最多的:
containersWavefront-02.png

在迁移后很短的时间内,我们给这个应用加了一些Twitter的账户。这让它每秒处理的tweets增加到超过8个,有40倍的增长。毫无意外地,这样地增长给资源用来带来了很大的影响。
containersWavefront-03.png


只要运行cAdvisor就可以得到这些信息,无需其他操作。如果你用容器隔离应用,你可以很明显地从CPU、内存和吞吐量看出你的改变带来的影响。在这里我们只看了CPU,但是其他的资源指标都展现了类似的行为。

用容器指标规划产能

举个例子,当我们想给这个流处理应用增加更多Twitter账户时,我们可以从上面的图表里面知道这个应用每秒处理8个tweets时使用了服务器将近40%的CPU。因此,我们会想要评估一下CPU使用量和Tweet处理量之前的相关性。
containersWavefront-04.png

上面的图表表明CPU使用量和Tweet处理量是线性相关的。通过这条线,我们可以预测在CPU使用量达到100%之前,这个服务器能够处理的tweets上限。

以前,发现数据之间的关系意味着手头要有比较准确的统计数字,甚至一些代码。在Wavefront里,只需要点两下鼠标就可以了。

结论

选用容器是大的趋势,我们从未看见这个趋势变缓。我们会继续评估容器可视化的趋势以及开发工作,然后以博客的形式发出来,因为越来越多的人在询问相关的事情。Google的cAdvisor提供了一个非常快速而且简单有效的方法来从容器获取资源指标到Wavefront。

原文链接:How to Monitor Containers with cAdvisor and Wavefront(翻译:Lambert Sun)

===========================================================
译者介绍

Lambert Sun,趋势科技DevOps Lead,敏捷开发实践者。

原文发布时间为:2016-06-19

本文作者:Lambert Sun

本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:如何使用cAdvisor和Wavefront监控容器


相关文章
|
8月前
|
Prometheus 监控 Cloud Native
构建高效稳定的Docker容器监控体系
【5月更文挑战第20天】 在微服务架构日益普及的今天,Docker作为其重要的实现技术之一,承载着大量应用的运行。然而,随之而来的是对于容器健康状态、资源使用情况以及性能指标的监控需求急剧增加。本文旨在探讨构建一个高效且稳定的Docker容器监控体系,不仅涵盖了监控工具的选择与配置,还详细阐述了监控数据的分析与处理流程。通过精心设计的监控策略和实时响应机制,我们能够确保系统的稳定性,并及时发现及处理潜在的问题。
|
4月前
|
Prometheus 监控 Cloud Native
docker安装prometheus+Granfan并监控容器
【9月更文挑战第14天】本文介绍了在Docker中安装Prometheus与Grafana并监控容器的步骤,包括创建配置文件、运行Prometheus与Grafana容器,以及在Grafana中配置数据源和创建监控仪表盘,展示了如何通过Prometheus抓取数据并利用Grafana展示容器的CPU使用率等关键指标。
231 1
|
8月前
|
监控 Java 网络性能优化
容器内存可观测性新视角:WorkingSet 与 PageCache 监控
本文介绍了 Kubernetes 中的容器工作内存(WorkingSet)概念,它用于表示容器内存的实时使用量,尤其是活跃内存。
56463 27
容器内存可观测性新视角:WorkingSet 与 PageCache 监控
|
7月前
|
Prometheus 监控 Cloud Native
容器化技术的性能调优与监控
【6月更文挑战第29天】本文探讨了容器(如Docker)的性能优化与监控,强调了其在云和微服务中的重要性。调优涉及资源限制设定、代码优化,通过性能测试、瓶颈分析进行迭代优化。监控目标是确保稳定性和可用性,使用工具如Portainer、CAdvisor、Prometheus来跟踪状态、性能指标和日志。监控内容涵盖容器状态、资源使用、日志和限制,策略包括设定阈值和告警机制。调优监控的优化有助于提升应用性能和企业价值。
|
7月前
|
监控 Java 数据安全/隐私保护
性能监控之 JMX 监控 Docker 容器中的 Java 应用
【6月更文挑战9天】性能监控之 JMX 监控 Docker 容器中的 Java 应用
700 1
|
8月前
|
监控 安全 云计算
云端防御战线:云计算环境下的网络安全策略构建高效稳定的Docker容器监控体系
【5月更文挑战第27天】 在数字化时代的浪潮中,云计算已成为企业与个人存储和处理数据的重要平台。然而,随着云服务使用率的飙升,网络威胁也愈发狡猾且复杂。本文将深入探讨在云计算环境中维护网络安全的挑战及策略,重点分析信息安全的关键组成部分,并提出多层次防御模型以增强云环境的数据保护能力。通过剖析最新的安全技术与实践,我们旨在为读者提供一套全面的网络安全解决方案蓝图。
|
8月前
|
Prometheus 监控 Cloud Native
Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus
Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus
|
1月前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
270 77
|
15天前
|
Ubuntu NoSQL Linux
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
96 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
|
1月前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序