嘉宾丨周小帆
整理丨千山
审校 | 云昭
随着云原生架构开始落地实践,应用架构从单体系统逐步转变为微服务,越来越多企业意识到可观测能力已经成为云原生的基础设施与必备能力。
那么,最近被频频提及的可观测性,相比监控、APM等名词,区别在哪里?日前,51CTO特邀阿里云资深技术专家周小帆,围绕可观测技术的演进等议题进行了采访。
51CTO:为什么需要可观测性?它是云原生时代的必然产物吗?
周小帆:可观测性不是一个新鲜的名词,云原生时代被再次提及是一个必然的结果。云原生架构所倡导的微服务、DevOps模式,同时带来了效率、可用性的提升与复杂度的增加,而增强可观测性成了降低复杂度的唯一手段。传统监控手段仅仅能够做到问题被动发现,而可观测性则要求不仅发现问题,更对于问题现象背后本质给出明晰解释。可观测性背后指标、日志、事件、链路数据,以及诊断工具的结合使用,为事前预防、事中处理、事后复盘提供了重要决策依据。可观测性是基础设施自动化的基石,优秀的可观测性是确保云原生红利高效释放的前提条件。
行业中时常会有“APM已死,可观测已来”的论调,我不太认同。相反,我认为APM的产品形态已经是在传统监控基础之上做到了”第一波进化“,首次实现了可观测三大支柱(指标、链路、日志)在应用层相互融合的最佳实践。
云原生时代的可观测,是将APM产品中的一些经典技术与理念,升级、延伸、泛化至整个云的技术架构和组织,促进更紧密的协同、覆盖更多场景、发挥更大价值。企业数字化转型让业务成败与IT基础设施稳定性关联愈发紧密,业务在线化凸显了用户体验的重要性。正如其发展历史,可观测性不是一个新鲜概念,它原本就无处不在。而在云时代,随着散落在各处的可观测数据被不断连接,小到问题定位发现,安全风险识别,大到全局成本管理、稳定性治理甚至是业务增长,都依赖于可观测技术和数据,可观测性成为了度量企业IT治理水平的重要指标。
大家今天期望能够得到的“可观测产品”,实际上大部分是在上一代APM产品基础之上的“第二波进化”,他们需要具备海量可观测数据的存算能力,以应用为中心,向上关联业务成败与用户体验,向下覆盖基础设施与云服务监控,一站式满足除了IT稳定性以外的多种核心诉求。


51CTO:微服务下的可观测能力建设有哪些难点?
周小帆:系统的可观测与故障根因分析作为重要的运维场景,随着系统架构、资源单位、资源获取方式、通信方式演进过程,遭遇巨大挑战。而这些挑战,也在倒逼着可观测相关技术发展,接下来我们以微服务举例:
随着Spring Cloud和Dubbo等常见微服务框架被广泛应用,微服务架构接受程度不断提升,由最初以机器为核心的云服务器ECS上云,到以容器为核心的容器化云原生部署;为了更加敏捷,开始以应用为核心的微服务化。在云原生下的微服务可观测主要面临三个挑战:
除此之外,还有微服务配置混乱,不好梳理;微服务应用上Kubernetes之后,出现线程池满,却找不到原因等一系列问题。因此,微服务可观测要解决在客户端输入请求后,能感知其在各服务间进行采集、传输、处理、存储的状态,进而预测、定位、解决系统运行过程中出现故障的问题。而这些问题,阿里巴巴在自身建设可观测体系的过程中也都遭遇过。

