写点什么

微服务监控:2018 年预测

  • 2017-12-03
  • 本文字数:2216 字

    阅读完需:约 7 分钟

过去数年间,我们探讨了微服务实现和部署中所面临的多个挑战。一个贯穿始终的问题,是如何监控由微服务构建的分布式应用中的情况。随着复杂性的不断增加,以及协同(choreographies)理念日益重要,微服务监控变得尤为紧迫。例如,在 2017 年初 InfoQ 举办的一次“微服务实践的虚拟研讨会”中,在被问及分别列出微服务上前五位应做的和不应做的事项时,研讨会参与嘉宾之一的 Martin Verburg 说:

在构建整个系统之前,先构建 3 个互相交互的服务原型,找出实现非功能需求的解决方案,比如安全问题、服务发现、健康监控、回压、失效备援,等等。

在被问及是否可推荐一些专用于微服务开发的语言或技术时,研讨会参与嘉宾之一的 Adam Bien 说:

Java 已经诞生 20 多年了,它是一门成熟的开发语言,具有强大的工具和监控能力。Java 在一开始就融入了微服务概念,比如 Jini/JXTA 框架,它们与 No-SQL 数据库(比如 JavaSpaces)混在一起。可以说,Java 超前了 15 年,那个时候市场还没有做好使用这些技术的准备。不过,从 1999 年以来的那些技术在今天仍然适用。我们并没有重新造轮子。

在过去的一年甚至更长的时间中,我们总是习惯于将 Linux 容器和微服务等同看待,这影响到了对监控的考量。最近, RisingStack 的 CTO Péter Márton 撰文对明年的发展情况给出了一些意见。文中首先阐明了一些基本理念:

目前市面上的 APM(应用性能监控,Application Performance Monitoring)解决方案严重地依赖于不同层级的观测(Instrumentation),例如 NewRelic 和 Dynatrace 等。这些产品必须安装软件厂商特定的代理才能采集度量。代理采集应用的各种度量,其中包括一些底层语言特定的度量(例如垃圾回收行为等),以及一些软件库特定的度量(例如 RPC、数据库延迟等)。

Péter 进而指出,应注意不要过于快速地推进 APM 路线,甚至是深陷其中。文中给出了如下预测:

使用厂商特定的代理会导致一个问题,即一旦开发人员同时使用多种监控解决方案和代理,就会丢失当前 APM 解决方案的部分特性。多代理通常意味着对同一构件代码(code picec)做出多种观测,进而导致不必要的性能开销、虚假的度量乃至软件缺陷。我认为,使用厂商特定代理的趋势在未来将会发生改变,APM 软件提供商将会共同努力提出一种开放的观测标准。未来将会是一个独立于厂商的时代,所有价值将来自于不同的后端和 UI 特性。

随后 Péter 笔锋一转,开始探讨分布式追踪(distributed tracing)的相关问题。在他看来,容器和微服务技术的涌现,驱使开发人员为实现监控和调试而提升可观测性(Observability)方法。InfoQ 曾探讨过分布式追踪技术,例如对Zipkin 的介绍,以及近期 Cindy Sridharan 对可观测性的介绍

日志、指标和请求跟踪是可观测性的基础。日志为数据(如指标)提供额外的上下文。不过,日志对性能的影响也很大。相比之下,指标的开销是不变的,而且有利于预警。总而言之,日志和指标可以为观察单独的系统提供方便,但是对于穿过多个系统的请求,很难提供其生命周期的信息。跟踪提供了跟踪在各个系统之间传递的请求的能力。

Péter 同意上述的观点。在探讨 OpenTracing 技术及其重要性之前,文中给出了一些例子,说明了 OpenTracing 意在提供:

(……)标准的、独立于厂商的分布式追踪观测接口。Opentracing 提供标准的 API,用于收集代码观测指标,并传递给各种追踪后端。它可以做到,只需收集一次代码观测指标,完全没有问题地用于各种追踪后端。

他给出了一些将 OpenTracing 用于原生技术的例子,特别是从 Node.js 开发的角度。他强调指出,也可以说是发出了一个请求:“我希望将来会有越来越多的标准化观测解决方案。也希望有一天,所有的 APM 软件厂商能共同努力,给出最好的独立于厂商的代理

文章的更多内容是关于 OpenTracing 的。文中介绍了 OpenTracing 是如何与 ElasticSearch 和 Prometheus 一起工作的,并给出一些例子和展示图。正如 Péter 所指出的,这些例子显示了 OpenTracing 在架构拓扑可视化上的强大功能,有助于了解问题发生问题时的相关情况。文中进一步引用了 RisingStack 的一个 Node.js 上的度量追踪项目。据 Péter 介绍,该项目可用于:

