11 月 19 - 20 日 Apache Pulsar 社区年度盛会来啦,立即报名! 了解详情
写点什么

针对 Docker 容器的监控指标

  • 2016-08-07
  • 本文字数:1778 字

    阅读完需:约 6 分钟

Stefan Thies 是 Sematext 的 DevOps 布道师,在最近的一篇博客文章中,他讨论了十个重要的容器监控指标及其在 Docker 容器运维中的意义,尤其是针对单个主机上运行多个容器的场景。我们可以将它们集中到一个相互关联的视图中,这些指标为基于 Docker 的环境监控提供了一个很好的起点。

按照作者的说法,他针对容器运维提出了一组指标,它们的基本原理来源于容器监控所面临的挑战,因为容器的行为是与 VM 不同的:“传统的监控方案会从每个服务器以及它们运行的应用中获取指标。这些服务器以及运行在服务器上的应用一般都是静态的,会有非常长的运行时间。”

相反,容器的行为与之不同:

  • 可以短期存活和动态调度;
  • 是进程,但是具有自己的环境、虚拟网络和不同的存储管理;
  • 共享底层主机的资源,在相同的主机上可能会调度短期存活的批处理命令以及长期存活的进程。

Stefan 所提出的指标可以分为基于容器的以及基于主机的两类:

基于容器的指标

资源共享需要对容器进行合理的配额,而这反过来又需要能够看到容器资源的使用情况。根据调查,一个 Docker 主机一般会运行 5 个容器。另外,像 Docker Swarm、Kubernetes 或 Mesos 这样的容器协作解决方案能够高效调度主机集群中的多个容器,因此容器的行为需要进行监控并进行相应的调优。

  • 容器 CPU——节流的(Throttled)CPU 时间:观察在容器的 CPU 使用中节流的总时间,这个指标提供了在 Docker 中正确设置 CPU 共享的基本信息。只有当主机的 CPU 达到极限,核心才会限流容器的 CPU 时间。“这个指标的飙升提供了一个很好的指示,这意味着一个或多个容器所需要的 CPU 处理能力超出了主机所提供的能力范围。”
  • 容器的内存使用容器的内存交换(Swap)以及容器内存失败计数器(Memory Fail Counter):这些指标的上升意味着容器需要的内存数量超出了为其分配的值。Stefan 建议使用容器内存上限(container memory limit)来确保应用不会使用太多内存,从而避免影响到同一个主机上的其他容器。但是, Docker 文档还提到:“注意,内存控制分组(memory control group)会增加一点损耗,因为它会对主机的内存使用进行非常细粒度的统计。”
  • 容器的磁盘 I/O:多个容器可以并发使用相同的主机资源。监控有助于分配“更高的吞吐量给关键应用,如数据存储或 Web 服务器,而对于批处理的操作则可以进行磁盘 I/O 分流。”
  • 容器的网络指标:Stefan 认为,对于互相关联的容器来说,监控虚拟网络是非常重要的,比如容器化的负载均衡器。丢弃的数据包需要进行跟踪,不过“网络流量也是一个很好的指示器,能够反映客户端对应用的使用情况,有时候我们会看到很高的峰值,这可能意味着出现了拒绝服务攻击、负载测试或者客户端应用出现了故障。”

基于主机的指标

相对于容器来说,Docker 主机是长期运行的,因此应该进行处理能力管理和资源优化,当多个负载运行在同一个主机上的时候,更应如此。

  • 主机 CPU主机内存:理解主机和容器的 CPU 以及内存使用情况能够优化 Docker 主机的资源使用,作者这样写到:“当资源使用进行了优化之后,实际上我们会预期甚至要求出现较高的 CPU 使用率,只有当 CPU 使用率出现下降(服务产生了中断)或者长期超过一定的最大限制(如 85%)时才应该出现告警。”
  • 主机磁盘空间:Stefan 认为,对磁盘空间进行监控和告警是非常重要的,因为容器、镜像以及主机 mount 的卷都会消耗磁盘空间。定期移除不再使用的容器和镜像以便对磁盘空间进行清理是一种很好的实践。
  • 运行在主机上的容器总数::在静态使用的场景下,了解当前和历史上的容器数量能够帮助我们在升级的时候确保所有的功能都与之前的部署具有相同的运行状态。在更为动态的场景中,像 Kubernetes 这样的集群管理器会自动调度不同类型的负载,这样的话指标就会发生不规则的变化。因此,Stefan 建议使用异常探测(anomaly detection)功能来对突然的变化进行告警。

作者建议使用现代的监控工具,以便应对容器动态化的特性。 Sematext 提供了一个监控解决方案,它将监控、日志以及事件集成到了同一个视图之中,支持按照时间来查看这些数据。 Docker Agent 扩展了这个容器监控方案,包含了容器自动探测以及收集 Docker 事件、日志以及指标的特性。

监控 Docker 容器的其他方案包括 cAdvisor sysdig DataDog 。关于这些工具的对比, Rancher InfoWorld 曾经发布过相关的文章。

查看英文原文 Monitoring Metrics for Docker Containers

2016-08-07 19:008514

评论

发布
暂无评论
发现更多内容

攻击面管理(ASM)技术详解和实现

风向标

网络安全 asm 安全419 零零信安

【模块五】设计微博系统中”微博评论“的高性能高可用计算架构

yhjhero

架构 #架构训练营

【TcaplusDB知识库】事务操作—如何查询指定app的svr故障恢复事务列表

tcaplus

自从用了这个APP,我的身体状况....

IT蜗壳-Tango

极客时间 IT蜗壳

【网络安全】记一次网站站点渗透

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

虚位以待 | 龙智有你更出彩

龙智—DevSecOps解决方案

求职 招聘

企业CICD规模化落地浅析

阿里云云效

云计算 阿里云 云原生 CI/CD 持续交付

档案管理系统平台:助力实现档案管理现代化

小炮

315权益日解读:“幸运”大牌和巨头,“挡枪”作坊和“小弟”?

易观分析

315晚会 央视315晚会 消费者权益

踏雪痕项目管理学习笔记

踏雪痕

项目管理 PMP Certification 3月程序媛福利 3月月更

python Excel数据表格转为HTML网页数据表格,阿里快手拼多多等7家大厂Python面试真题

程序媛可鸥

Python 程序员 面试

Python 下载的9种方法,Python开发技巧

程序媛可鸥

Python 程序员 面试

郑州等保测评公司有哪些?在哪里?

行云管家

网络安全 等保 等保测评 等保2.0 郑州

网站被DDOS攻击了怎么办?

源字节1号

开源 前端开发 后端开发

python sorted()函数及sort()方法,零基础Python开发

程序媛可鸥

Python 程序员 面试

【TcaplusDB知识库】事务操作—如何申请数据按表备份

tcaplus

一眼定位问题,函数计算发布日志关键词秒检索功能

阿里巴巴云原生

Nebula Graph 在企查查的应用

NebulaGraph

数据库 开源 图数据库 知识图谱

python pandas loc布尔索引(指定条件下的索引),你花了多久弄明白架构设计

程序媛可鸥

Python 程序员 面试

案例研究:亚马逊广告使用 PyTorch 和 Amazon Inferentia 扩展广告处理模型

亚马逊云科技 (Amazon Web Services)

模型 PyTorch

龙智荣誉 | 一封来自客户的感谢信

龙智—DevSecOps解决方案

感谢信

针对Docker容器的监控指标_DevOps_Grischa Ekart_InfoQ精选文章