51CTO:阿里内部是基于什么诉求开始构建可观测能力?经历过哪几次重要的迭代?
周小帆:作为最早进行云原生改造的互联网企业,阿里巴巴探索与实践可观测技术由来已久,并经历过以下几个阶段:
第一代:脱胎于阿里巴巴「鹰眼」产品的应用实时监控服务ARMS诞生
关键词:从单体走向微服务,自下而上的爆发式增长
2013年,随着阿里巴巴业务快速发展,应用从单体走向微服务,微服务体系催生出去中心化组织架构,产生自下而上的爆发式增长,并快速向DevOps模式演进,工程师们以自助模式向基础软件寻找更多答案。也是从这个阶段开始,监控走向“可观测”的畅想已初备雏形。统一PaaS层快速催生统一可观测基础设施,但微服务下的可观测能力建设初期遇到以下两个难点:指标基数发散、微服务拆分过细、埋点精度不断上升等因素带来的“单笔交易可观测成本”的急剧上升;三代探针技术与管控体系演进带来的可观测数据来源质量问题,以及大规模探针管控与稳定性保障。
关键词:业务中台背后的数字化运营,引领自上而下的稳定性治理体系
与此同时,随着业务中台诞生,为了更好的应对季节性电商大促、多变的业务形态,服务治理、混沌工程等产品诞生出来,碎片化的可观测能力逐渐被整合在一起,引领自上而下的稳定性治理体系,构建以业务SLO为核心的稳定性治理体系。通过日志链路指标和诊断工具的整合,阿里巴巴内部APM产品的实用性得到大幅提升,被大家所熟知的「鹰眼」雏形初现。观测能力和管控能力相融合:全链路灰度包括像全链路、灰度、全链路压测、混沌工程这样的复杂治理手段,包括像容量评估,微服务之间的强弱依赖评估这样的分析场景,都充分集成到现有可观测能力中。并在此阶段以应用为中心,以管控集成、领域知识积累为主,让数据在一些封闭场景内能够实现价值最大化。
2017年,阿里巴巴将内部锤炼多年的监控工具对外服务,应用实时监控服务ARMS正式商业化。作为云原生一体化可观测性平台,ARMS提供全栈式性能监控和端到端全链路追踪诊断能力。同时,结合阿里云日志服务SLS的日志数据分析能力以及云监控丰富的云服务与基础设施监控能力,用户可以轻松完成用户体验、应用服务、云产品、容器的一站式监控。
第二代:与应用托管与治理产品无缝集成,覆盖观测、安全、业务稳定性等多个刚需场景
伴随着企业加快数字化转型步伐,导致IT系统更新频繁,应用复杂度急剧升高。微服务、容器化等技术也逐渐在传统企业中兴起,而云服务也成为企业大规模运营数字业务所必备的技术服务。以用户体验为核心的应用性能管理(APM)受到广泛关注,并在帮助企业实现数字化转型及智能化运维的道路上表现出巨大的价值。体验为王时代催生向上覆盖业务连续性,向下连接基础设施稳定性的一体化可观测产品形态。
为了进一步提供更加完善的产品能力,继2017年发布前端监控,2021年阿里云推出云拨测产品。从用户端角度来观测系统可用性,为云上用户提供开箱即用的企业级被动式及主动拨测式应用监测解决方案,为用户体验优化提供坚实、可靠的可观测分析工具。
第三代:让阿里云积累的可观测技术、开源可观测事实标准、客户存量与自研的可观测数据资产做无缝融合
可观测需求在云原生时代的爆发式增长,以及基础设施的标准化,使得可观测开源、商业化项目不断涌现,国内可观测市场心智逐步形成,Prometheus、Grafana、Opentelemetry等可观测标准也逐渐形成。也正基于此,阿里云接连推出Prometheus监控服务、Grafana服务等可观测产品,并于6月推出阿里云可观测套件ACOS,进一步整合阿里云相关可观测产品与场景,帮助企业提供更丰富、更完整的可观测能力,同事大幅节省搭建可观测系统的资源和运维开销。

51CTO:目前使用阿里云可观测产品套件的具体落地场景有哪些?
周小帆:得益于云原生开源生态蓬勃发展,工程师可以轻而易举地建设一套监控体系,比如使用Prometheus+Grafana搭建基础监控,或使用SkyWalking或Jaeger搭建追踪系统,亦或使用ELK或Loki搭建日志系统。可观测技术百花齐放,导致目前面临最大问题不在于功能缺失,而在于数据的割裂。对运维团队而言,不同类型可观测数据分散存储在不同后端,排查问题仍需在多系统之间跳转,效率得不到保证。
今天的客户,不得不在商业化可观测产品、开源自建与存量的可观测资产之间做出艰难选择。
解决这种割裂的方式有两种,一种方式是打造全自研的一站式可观测产品,替换客户现有方案。但历史实践告诉我们,一站式的方案往往会形成另一座数据孤岛。
因此,我们走了另一条道路:向下,提供标准化数据接口,整合阿里云上碎片化的可观测产品,并做到可以连接客户存量的可观测数据资产;向上,提供可自由定制的产品界面,帮助客户形成自己独有的、1+1+1>3、无厂商锁定的可观测解决方案。阿里云可观测套件,从可观测体系设计视角,全面满足企业不同观测场景:
Prometheus监控服务对包括云服务器ECS、容器Kubernetes、VPC在内的各类云服务以及消息队列等三方中间件进行观测。并与各种云服务快速联动,迅速进行扩缩容或负载均衡,从而更快的解决问题。
基于阿里云自研Java探针的应用监控全面满足应用监控需求。相较于开源工具,在数据质量、探针性能、分析能力等方面具有大幅强化。即使使用开源SDK或探针,也可以通过Opentelemetry将数据上报到应用监控平台。
过移动监控、前端监控、云拨测等模块,全面覆盖用户在不同终端上的体验与性能。
于各层采集的数据、告警信息进行统一告警以及根因分析,直接通过Insight呈现发现结果。并集成钉钉、企业微信等协作平台更加高效地进行问题发现并处理跟踪。
不管是应用实时监控服务ARMS、Prometheus监控的上报数据,还是日志服务、Elasticsearch、MongoDB等各种数据源,都可以通过全托管Grafana服务进行统一的数据可观测数据呈现,建立统一的监控大盘。

