一、发展背景
随着云和云原生的普及,软件基础设施由虚拟机、云主机慢慢转变为容器、K8S以及Serverless/Faas,软件架构也从单体过渡到微服务和完全分布式架构。整体发展突出两个特点:
(1)应用程序的部署密度显著增大,变化频率显著增高。
容器化的基础设施使应用自身变得更快、更轻,一台主机上可以快速部署和运行几十个甚至上百个容器,而Kubernetes等容器编排平台又提供了良好的负载均衡、任务调度、容错等管理机制。
(2)应用之间访问关系更加复杂。
应用架构的微服务化使应用之间的访问关系变得异常复杂,客户端的一次服务请求通常会产生包括服务和中间件在内的众多调用关系。
容器化极大地提升了系统的稳定性和横向扩缩容能力,但也暴露出传统监控的诸多问题:
- 传统监控解决方案烟囱式割裂,运维监控手段和工具繁多,数据无法关联,导致故障定位难、事件分析难、数据应用难等。
- 传统监控以基础架构为视角,并以指标型数据监控为主。缺失应用服务层视角,运维人员无法对整体业务运行的健康状态进行全局监测和有效判断。
- 故障发生时并不能精准评估故障对业务的影响级别从而启动对应解决方案,存在“误报”,“漏报”等问题,业务监控“形同虚设”;故障定位时也存在现场还原难,故障定位和恢复效率低下等问题。
而可观测性面对云原生架构下的大规模集群以及海量灵活的微服务应用,可以明确知道集群中运行的详细信息,清晰地发现和记录主机快速变化的应用行为,清晰地观察到应用之间复杂的调用关系。可以完美解决传统监控暴露的一系列问题。
在 CNCF 对于云原生的定义中,已经明确将可观测性列为一项必备要素。
二、平台构成
围绕指标、日志、链路这三个可观测性的三大支柱。平台通常会包含
- 以指标为主,同时涵盖日志和链路信息的应用监控、前端监控等一系列监控相关产品
- 以日志为主的日志产品
- 以链路为主,同时涵盖指标的链路追踪产品
- 其他通用辅助能力,如可视化看板、告警、工单系统以及统一agent运维管理等等
通常上述几类产品互相关联,配合使用可满足不同行业不同业务的可观测场景。
三、核心能力
- 支持Java应用无入侵式接入,帮助用户快速定位出错接口和慢接口、重现调用参数、发现系统瓶颈,从而大幅提升线上问题诊断的效率。
- 针对页面打开速度、JS错误诊断、调用成功率3方面实时监控网站页面健康度。
- 全面对接开源Prometheus生态,支持类型丰富的组件监控。
- 为微服务应用的日志数据提供大规模、低成本、集中式的平台化服务,一站式提供日志采集、加工、存储、查询分析、消费与投递等能力。
- 为分布式应用的开发者提供了完整的调用链路还原、调用请求量统计、链路拓扑、应用依赖分析等能力。
- 提供一站式可视化平台,满足运维监控、经营分析、汇报展示等不同场景的数据查询、可视化、告警需求。
四、常见场景
- 系统监控和故障排除:可观测平台可以帮助用户实时监控系统的各种指标和性能数据,例如 CPU 使用率、内存利用率、网络延迟等等,同时提供告警和日志记录等功能,以便用户及时发现和排除系统故障。
- 应用程序性能分析:可观测平台可以帮助用户收集应用程序的性能数据,例如请求响应时间、数据库查询时间、应用程序吞吐量等等,以便用户分析应用程序的性能瓶颈和优化方向。
- 安全监控和事件响应:可观测平台可以帮助用户实时监控系统的安全事件和漏洞,并提供告警和日志记录等功能,以便用户快速响应和解决安全问题。
- 业务监控和数据分析:可观测平台可以帮助用户收集业务数据和用户行为数据,例如网站访问量、用户活跃度、销售额等等,以便用户进行业务分析和数据挖掘,从而优化业务流程和提高用户满意度。
五、总结
在技术高速发展的今天,可观测性已经成了云原生不可或缺的一部分。可观测平台提供围绕指标、日志、链路三大支柱的各项产品能力,可帮助用户在实现实时监控、故障排除、性能优化、安全保障、业务分析等多个方面提供支持,从而提高系统的稳定性、安全性和业务效益。