(……)基于这些度量信息,对整体拓扑结果做逆向工程,并可视化各服务间的依赖关系。我们可以从这些度量中获得微服务架构中应用和数据库间通量和延迟的情况。

在 2016 年早期,我们曾就“对大规模容器进行监控所面临的挑战”访谈了部分人士。对于如何理解和使用追踪所采集数据方面的问题,Dynatrace 的首席技术战略师 Alois Reitbauer 给出了以下观点:

(……)每个人都必须了解这些监控数据。这也是为什么我们花费了大量时间创建自解释的信息图表,让每个人都能够其中的意义。另一个关键需求是对异常情况的检测。由于系统的巨大规模,没有任何人能够做到手动查看所有数字。因此,监控系统必须了解什么是正常的行为,并当系统的行为出现异常时进行提示。最后一个方面在于具备上下文的语义信息。举例来说,监控系统需要“理解”指标所代表的意义,以及它与其他指标的关联。我们需要了解整个应用中的所有依赖,将这此信息用于问题的分析。

在文章最后,Péter 做了总结,并给出如下预测:

要使微服务的监控和可观测性更上一层楼,并步入下一代 APM 工具时代,需要给出 OpenTracing 那样的独立于厂商的开放观测标准。这一新标准应得到 APM 软件厂商、服务提供商和开源软件维护者的采用。

查看英文原文: Monitoring Microservices - A Prediction for 2018

2017-12-03 18:004015
用户头像

发布了 391 篇内容, 共 147.0 次阅读, 收获喜欢 257 次。

关注

评论

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

Android 音视频 - EGL 源码解析以及 C++ 实现

声网

android 音视频 OpenGL ES

北鲲云如何为企业提供混合云解决方案

北鲲云

自定义View:resolveSizeAndState方法

Changing Lin

10月月更

从芯片公司到VR,字节跳动为了元宇宙加码布局

海比研究院

GrowingIO 数据安全实践

GrowingIO技术专栏

隐私保护 数据安全 隐私安全 数据安全法

以“有用”为圆心:重新认识智慧城市的“高手之路”

脑极体

硝烟弥漫的安全战场,只等一位超级英雄登场

白洞计划

声网发布融合CDN直播等系列新品,拓宽RTE产品边界

ToB行业头条

声网

官方线索|FATE开源社区1024程序员节福利

石云升

1024我在现场 10月月更

面试了一个34岁的Java大佬,感觉到他背过很多面试题,年薪50w面试基本都能答得上

Java java面试 java架构

面试官:如何防止 Java 源码被反编译?我竟然答不上来。。

Java 编程 程序员 架构 面试

开源应用中心 | KodBox快捷高效的私有云在线文档管理系统

开源技术

华为云企业级Redis:助力VMALL打造先进特征平台

华为云数据库小助手

GaussDB GaussDB ( for Redis ) 华为云数据库

从区块链到元宇宙 Metaverse

devpoint

区块链 元宇宙 10月月更

我的新下属都怀念老领导,我该把他们全部开除吗?

石云升

职场经验 10月月更

数字化转型请从一个清晰的定义开始 | DBT What

王和全

人工智能 大数据 数字化转型 数字化 数字经济

利用基数排序LSD方法给等长字符串按字典序排序

Regan Yue

算法 10月月更

喜大普奔!BFE 控制平面正式开源发布!

百度开发者中心

负载均衡 云原生 Go 语言 开源技术

[架构实战营] 模块一作业

张祥

架构实战营

【得物技术】时间切片的实践与应用

得物技术

架构 性能优化 大前端 性能 业务

HarmonyOS Connect伙伴峰会,车载智慧屏S50正式发布

科技汇

RTE2021 实时互联网大会参会感想

轻口味

1024我在现场 10月月更

EMQ 在2021电力人工智能大会:稳健数据基础设施架构支撑电力数字化发展

EMQ映云科技

人工智能 物联网 电力 mqtt

再谈字节小程序

字节跳动终端技术

小程序 字节跳动 火山引擎

欢庆1024程序员节,开源茁壮成长

Zilliz

创业 开源 程序员 成长

3面蚂蚁,一路过关斩将 成功拿到offer定级P6,大厂面试雀食有点难!

进击的王小二

java面试 大厂面试 阿里巴巴面经总结 java

打造价值交付体系,企业 CIO 如何应对 DevOps 命题?

BoCloud博云

DevOps 云原生

来,肝了这份网络安全学习计划无敌

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 学习安全

揭秘!探访百度AI反诈第一线

脑极体

024云原生之软件部署策略

穿过生命散发芬芳

云原生 10月月更

端智能研发核心套件:MNN 工作台深度剖析

阿里巴巴终端技术

深度学习 ios android 移动端 端智能

微服务监控:2018年预测_DevOps & 平台工程_Mark Little_InfoQ精选文章