NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

微服务与容器的监控 —— 来自 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:063068
用户头像

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

关注

评论

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

面向流批一体的 Flink Runtime 新进展

Apache Flink

大数据 flink 开源 编程 实时计算

书单 | 云端架构怎么设计才好?这几本书告诉你!

博文视点Broadview

阿里巴巴基于应用和变更的交付模式|阿里巴巴DevOps实践指南

阿里云云效

云计算 阿里巴巴 阿里云 持续交付 研发

2022-03微软漏洞通告

火绒安全

漏洞 漏洞修复 远程代码执行

创建索引源码学习

liang1993

elasticsearch

Antd多文件上传后台接收为null问题

CRMEB

在 Flutter 中使用 NavigationRail 和 BottomNavigationBar

坚果

3月日更 flutter for web

汽车之家基于 Flink 的实时计算平台 3.0 建设实践

Apache Flink

大数据 flink 开源 编程 实时计算

从0到1万字贴心讲解单体架构到分布式架构的演变(第一篇)

刘祥

后端 分布式,

JavaScript 基础(三):数组和对象

devpoint

JavaScript 数组 对象 3月月更

bigdata作业

Pyel

【Go实现】实践GoF的23种设计模式:SOLID原则

元闰子

Go 设计模式 SOLID原则

两行代码助你搞定SAST(静态应用程序安全测试)

极狐GitLab

gitlab security

为什么要学习togaf的不完全分析

spark

企业架构 架构师 TOGAF 软件架构师

WMS仓储管理系统解决方案

源字节1号

开源 前端开发 后端开发 WMS仓库管理

电影图书电视剧

xujiangniao

Java面向对象知识点拆分(二)

逆锋起笔

java面试 javase 3月月更 Java面试题

【高并发】不得不说的线程池与ThreadPoolExecutor类浅析

冰河

并发编程 多线程 高并发 线程池 异步编程

开源,从一个轮子说起|趣说开源

腾源会

开源 腾源会

程序员大学四年有对象和没对象的区别,对你工作有什么影响

刘祥

2021年第4季度记账理财应用监测,头部集聚加强,领跑者转型发展

易观分析

理财 记账

大数据培训:Spark性能调优与参数配置

@零度

大数据 spark

银行卡信息精准识别-智能快速绑卡

DS小龙哥

3月月更

java培训:22道springboot高频面试题

@零度

JAVA开发 springboot

《重学Java设计模式》作者开始录视频了!

小傅哥

设计模式 小傅哥 视频学习

web前端培训:react的多环境灵活配置

@零度

前端开发 React

Flink CDC 项目 GitHub star 破 2000,新增 Maintainer 成员

Apache Flink

大数据 flink 开源 编程 实时计算

如何解决海量数据更新场景下的Mysql死锁问题

领创集团Advance Intelligence Group

MySQL

反射解析与使用

Puciu

吾日三省吾身

xujiangniao

Spring Cloud Ribbon 中的 7 种负载均衡策略

王磊

SpringCloud

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