QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

微服务与容器的监控 —— 来自 Adrian Cockcroft 的挑战

  • 2015-07-09
  • 本文字数:1902 字

    阅读完需:约 6 分钟

GlueCon 2015 大会上的一场演讲中,Adrian Cockcroft 为听众列举了如何对微服务与基于容器的应用进行监控的多条规则。除了这些指导方针之外,Cockcroft 也着重强调了在监控 cloud native 并且基于容器的系统时所面临的一系列挑战,并介绍了一个由他设计的微服务模拟与可视化工具,名为“Spigo”,它能够帮助开发者对大规模微服务的监控进行测试。

Cockcroft 是来自于 Battery Ventures 的技术专家,他在演讲中首先列举了关于微服务与容器监控的一系列规则,这其实是于 Monitorama 2014 大会上首次提出的规则的一个升级版本。

  1. 将更多的时间用于编写对数据指标的意义进行分析的代码,而不是用于编写收集、移动、保存以及显示指标的代码。
  2. 让关键业务指标的延迟降低到人类注意力的持续时间以下 (约 10 秒左右)。
  3. 请验证你的衡量系统是否具有足够的精确度与准确度,并将收集到的响应时间数据以柱状图表示。
  4. 对于比目前监控中的系统(与服务)需要更高可用性与可伸缩性的系统进行监控。
  5. 对分布式的、短期的、“cloud native”、容器化的微服务的监控进行优化。
  6. 让指标与你的模型相一致,以便理解它们之间的关系(这是一条新的规则)。

Cockcroft 表示,这条新的规则,即“让指标与模型相一致”是必不可少的。因为基础设施、数据流以及自主权与组织结构等因素往往是互不相交的,只有将它们关联在一起,指标才能够表现出其意义。随后,Cockcroft 将微服务定义为“一种由边界上下文组成的松耦合面向服务架构”,在此定义的基础上深入讨论了在监控微服务与容器技术(例如 Docker )时所面临的一系列挑战。

首先提出的一个挑战是“复杂性”,Cockcroft 表示在一体性的应用程序内部的依赖是无限制的,比起具有明确的、可视的微服务依赖,其复杂性可能会高出许多,要检测出所有的外部依赖是一件非常困难的是。第二个挑战是“变更的速度”,它所表示的是在对基于容器的微服务应用进行持续部署时,可以实现的变更速率已经达到了相当的高度,这也带来了相应的问题:

对于容器应用来说,每分钟一次进行 CPU 占用率的检测已经失去意义了……从监控工具的角度来看,如何应对这种变更速率是一个巨大的挑战。

“大规模化”是第三个被提出的监控挑战,这里的规模不仅是指运行中的容器与机器的数量,还必需考虑到“ cloud native ”中的相关概念,例如地区和可用性区域。当然也要考虑服务本身的大规模化,以及可能会发生的多个版本的服务并行运行的情况。

Cockcroft 还表示,“数据流”也是微服务架构中一种内在的挑战。虽然有某些工具能够跨多个服务展示请求流,例如 Netflix 的 Atlas (以及相关的应用)、AppDynamics 的应用性能管理工具,以及Twitter 的 Zipkin ,但我们所关注的架构可能会包含多个微服务,这就意味着如何使这些服务做到可视化成为一个实在的挑战。

在微服务架构的应用程序中,产生“故障”的可能性是一个始终存在的挑战,而在云环境中,这一问题往往被进一步放大。举个例子,如果某个可用性区域出现了分区或故障,该如何在监控或分析平台中显示这一情况?按照设定,cloud native 的应用在出现部分可用性区域故障时会继续运行,因此这种情况本身并不算是一种“故障”。但应将这一情况通知系统的运维人员,甚至可能需要停止应用的部署。

在这种情况下,如何理解、并且对微服务的故障模式进行交流,这一点正是挑战之所在。

对于大规模的微服务及容器监控工具进行测试的过程会很快造成高昂的代价,因此,对这一场景进行模拟是一种可行的方案。Cockcroft 为听众介绍了他所设计的微服务模拟器“Spigo”(又名“simianviz”),可以通过它对你所关注的微服务架构进行建模与可视化。

