应用软件架构经过单体架构、分布式架构,面向服务架构、微服务架构发展,在云计算、容器、网络等技术的支撑下,更多企业的新一代应用都开始选择使用微服务架构。
容器技术在LXC (Linux Container)、cgroups、namespaces 技术基础上发展成型,是更轻量化的虚拟技术。随着Kubernets的发展解决了大规模容器集群的编排和管理问题,将被拆分解耦的业务系统再统一管理起来让服务可以自由融合、彼此协作为业务的发展提供高效的基础能力。
01 | 容器化微服务面临的监控运维挑战
容器化微服务在具备面向业务功能、降低开发难度、增加容错度、服务间松耦合、弹性扩展、提高生产效率等优势同时,也面临服务发现、限流、权限、版本管理等挑战,服务监控也是其中挑战之一。
▌监控对象数量增大
传统监控以单体应用为粒度,结合计算、存储、网络等基础设施监控进行运维保障。但在容器化微服务架构下,监控粒度细致到容器POD或微服务API级别,使得监控对象的数量相比单体应用呈指数级增长。
▌监控路径动态变化
基于微服务架构的应用动态性是监控面临的一个重要挑战。应用系统由很多个微服务组成,同时运行于容器环境中,服务通过相互调用、自身处理产生出复杂的行为。微服务并不是静态的,而是随着业务需求不断变化,改变调用关系,处理过程以及优化路径。
▌信息维度多面
保障容器化微服务,首要基础就要有能力全面“度量刻画”微服务,这其中涉及到应用、系统、基础设施等相关资源属性和性能指标等,这是一张多维关联的知识图谱。以一个异常的服务访问路径为例,涉及到的指标包括错误率,调用延时等。仅仅发现异常还不足以解决问题,因此会继续产生一系列的疑问:
路径上的异常服务有哪几个?服务运行在哪个节点上,哪个区域中?访问路径在异常前有无变化?服务历史中的调用关系有哪些?异常可能影响的范围?
回答这些疑问,任何单一维度的排查都是管中窥豹。必须通过关联服务、容器平台、网络流量、平台事件等数据信息,构建多维度的知识图谱,在解决问题的过程中方可成竹在胸。
▌传统监控难以触达
在云环境中,由于虚拟化技术应用,传统监控工具难以触达池化后的各类资源,导致“黑盒”化严重。此外,传统监控工具从数据开放性、架构扩展性、监控粒度上都难以满足云原生应用的需求。新兴可观测技术,旨在通过系统的外部监测数据(指标、日志、追踪等)实时分析系统的内部状态(吞吐、错误、时延等),彻底解决云内监控的“黑盒”问题。
02 | 监控与可观测性
随着业务系统不断上云,容器、微服务、持续发布等云原生技术被广泛采用,从而为IT系统的监控带来了全新挑战。为保障云原生应用的稳定性,可观测技术被越来越多的企业所采用。针对于IT系统,尤其是面向云原生应用,可观测技术应包含如下需求:
▌零侵扰
传统APM/NPM等工具,要么需要应用程序中打桩插码,要么需要基础设施中分光镜像,均会对IT系统进行侵扰。可观测技术使用外部数据做分析,因此采用零侵扰的方式获取监控数据,无需打桩插码、分光镜像,而是通过开放系统架构直接获取监控数据。零侵扰的另一方面是要求低功耗,不能因为采集数据而影响应用或基础设施性能,通常采集点功耗不能超过业务功耗的1%。
▌多维度
要保障云原生应用稳定运行,可观测技术必须包含多维度数据分析能力。具体来说,要将应用的API、容器、主机、网络等监控数据进行全栈关联分析。传统的APM工具,可以定位代码层问题,却无法追踪容器或主机网络服务引起的故障。而传统的NPM工具,又不能关联应用的TraceID从而追踪穿越NAT、LB等网元的流量。因此,多维度的全栈数据分析,是可观测平台的第二个需求。
▌实时性
云原生应用的动态性要求可观测平台必须具备实时性。如果应用的升级/扩容在分钟级完成,那么监控系统就必须提供秒级的反馈能力。注意,这里的反馈需要对海量指标/追踪/日志数据进行查找分析,因此对可观测平台的海量数据实时处理能力提出了极高要求。
在Google Cloud的定义中,“可观测性是可帮助团队有效调试其系统的工具或技术解决方案,并有能力探索未知或事先未定义的属性和模式。”
可观测性并不是通过简单使用一个工具所能具备,是需要根据企业组织、业务应用、基础设施以及已有的监控体系的需求现状,明确阶段目标,伴随着业务发展逐步建立,是一个持续发展的过程。
云杉网络与客户的共同实践,基于云原生应用发展的现状,通过DeepFlow®与客户的应用、网络、基础设施整合,综合分析各类指标、日志以及追踪数据,形成一站式的容器化微服务可观测性方案。
DeepFlow ®容器化微服务可观测性方案
DeepFlow®提供适用于容器化微服务的可观测性,解决云原生应用诊断难的核心痛点。通过对全局微服务(UniversalServices)间的通信访问、系统调用、平台环境等数据进行深度分析,提供监控告警、故障定位及风险排查,保障业务在云原生环境中的稳定、高效运行。
➤分钟级定位问题边界
基于容器化微服务的云原生应用出现故障时,快速明确问题边界是解决问题的第一步。基于知识图谱、微服务调用链、全栈追踪等功能组合,快速检索到异常单元所关联涉及到的其他维度信息和影响范围;直观展示系统、容器、虚拟主机全栈性能指标锁定性能洼地等。
➤大幅提升排障效率
排障过程并不仅是找到故障根因并修复,而是从定位、根因、修复、验证及预防一整套运维保障操作闭环。容器环境叠加微服务架构使得排障更加复杂,需要避免以单次异常故障为视角,避免以单一数据为依据判断根因进行排障工作,需要有效地将应用、容器平台、系统调用等运维数据进行关联,且对比指标、跟踪以及日志特征来提高根因的准确性;并通过历史视图、系统运行表现、修复验证等指标来确认从而提升效率。
➤微服务可用性指标
应用微服务化后,衡量判断众多微服务的质量以及可用性是一个繁琐的问题。涉及到不同开发团队,设定具体指标,周期性的记录和评估,发现性能洼地及热点等等。这些工作都是要建立在数据积累的基础之上,DeepFlow®平台也是基于此来进行对微服务各维度的画像评估。通过对应用中所涉及的几十、上百个微服务运行的历史指标数据进行量化分析,在一个运行周期中,能实时监控业务是否达到99.99%的可用性要求(Service Level Object),并分析出潜在影响可用性的各种原因。
▌运行环境
在公有云环境中,例如由腾讯云、阿里云等的云服务商提供的IaaS服务基础上,可以直接选择容器服务或者通过开源Kubernetes软件搭建容器平台,部署运行各类容器化微服务。DeepFlow ®通过零侵扰采集技术,获取各类运维监控数据,如基础设施资源配置、网络流量、API调用等,并通过后台实时数仓,对多维度数据进行实时分析处理,满足不同场景下的微服务可观测能力。
▌兼容现有监控工具
在监控体系发展以及客户的实际使用中,存在各类监控工具,如资源监控ZABBIX、容器监控Prometheus、日志监控ElasticSearch、应用追踪Skywalking等等。DeepFlow®凭借零侵扰、低消耗、高性能的流量采集技术,可以为现有监控工具补充难以获取的丰富指标数据,结合客户已有的环境及工具平台,达到监控数据关联,运维流程联动,满足微服务保障的告警、定位、排障以及预测量化服务质量的要求。
以DeepFlow®做为基础数据平台,结合Prometheus、ZABBIX、云监控数据构成对应用、系统、云基础设施的指标数据基础,通过开放数据对接告警平台、认证平台以及 Grafana等数据可视化平台,向微服务开发部门、业务部门展现关键指标数据。通过TraceID、SpanID、URL、资源ID等关键值关联追踪数据,在应用出现异常或者调优过程中,以高效对接历史指标趋势划定资源范围,使特定应用请求过程与指标钻取统计不再割裂。实现对云上微服务的全方位可观测能力。
总结
云杉网络DeepFlow®容器化微服务可观测性方案,面向公有云K8s、容器环境。利用eBPF等新技术的零侵入特性实现对网络、系统、应用的全栈黄金指标的采集。对服务调用链以及Service mesh、iptables/ipvs、NAT的逐跳链路追踪,对服务访问的零采样全留存,并结合云资源知识图谱和变更事件数据,搭建立体化的微服务可观测平台。
云计算以及容器将是今后承载微服务业务应用的主要平台,对于云网络以及云原生应用保障,将面临规模广、弹性大、波动性强等诸多挑战,云杉网络目标就是帮助客户补齐云网监控的拼图,保障云及微服务业务有序可控发展。
(免责声明:本网站内容主要来自原创、合作伙伴供稿和第三方自媒体作者投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
任何单位或个人认为本网站中的网页或链接内容可能涉嫌侵犯其知识产权或存在不实内容时,应及时向本网站提出书面权利通知或不实情况说明,并提供身份证明、权属证明及详细侵权或不实情况证明。本网站在收到上述法律文件后,将会依法尽快联系相关文章源头核实,沟通删除相关内容或断开相关链接。 )