编者按:本文源自阿里云云效团队出品的《阿里巴巴DevOps实践指南》前往:https://developer.aliyun.com/topic/devops,下载完整版电子书,了解阿里十年DevOps实践经验。
随着云原生技术的发展与演进,微服务和容器化技术成为大型分布式 IT 架构的必然选择。新技术在让 IT 系统变得更敏捷、健壮、高性能的同时,也带来了更高的技术架构复杂度,给应用监控带来了前所未有的挑战。
传统监控挑战
系统监控爆炸式增长
传统监控重点关注应用、主机、网络等系统层面的监控。随着微服务、云原生等新技术的大量运用,系统架构越来越复杂,应用数量呈爆炸式增长。当一个故障发生时,大量系统报警会产生报警风暴,使得技术人员无法快速定位问题。同时,大量的系统级监控会产生大量误报,技术人员被迫花费大量的精力去处理这些误报,最终对报警产生麻木。
监控结果和业务目标之间欠缺联系
传统监控缺少业务视角的监控,以及业务与 IT 系统之间的联系。这导致用户、业务人员和技术人员之间无法形成统一视角。很多故障往往是用户已经反馈,技术人员却在用系统监控指标证明系统没有问题。或者业务已经受损,技术人员依然无法确定是哪个系统的问题,恢复时间被大大拉长。
监控工具之间数据割裂,数据缺乏分析
以往阿里巴巴采用多种监控工具,用于监控网络、物理机、应用、客户端等不同的对象,但不同工具之间无法共享数据,监控数据缺乏统一的分析,更加难以跟业务场景相结合,造成大量的故障只能依靠技术人员的经验,在多个工具之间不断地切换和逐步排查,大大增加了故障恢复时长。
监控维护成本高,报警准确率低
传统监控都需要大量的配置工作,整个过程费事费力,缺乏自动化、智能化监控的手段,这也是造成各系统监控能力参差不齐的重要原因。一些新业务因为无力投入大量精力配置监控,导致业务监控能力缺失。同时,随着业务的发展,技术人员需要不断地调整报警规则,又常常因不及时的调整造成误报和漏报。
业务驱动的监控理念
为了适应 DevOps 研发模式,解决传统监控的问题,阿里巴巴总结了一套以业务驱动的自顶向下的全景监控体系,主要包括:业务监控、应用监控和云资源监控三层:
-
业务监控是整个监控体系的“顶层”,能够反映用户使用业务的真实情况,可以与业务结果直接挂钩,能够被不同部门、不同角色的人员所理解。
-
应用监控提供应用中服务和系统层监控能力,能够直接反应系统运行状态,帮助研发人员全面了解应用中服务和中间件的健康状态,快速定位系统问题。
-
云资源监控提供应用依赖的各类云资源(如 RDS、OSS、SLB 等)的基本监控,在故障排查中能够为研发人员提供实例级别的明细监控数据&#x