51CTO:阿里云可观测产品相较市场上的同类产品,首创性和差异化优势在哪里?
周小帆:Gartner曾预测,2023年全球可观测市场规模预计将达到164.94亿美元。2024年将有30%企业会通过可观测技术来提升数字化业务运行性能。热潮之下,不管是老牌厂商、初创公司都在可观测领域迸发出强劲的产品能力。相较市场上的同类产品,阿里云也有着自己思考与差异化优势。与众多第三方服务或开源自建方案不同,阿里云可观测套件实现多层次连接,全面打破数据孤岛,挖掘数据背后的业务价值。
第一,向上形成兼容开源标准的统一观测界面
与应用实时监控服务ARMS的应用层监控(APM)、前端体验监控(RUM)、基于eBPF技术的K8s监控、云监控等阿里云自研可观测产品双向连接,将可观测数据与分析能力以开放标准(PromQL)、统一开放界面(Grafana)的形式提供给用户,便于用户的再集成与二次加工。ARMS也全面支持OpenTelemetry SDK进行自定义埋点的增强。
第二,向下连接阿里云可观测数据存储类产品
统一诸如日志服务SLS、Elasticsearch服务等可观测数据存储,以及散落在异构数据存储设施中(如Clickhouse、Lindorm、RDS)的可观测数据,实现可观测数据源管理与异构数据间无缝探索。
第三,横向连接阿里云所有应用管控产品与中间件产品
阿里云所有应用管控(Serverless应用引擎SAE、容器服务ACK、函数计算FC、企业级分布式应用服务EDAS等)与中间件产品全面拥抱开源可观测标准,并与可观测套件进行连接。目前,已有超过50款阿里云云服务通过Prometheus标准进行观测。
第四、全面拥抱开源
阿里云作为国内可观测领域的引领者,积极拥抱开源生态,提供Prometheus监控服务、Grafana服务、兼容OpenTelemetry、Skywalking等主流开源协议的链路追踪服务,共同形成新一代阿里云可观测套件。使用标准化技术向下连接存量、碎片化可观测数据,向上帮助客户形成自己独有、无厂商锁定的可观测解决方案,实现真正的客户成功。
第五、打造可观测数据生态
自2017年与Elastic公司合作打造Elasticserach服务后,阿里云先后与Grafana Labs、博睿数据、谐云、袋鼠云等企业达成战略合作,与阿里云自研可观测体系无缝集成,把引领业界标准的优秀产品与技术服务带给阿里云的海量客户,提供更丰富、优质、低门槛的可观测服务与能力。
51CTO:能否结合具体用户案例对于阿里云可观测产品的部署和实践效果予以说明。
周小帆:以2022年北京冬奥会举例,作为历史上第一届核心系统全面上云的奥运会。依托阿里云的政务云与公有云的40多款产品与服务,实现冬奥会官方App冬奥通、新闻发布会系统、比赛记时记分系统、运动员评论系统等30+应用全面上云。为了对云上资源进行多维度采集与观测,满足北京冬奥会赛事期间现场值班人员对云上资源整体运行风险的提前预知,以及故障时快速定位、诊断问题需求。阿里云依据冬奥组委业务特点,从三个层次对观测指标进行选取:
基于以上需求,冬奥组委选择阿里云可观测套件来构建整个可观测体系。北京冬奥组委业务系统分为生产环境和测试环境,重点对生产环境进行监控。在构建信息系统总体监控大盘时,首先基于Tag编写PromSQL语法提取出生产环境的资源;同时考虑到ECS、RDS、Redis、SLB等资源数量很多,再重点对TOP 10资源使用情况进行观测以便更好的发现风险,提升服务的可用性。同时,对于北京冬奥会赛事运行期间重要的业务系统,像成绩系统、评论员解说系统等每个关键信息系统都构建单独Grafana监控大盘。对SLB流量、QPS使用率、HTTP请求不同返回状态码重点监控。
由于冬奥通后台应用为Java系微服务架构,且包含近千个Kubernetes Deployment应用实例,为了更好对容器服务集群及其上面运行的应用进行一体化监控,冬奥组委基于应用实时监控服务ARMS的Prometheus构建容器集群监控大盘。在同一张大盘上看到多个数据源,包括集群事件日志、基于ebpf无侵入式的应用指标、网络指标等。冬奥组委通过一张大盘的关联分析逻辑,从总览到细节,通过多数据源、多角度的可观测能力进行不同维度的排查。

