最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

搭建 Docker 监控框架的理论与范例

  • 2016-07-17
  • 本文字数:2050 字

    阅读完需:约 7 分钟

容器技术适用于分布式应用的构建与交付。Docker 作为容器技术的典范,已经被行业中很多国内外 IT 巨头企业采用,同时许多初创企业的业务也是基于 Docker 来实现的。在上个月结束的全球 DockerCon 16 大会上,Docker 的 CEO Ben Golub 宣布全球已有 46 万个应用 Docker 化,该数据在两年增长了 3000%。同时,Ben 称他们会继续努力使得每一台服务器都可以使用 Docker,并估计市场价值为上百亿。

InfoQ 就 Docker 运维的监控为主题,对云络网络科技的高级架构师王寒做了采访。

受访嘉宾介绍

王寒,云络网络科技公司高级架构师,2016 北京 QCon《 DevOps 与 Docker 的最佳实践》讲师,毕业于香港科技大学,曾任职于 IBM 和微软公司。擅长于 AWS、Azure 技术,Windows Networking,Docker 运维以及各类运维技术,DevOps 实践。

InfoQ: 作为运维监控方面的专家,你如何理解监控对于整个运维系统的意义?对于一般的系统,应该从哪些方面考虑监控内容?

王寒: 系统运维的很大一部分工作就是管理服务器,而管理的前提即是对被管理事物有清晰地了解。监控可以帮助我们了解我们管理的服务器的情况,所以监控是系统运维的基础。

对于一般性的系统,应该做到从下到上三层的监控:

  • 服务器层面,即最底层,包括服务器的基本信息如 CPU、内存、I/O、网络等;
  • 中间层,是服务器上安装服务的监控,如 Tomcat、Nginx、MySQL 等;
  • 上层应用层,这层可以使用 APM 监控工具来完成。

InfoQ:对于运维来说,系统基于容器带来了哪些便利性,又带来了哪些挑战?

王寒: 对运维而言,容器技术带来的便利性不多,而带来更多的是挑战。这些挑战包括在监控方面、日志收集方面、网络方面以及安全方面。在本次的访谈,我会主要谈谈容器技术给监控带来的挑战、以及相应的应对策略。

InfoQ:请谈一谈如 Docker 这样的容器监控原理?

王寒: Docker 监控大体分成三个部分:Docker 服务的监控、Docker 服务下每一个容器的基本监控、Docker 容器里所运行服务的监控

常见的监控方法包括 Cgroups,Docker command 以及 Docker API。Cgroups 就是利用伪文件的方式获取单个容器的基本状况,这种方式获取信息全但需要对数据做二次处理;Docker command 是利用 Docker 服务提供的一些命令来获取信息,这种方法简单便捷但信息量有限;Docker API 可以获取比 Docker command 更多的信息但是对于大规模的容器管理有着性能的瓶颈。

InfoQ: 在容器监控的探索中,你们遇到最大的挑战是什么?

王寒: 容器的监控主要挑战就是监控的代理安装在哪里,是在容器内部还是在容器外部。在容器内部的话,可以直接监控容器内的服务,但会占用资源;在外部的话技术上会复杂一些,但能更大程度的发挥容器的性能。

因为 Docker 官方的最佳实践是一个容器只运行一个服务,而添加监控代理在内部无疑增加了服务;所以为我们并没有考虑把监控代理放在容器内部。

经我们的经验,我们建议将监控给代理放在容器外部。将监控代理放在容器外部需要解决的关键技术,是如何获取容器内部服务的信息。

InfoQ:你们目前的监控方案是怎么样的?

王寒: 我们运维平台的监控系统是 Zabbix,所以我们主要是尝试了把监控集成到 Zabbix 上。下面是我们目前监控方案的流程图。

第一,考虑 Docker 监控代理安装的位置。如果选择将监控代理部署在容器内部,则需要在容器里启动一个 startup 服务来分别开启监控代理以及容器内所要执行的服务,这将损耗容器的性能所以这里并不建议;于是,我们尝试将监控代代理部署在容器外侧及 host 上。

其次,选择监控获取信息方式。从下自上来看,首先我们通过 Docker API 来获取 Docker 服务的信息,在这里我们可以收集到该 host 上有多少容器在运行,哪些停止,哪些暂停等整体信息;随后我们利用 Zabbix 的 Low discovery 获取容器的服务情况,然后在 Zabbix 后台建立相应的 Zabbix host;之后再分别利用 Cgroups(即伪文件 Pse-udo file)获取单一容器的 CPU,I/O 等基本情况,同时利用 Docker exec 脚本定位容器内部服务类别并赋予监控模板收集需要的信息。最后再将这些信息汇总到 Zabbix 服务器,进行统一的处理和显示。