Spigo,或者说 simianviz 是一个基于 Go 与 D3.js 开发的应用程序,能够生成人为的测试微服务系统。它完全能够模拟大规模的系统配置,最终目标是能够支持对实际应用中的监控工具进行负载测试。此外,Cockcroft 还计划让这套工具支持更多的特性,例如动态地变换代码提交以及配置的自动伸缩、支持 Netflix 用于处理区域及地区故障的 chaos gorilla 工具的建模,以及在 Spigo(simianviz)的多个显示之间建立 WebSocket 连接。

这是我为你提出的挑战:用 Spigo 创建你的架构,让它对你的监控工具进行负载测试,并让它帮助你修复微服务的监控过程中的问题。

关于 Adrian Cockcroft 在 GlueCon 大会上所做的演讲,可以在 Cockcroft 的 SlideShare 帐号下找到更多的信息与幻灯片。此外还可以在 GitHub 上找到 Spigo 或 simianviz 的源代码。GlueCon 是一个一年一度的开发者会议,它专注于云计算、DevOps、移动、API 与大数据,可以在 GlueCon 网站上找到更多的信息。

查看英文原文: Monitoring Microservices and Containers: A Challenge by Adrian Cockcroft

2015-07-09 09:063393
用户头像

发布了 428 篇内容, 共 184.4 次阅读, 收获喜欢 39 次。

关注

评论

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

SAP | 认识 abap 工作台(下)

暮春零贰

SAP abap 10月月更

「小程序开发」关于网页与小程序的通信

叶一一

前端 小程序开发 10月月更

【愚公系列】2022年10月 Go教学课程 028-函数小结案例(通讯录)

愚公搬代码

10月月更

层出不穷的机器学习框架到底在“卷”什么?

小红书技术REDtech

机器学习

「前端组件开发」越折腾越有趣,封装了一个表单组件

叶一一

前端 React 组件开发 10月月更

「CSS畅想」我的发呆专属,反复解锁手机屏幕

叶一一

CSS JavaScript 前端 10月月更

cstdio的源码学习分析10-格式化输入输出函数fprintf---宏定义/辅助函数分析02

桑榆

源码刨析 10月月更 C++

「CSS畅想」自动打字效果,默写首诗来读读

叶一一

JavaScript 前端 10月月更

微信红包后台系统可用性设计实践

Johnny

从手动测试到自动化测试(下)

FunTester

容量管理的三个层次

阿泽🧸

10月月更 容量管理

「Hive进阶篇」三、HQL底层执行过程及原理详解

大数据阶梯之路

大数据 hive 面试 数仓

「Hive进阶篇」四、HQL 高级巧用

大数据阶梯之路

大数据 hive 面试

List的基础数据的处理

卢卡多多

List 10月月更

如何“阅读”数学?:上海顶尖中学学生的阅读笔记

图灵社区

数学 青少年

「CSS畅想」定时+随机,开启今日上上签

叶一一

JavaScript 前端 10月月更

Java面向对象之方法块+this关键字

魏铁锤

10月月更

「前端组件化」以Antd为例,快速打通UI组件开发的任督二脉

叶一一

前端 React 10月月更

面向对象之方法重载

魏铁锤

10月月更

「React开发」梳理HOC的点点滴滴

叶一一

前端 React 10月月更

全链路监控建设的4个重点

穿过生命散发芬芳

全链路监控 10月月更

leetcode 146. LRU Cache LRU 缓存 (简单)

okokabcd

LeetCode 数据结构与算法

微信红包系统设计分享 | 如何扛住100亿次请求?

Johnny

将系统划分为模块(微服务)的必要性

宇宙之一粟

微服务 系统设计 论文阅读 模块化 10月月更

Java面向对象之构造方法

魏铁锤

10月月更

「经验总结」高效开发,老代码可以这样动

叶一一

高效工作 前端 10月月更

一文彻底搞懂IP地址到底是什么?

長歌

微信红包体系设计分析

Johnny

微信红包实现原理

Johnny

Dev-C++5.11安装教程

Yeats_Liao

后端 Java core 10月月更

VS2019 添加bits/stdc++.h万能头文件库

Yeats_Liao

后端 Java core 10月月更

微服务与容器的监控 —— 来自Adrian Cockcroft的挑战_服务革新_Daniel Bryant_InfoQ精选文章