基于阿里云可观测套件,冬奥组委在最短时间内快速搭建一套完整的可观测体系,为奥林匹克国际官网、奥林匹克频道OCS、奥林匹克广播服务公司OBS等,涵盖比赛场馆票务、新闻发布会系统、冬奥会官方App冬奥通、广播数据推送、自动化媒体标注、国际实时信号转播、数据仓库、人员抵离ADS、网约车出行RHP等众多业务场景保驾护航,保障北京冬奥会顺利举办。
在历经全球级项目大考之外,阿里云可观测产品矩阵凭借其完备的功能、良好的生态集成能力以及出色的成本优势,收获了行业的认可。阿里云应用实时监控服务ARMS在今年获得了中国信通院的可观测产品先进级认证,阿里云连续两年进入Gartner APM与可观测魔力象限,今年更是成为了唯一入选的中国企业。在Forrester的容器、Serverless产品能力评测中,可观测相关的产品能力分数也得到了满分认证。

51CTO:可观测能力将来有标准化的可能吗?从监控到可观测性,运维转型的整体趋向呈现什么样的态势?
周小帆:在可预见的未来,可观测领域将形成一定意义的标准化。各大厂商、开源项目都在推进标准的统一。首先是指标,Prometheus作为云原生时代指标数据标准已经形成共识;链路标准也随着OpenTracing和OpenTelemetry的推行而逐渐占据主流;在日志领域,虽然其数据结构化程度较低难以形成数据标准,但采集存储分析侧涌现出Fluentd、Loki等开源新秀;另一方面,Grafana作为可观测数据展示标准也愈加明朗。但标准虽然统一,但我们也要看到基于统一标准的开源撕裂程度比想象得更为惨烈。
同时,在标准化之外,我们看到可观测领域可预见的七大技术与应用趋势:
展望未来,阿里云认为“观测力”将成为云计算时代每个工程师的核心竞争力。阿里云上越来越多云服务通过主流开源标准将自身运行状态充分白盒化,更好地被云服务使用者集成。工程师们将逐步采纳Monitoring as code的方式,实现可观测左移。相比以往,可观测能力构建将成为编写业务逻辑与实施运维自动化的关键环节。
作为管理者,通过可观测技术辅助研发运维的效能管理、IT成本分析将逐渐成为必备技能;同时管理者也会逐步借力可观测数据,数字化驱动团队成员之间的协作与沟通,以及用于识别企业安全风险。
万物皆可云的时代,可观测性让云变得更易用。可观测的巨大价值正在逐步兑现,我们从监控走进可观测,但不仅仅止步于观测,分析、洞察并实现高质量的决策与业务创新才是观测的最终目的,阿里云也将不断提供这个领域优质的产品与服务。
周小帆,阿里云资深技术专家,目前就职于阿里云云原生应用平台,负责阿里集团APM系统鹰眼(EagleEye)与阿里云应用实时监控服务(ARMS)等技术产品。在可观测相关领域有超过九年的实战经历,在分布式链路追踪、日志处理平台和监控告警系统的建设与应用有丰富经验。其他技术相关的经验包含微服务治理、分布式数据处理、应用PaaS等。
“T前线”是51CTO内容中心专为技术人物开设的深度访谈栏目之一,通过邀请技术界内的业务负责人、资深架构师、资深技术专家等对当下的技术热点、技术实践和技术趋势进行深度的解读和洞察,推动前沿科技的传播与发展。
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
前言作为一名程序员,自己的本质工作就是做程序开发,那么程序开发的时候最直接的体现就是代码,检验一个程序员技术水平的一个核心环节就是开发时候的代码能力。众所周知,程序开发的水平提升是一个循序渐进的过程,每一位程序员都是从“菜鸟”变成“大神”的,所以程序员在程序开发过程中的代码能力也是根据平时开发中的业务实践来积累和提升的。提高代码能力核心要素程序员要想提高自身代码能力,尤其是新晋程序员的代码能力有很大的提升空间的时候,需要针对性的去提高自己的代码能力。提高代码能力其实有几个比较关键的点,只要把握住这些方面,就能很好的、快速的提高自己的一部分代码能力。1、多去阅读开源项目,如有机会可以亲自参与开源
导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵
作为新的阿里云用户,您可以50免费试用多种优惠,价值高达1,700美元(或8,500美元)。这将让您了解和体验阿里云平台上提供的一系列产品和服务。如果您以个人身份注册免费试用,您将获得价值1,700美元的优惠。但是,如果您是注册公司,您可以选择企业免费试用,提交基本信息通过企业实名注册验证,即可开始价值$8,500的免费试用!本教程介绍了如何设置您的帐户并使用您的免费试用版。关于免费试用在我们开始此试用之前,您还必须遵守以下条款和条件才能访问您的免费试用:只有在一年内创建的账户才有资格获得阿里云免费试用。通过此免费试用优惠,用户可以免费试用免费试用活动页面上列出的每种产品一次。如果您有多个帐
基础版云数据库RDS的产品系列包括基础版、高可用版、集群版、三节点企业版,本文介绍基础版实例的相关信息。RDS基础版实例也称为单机版实例,只有单个数据库节点,计算与存储分离,性价比超高。说明RDS基础版实例只有一个数据库节点,没有备节点作为热备份,因此当该节点意外宕机或者执行重启实例、变更配置、版本升级等任务时,会出现较长时间的不可用。如果业务对数据库的可用性要求较高,不建议使用基础版实例,可选择其他系列(如高可用版),部分基础版实例也支持升级为高可用版。基础版与高可用版的对比拓扑图如下所示。优势 性能由于不提供备节点,主节点不会因为实时的数据库复制而产生额外的性能开销,因此基础版的性能相对于
我认为我的问题最好用一个例子来描述。假设我有一个名为“Thing”的简单模型,它有一些简单数据类型的属性。像...Thing-foo:string-goo:string-bar:int这并不难。数据库表将包含具有这三个属性的三列,我可以使用@thing.foo或@thing.bar之类的东西访问它们。但我要解决的问题是当“foo”或“goo”不再包含在简单数据类型中时会发生什么?假设foo和goo代表相同类型的对象。也就是说,它们都是“Whazit”的实例,只是数据不同。所以现在事情可能看起来像这样......Thing-bar:int但是现在有一个新的模型叫做“Whazit”,看起来
我有一个要在我的Rails3项目中使用的数组扩展方法。它应该住在哪里?我有一个应用程序/类,我最初把它放在(array_extensions.rb)中,在我的config/application.rb中我加载路径:config.autoload_paths+=%W(#{Rails.root}/应用程序/类)。但是,当我转到railsconsole时,未加载扩展。是否有一个预定义的位置可以放置我的Rails3扩展方法?或者,一种预先定义的方式来添加它们?我知道Rails有自己的数组扩展方法。我应该将我的添加到active_support/core_ext/array/conversion
我在我的rails应用程序中安装了来自github.com的acts_as_versioned插件,但有一段代码我不完全理解,我希望有人能帮我解决这个问题class_eval我知道block内的方法(或任何它是什么)被定义为类内的实例方法,但我在插件的任何地方都找不到定义为常量的CLASS_METHODS,而且我也不确定是什么here,并且有问题的代码从lib/acts_as_versioned.rb的第199行开始。如果有人愿意告诉我这里的内幕,我将不胜感激。谢谢-C 最佳答案 这是一个异端。http://en.wikipedia
参见下面的示例,我想最好使用第二种方法,但第一种也可以。哪种方法最好,使用另一种的后果是什么?classTestdefstartp"started"endtest=Test.newtest.startendclassTest2defstartp"started"endendtest2=Test2.newtest2.start 最佳答案 我肯定会说第二种变体更有意义。第一个不会导致错误,但对象实例化完全过时且毫无意义。外部变量在类的范围内不可见:var="string"classAvar=A.newendputsvar#=>strin
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我最近开始学习Ruby,这是我的第一门编程语言。我对语法感到满意,并且我已经完成了许多只教授相同基础知识的教程。我已经写了一些小程序(包括我自己的数组排序方法,在有人告诉我谷歌“冒泡排序”之前我认为它非常聪明),但我觉得我需要尝试更大更难的东西来理解更多关于Ruby.关于如何执行此操作的任何想法?