InfoQ:基于容器的系统的未来将会怎样发展,这对于监控会带来怎样的影响?

王寒: 容器具有轻量级、易部署的特性,如果未来在性能、安全性、可靠性等层面更加成熟的话,那么容器技术在企业的使用程度会进一步增大。

容器技术是实现 DevOps 的一个重要技术手段。随着容器技术的广泛使用,将会出现更多的大规模的集群式容器需要监控和管理;我认为这将是未来容器发展对监控的一大挑战。

InfoQ 主办的 CNUTCon 全球容器技术大会即将开幕,特设 Docker 专题,将从技术层面剖析 Docker,专门解决参会者在 Docker 实践中遇到的共性技术难题。我们邀请到了曾经深度参与过 Docker 项目的企业开发者、开源项目代码贡献者前来分享。内容方面,不追求大而全,只希望能把一个小知识讲精讲透。


感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-07-17 19:004048
用户头像

发布了 58 篇内容, 共 42.6 次阅读, 收获喜欢 35 次。

关注

评论

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

科技向善,“以人为本”将掷地有声!

鼎道智联

代码评审的最佳解决方案

阿里云云效

云计算 阿里云 敏捷开发 代码管理 代码评审

CPP进阶:迭代器失效

正向成长

迭代器失效

一文读懂并发与并行

潘大壮

并发编程 多线程 并行 并发’ #java

面试题笔记

Clarke

Petal Maps的美学钥匙,解锁AITO问界M5的硬核浪漫

脑极体

全托管云原生 MQTT 消息服务 EMQX Cloud 版本更新,助力开展更加安全灵活的物联网业务

EMQ映云科技

物联网 IoT mqtt emq 3月月更

车联网数据安全新挑战的技术应对方案

Speedoooo

车联网 物联网 数据安全 容器安全

性能测试中的LongAdder

FunTester

性能测试 FunTester

共享洗车机设备多少钱一台?贵不贵

共享电单车厂家

共享洗车机设备 自助洗车机多少钱 自助洗车机价格

Flink Next:Beyond Stream Processing

Apache Flink

大数据 flink 编程 流计算 实时计算

恒源云(GpuShare)_无监督的QG方法

恒源云

自然语言处理 深度学习

java高级用法之:在JNA中使用类型映射

程序那些事

Java 程序那些事 3月月更 JNA

在线常用crontab表达式大全验证解析

入门小站

工具

【ELT.ZIP】OpenHarmony啃论文俱乐部——轻翻那些永垂不朽的诗篇

ELT.ZIP

OpenHarmony 数据压缩 ELT.ZIP

架构实战营6&微信业务架构&学生管理系统方案

唐诗宋词

澳鹏数据标注平台MatrixGo加速人工智能落地

澳鹏Appen

人工智能 数据标注 训练数据

车载运行小程序,快速打造智慧汽车应用生态

Speedoooo

车联网 物联网 智慧终端 智慧汽车 车载小程序

直播预告|FeatureStore Meetup V2

星策开源社区

人工智能 大数据 开源 特征平台 MLOps

JavaScript 引擎是如何实现 async/await 的

CRMEB

Hoo虎符研究院|区块链简报 20220328期

区块链前沿News

虎符 Hoo 虎符交易所

加盟24小时共享自助洗车怎么样?

共享电单车厂家

自助洗车机 自助洗车 24小时共享自助洗车 24小时无人自助洗车 自助洗车加盟

NFT游戏NFT数字藏品交易系统搭建开发

薇電13242772558

NFT

24小时自助洗车店加盟靠谱吗

共享电单车厂家

自助洗车机 自助洗车 24小时无人自助洗车 自助洗车加盟 24小时自助洗车店

USB DDK助你轻松实现HarmonyOS USB驱动开发

HarmonyOS开发者

HarmonyOS 驱动框架

阿里巴巴代码规约检测&Java 代码规约扫描

阿里云云效

阿里巴巴 阿里云 代码扫描 #java 代码规约检测

TDesign 更新周报(2022年3月第4周)

TDesign

数字孪生PaaS平台WDP4.3正式发布!三大升级,让开发更简单

Meta 小元

云原生 智慧城市 数字孪生

企业如何实现在线客服功能?

小炮

在线客服

智能家居开放平台技术建设新思路

Speedoooo

物联网 智慧社区 智慧家居 智能终端 应用平台

Linux之time命令

入门小站

Linux

搭建Docker监控框架的理论与范例_语言 & 开发_木环_InfoQ精选文章