有效预警6要素:亿级调用量的阿里云弹性计算SRE实践

编者按:随着分布式系统和业务需求的飞速发展,监控告警在我们保障系统稳定性和事故快速恢复的全周期中都是至关重要的。9月3号,阿里云弹性计算管控SRE李成武老师(花名佐井),受「TakinTalks稳定性社区」邀请,在线分享日常预警治理工作的经验和心得,帮助大家实现精准的监控和告警,把问题扼杀在摇篮里,减少故障带来的业务损失。

以下是本次分享内容的文字整理。

如果事情有变坏的可能,不管这种可能性有多小,它总会发生。—— 墨菲定律

系统的稳定性离不开有效的预警机制,根据墨菲定律:可能出错的地方,一定会出错,我们没法准确预测系统会在什么时候在什么地方出错,但是却可以知道当系统出问题的时候,接口响应变慢、系统服务不可用、业务流量下跌或客户操作无法完成甚至有客户投诉。

为了对抗墨菲定律,我们必须未雨绸缪地在各种系统节点上配置预警信息,以免出问题的时候太过被动;同时为了追求问题发现率(更多的预警项、更不合理的阈值、更无关紧要的内容),我们有陷入了预警覆盖的悖论,最终导致了现在普遍的预警地狱现象。我们看下图,这是一个非常典型的正反馈增强回路,导致预警问题越来越多。

图:预警的正反馈增强回

更多的预警项会使问题变好吗?根据熵增定律,这一过程必然导致不可逆的破坏性,最终可能分不清哪些预警需要处理,甚至导致对预警的漠视。有没有办法解决这个问题?有,做负熵!从预警的各个环节循序渐进做减法,今天我们就聊聊预警环节的6要素。

在这6个预警要素中,有些是被公认且显而易见的,另外一些常被忽略导致预警地狱,本文综合了日常预警定义、通知、治理的经验和智慧,是预警治理的理想实践标准,关注保持良好的预警处理,持续解决系统隐患,促进系统稳定健康发展

01 准确:预警本身准确并正确通知

在大量被忽略的预警中,有很大一部分可以称为不准确,因为即使没有处理也不会发生什么实际问题,准确的第一个定义是预警达到了警告级别。无需处理的预警会导致“狼来了”效应,对预警越来越漠视,最终漏掉真正有需要处理的预警;曾经发现过这样的团队,几个小时报一次的预警没人看,只有到短时间高密度的预警通知才能引起注意,这样的团队对预警的免疫能力越来越强,也越来越危险。另外无效的预警通知还会导致不必须到资源浪费,比如:短信、电话费用等。所以,从现在开始,行动起来把无效预警干掉吧。

准确第二个定义是预警准确地通知到正确的接收人。不要以为预警通知的人越多就越可能被处理,实际不相关人收到告警更多是观望,实际上根本没人行动,因为这些无关的人没有动力也没有能力这么做。曾经遇到过一个case,与预警无关的同学通知需要预警应急的团队,看看你们系统是不是出力问题,虽然这种情况下无关通知起了作用,但对应该预警应急的团队是多么尴尬和可怕的事情啊。另外接收预警应急的同学也需要对预警通知做响应动作,一方面告知关注的同学,预警已经有人响应处理了,另一方面也未后面对预警的度量做数据准备。

总结下准确要素是把真正的预警信息通知到正确的接收人,这里面真正的预警正确的接收人缺少哪个都不应该发送;同时,这也是一次握手过程,接收人收到通知后要接手并准备处理。

02 适时:适时通知、适时应急

如果按预警的响应率,难道不是及时通知和响应更好,有些情况确实如此;但是别忘了我们来做负熵的,大部分情况我们做到适时就够了,避免过度紧张和恐慌。

首先,适时需要我们在不同时间段采用不同强度的通知渠道,比如夜间需要应急的预警,短信或IM很可能无法及时触达,需要用更强烈的通知方式,比如电话;但是在正常的工作时间,大家都是在线状态就没有这个必要。非常严重的预警,还是需要继续保持紧急的强通知以达到时效性,但是我们还是倡议非必须尽量不用。

其次,在应急上,对于没有及时响应的预警,可以升级成更强烈的通知渠道;同时也可以在处理人员上做升级,比如升级到主管、SRE等,以达到适时应急的目的。并不是每个预警都需要紧急处理的,比如:服务宕机,如果是线上许多机器中的一台,对业务流量不会造成影响,可以稍后再处理。

最后,适时要保障相同的预警不要短时间重复发送,避免淹没在预警炸弹中。一般情况是合并报警并做相关统计,然后根据预警分类做对应的抑制操作,或者让人工选择暂停一段时间的这类预警发送。当第一条预警被认领后,表示相关的应急处理已经启动,再推送相关预警更多是干扰,处理的效果可以通过监控观察,所以是不需要继续再报同样的预警的。

03 详尽:给出影响范围、上下文和诊断信息

收到告警后第一要事是确定问题然后采取对应的隔离或止血措施,如果告警内容太过简单,会让这个过程变成一个猜谜游戏,需要重新去现场,通过多种手段验证和推测,才能确定问题所在,这也是处理预警耗时最多的地方,而且这里很多是靠经验吃饭,新同学几乎很难插手。所以,在预警信息中给出影响范围和上下文和诊断信息,会上问题定位事半功倍。

首先,预警的影响范围是判断应急轻重缓急的重要指标。影响范围包括资源、业务、用户等维度:

  • 资源:单机、集群、相关依赖;
  • 用户:个别、部分还是全部客户;
  • 业务:核心业务、旁路业务、非核心业。

如果影响范围是个别情况,可以快速做隔离,比如把单个机器做隔离,摘除掉非核心链路或者单个客户做流控降级。相反,如果面积级别的,需要更采用更紧急响应机制,比如拉起更多的人处理:主管、SRE以及团队其它同学,甚至升级成故障级别。

其次,上下文信息会让定位事半功倍。上下文信息有助于判断错误的诊断,省去重新还原现场的麻烦。上下文信息包括:

◾ trace:给出预警问题的一条trace链路,相当于把现场还原;

◾ 日志:详细的错误日志link能定位到具体代码和当时的堆栈信息;

◾ 关联:关联的预警或变更,方便快速判断预警是不是由其它问题关联导致或因变更引起。

有了上下文信息,进一步排查的路径基本也确定了;否则需要去各种平台搜集信息、甚至需要重新恢复现成,而这些操作不仅耗时,还可能因为信息不全或时间流程导致无法得到需要的信息。

最后,预警中的诊断信息,甚至能直接给出定界原因,免去排查时间。问题的定位很多时候依赖处理人对业务的理解,对工具的使用,对平台的数据和曾经的经验。预警诊断就是把这些脑海中的流程经验通过规则+数据变成结果直接输出,诊断需要一定的系统能力建设才能实现,比如ECS内部采用下面的架构来支撑诊断:

1. 需要把不同渠道的预警信息统一接入,预警信息如果直接发送出去,就丢失了诊断环节,预警信息首先接入诊断层,才能实现后续诊断动作。

2. 需要有一定的信息收集能力,包括:各种meta信息(应用、数据库、api、人员、值班 …)、变更信息、运维工具、日志和其它预警信息等。

3. 需要有一定的信息整合能力,把预警和收集的信息做整合,结合诊断框架给出诊断结果。

04 恢复:隔离、止血、自愈

恢复是预警处理的第一要事,先要消除对系统、业务、客户的影响,然后才是排查问题。要素3(详尽:给出影响范围、上下文和诊断信息)业务为了定位到哪里出了问题,然后采取对应的恢复手动。

一般情况下,恢复需要执行一些动作,如果预警能更进一步,给出恢复操作,那将极大提升响应速度。

一般情况下恢复动作有以下执行路径:

◾ 故障自愈,根据预警判断影响并关联预制动作完成故障自愈。首先需要预警支持绑定call back动作,可以根据预警内容选择正确自愈操作;其次动作执行控制范围,避免自动执行动作带来二次故障。比如:我们可以检测到单机问题,把机器摘除掉。自愈需要判断好执行的范围和影响面,对有信心的动作才能自动执行。

◾ 止血动作的action,可以通过link或者chatops方式嵌入到预警内容中,点击相关action快速消除影响。比如:我们会在预警通知中,给出一些流控、重启、开关等动作,一键即可完成操作。

◾ 最佳实践、操作手册或者相关联系人,在没有止血action的时候,可以给出继续操作的指引,按照手册继续操作或联系能处理的人。

至此,我们通过4个要素的优化,完成了预警的整个应急过程,接下来2个要素讲关注预警的运营,通过高效、有效的运营,更进一步对预警进行治理。

05 覆盖:按模板自动覆盖

在故障复盘中,有不少问题没有及时发现的原因是缺少对应的监控。监控项是不可能覆盖全的,但是经验是可以积累传承的,通用、标准的预警适用大部分业务,可以通过模板方式做到更大范围的覆盖。

一类预警有这相似的监控项甚至差不多的阈值定义,这类标准的监控要能够在多个应用甚至业务上快速覆盖,通过巡检机制保障不会被遗漏。一般情况下预警的监控项分为基础监控和业务监控,业务重要等级不同,对监控和预警的定义也有差异。比如我们根据应用等级对监控也提出响应的等级,按照等级对监控通过模板进行覆盖,这样避免了忘记配置问题,同时新增资源或服务情况也做到自动覆盖。

通用的监控需要积累并模板化,这样能把经验传递下去,避免发送类似的问题。比如:之前兄弟团队出现过一个这样的故障。由于发布脚本问题,导致发布过程中从vip摘除的机器在发布完成后没有挂载上,当最后一个机器发布完成后,整个vip没有server导致业务不可用。我们通过复盘总结这样一个通用规则:vip中挂载的机器超过xx%被摘除后,出发一个预警,并应用到多个组织中,就避免了后续再发生类似的事情。

06 度量:通过数据统计做负熵

最后我们来聊聊预警的数据统计。管理大师德鲁克曾经说过:

你如果无法度量它,就无法管理它。(If you can’t measure it, you can’t manage it.) —— 彼得·德鲁克

度量是完成预警治理闭环的重要一环,其实我们这里是借助“精益”的思想,通过数据反馈发现问题,然后在问题上进行尝试,再回头看数据。

度量的数据可以包括以下几个方面:

◾ 预警的具体数据:用于分析后续分析改进、统计通知频率、统计预警量,比如:每个平均1天不超过3条,TOP人/团队/应用等红黑榜。

◾ 是否被标记无效:清理无效预警。

◾ 是否有人认领:认领率需要通过红黑榜通晒。

◾ 认领的时间:应急改进,故障类的可以参考 “1-5-10”(1分钟发现问题,5分钟定位,10分钟恢复)。

◾ 解决的时间:更好的完成 “1-5-10”。

◾ 预警工具的使用情况:改进工具的推荐准确性。

有了这些运营的数据,治理起来就有了抓手,持续的运营下去,才能让预警往更健康的方向演进。

总结

最后,结合一个阿里云弹性计算的内部实践,说明我们怎么结合6要素进行预警治理的。

我们在预警方面构建了一个统一的预警平台,把6要素通过工程方式融入到预警生命周期管理上。

首先我们收口了大部分的预警渠道,在内部我们有SLS、POP、ARMS、DAS、Promethues等多个预警源,这些预警会通知到预警网关而不是具体的人。预警网关会对这些数据进行解析、架构和诊断操作。

诊断环境我们把会输出影响面、根因和快恢工具,这部分是最复杂的,需要有一定的信息整合能力和诊断能力。首先我们会把预警信息与meta进行关联,meta是我们内部持续建设的基础数据,里面包含了,资源信息(机器、数据库、API、应用等等)、组织信息(组织架构、owner信息、值班信息)和策略信息(应急流程、升级策略、通知策略等);除此之外,针对预警内容我们还要做诊断影响面(影响客户、地域、资源、api等),同时保留上下文并抓取日志或trace链路,最后结合对预警内容的分析给出恢复工具。这些信息会通过模板引擎进行渲染,最终推送到具体人。

在诊断过程,如果我们发现预警需要升级,会自动升级预警基本并启动对应的应急流程,比如:识别重保客户,会启动alert流程进行应急。

最后,通过数据的量化,形成对应的红黑榜通晒,持续对不达标的指标进行治理。同时也会通过数据分析我们在治理流程上的不足,持续迭代,形成闭环。

原文链接

本文为阿里云原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/510454.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

EMR 重磅发布智能运维诊断系统(EMR Doctor)——开源大数据平台运维利器

大数据运维的挑战—如何保证集群稳定与运行效率 企业级大数据集群通常拥有海量的数据存储、日常运算成干上万的计算任务,需要满足各类上层业务的计算需求。对于这类集群的运维往往充满着挑战:海量的数据、庞杂的组件以及组件之间复杂的依赖关系、对于时…

从中间件到分布式数据库,PolarDB-X 的透明之路

PolarDB-X前身是淘宝内部使用的分库分表中间件TDDL(2007年,Java库的形态),早期以DRDS(2012年开始研发,2014年上线,分库分表中间件MySQL Proxy的形态)的品牌在阿里云上提供服务&#…

阿里云EMAS 移动测试,帮您快速掌握移动端兼容性测试技巧

一、兼容性测试可以查到哪些问题 界面适配问题,确定是否能正常安装、启动。各个页面潜在的崩溃、无响应等问题。应用性能问题,例如启动时间、页面加载时间、功耗等。 二、阿里云兼容性测试工具的功能优势 提供在线录制功能,可视化录制出功能…

零信任策略下K8s安全监控最佳实践(K+)

云原生架构新风险与需求概述 安全风险概述 传统的网络安全架构理念是基于边界的安全架构,企业构建网络安全体系时,首先要做的是寻找安全边界,把网络划分为外网、内网等不同的区域,然后在边界上部署防火墙、入侵检测、WAF等产品。…

ATC‘22顶会论文RunD:高密高并发的轻量级 Serverless 安全容器运行时

编者按:目前的安全容器软件栈 — 包括 host 操作系统中的 cgroup、guest 操作系统和用于函数工作负载的容器 rootfs,都会导致低部署密度和在低并发能力。为此,RunD 作为一种轻量级安全容器运行时,提出了 host-to-guest 的全栈优化…

Dubbo Mesh:从服务框架到统一服务控制平台

Apache Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题,官方提供了 Java、Golang 等多语言 SDK 实现。使用 Dubbo 开发的微服务原生具备相互之间的远程地址发现与通信能力, 利用 Dubbo 提供的丰富服务治理特性&…

智能搜索引擎 | 驱动电商业务增长实践

开放搜索是阿里集团搜索业务中台,基于大数据深度学习在线服务体系打造的智能搜索云服务产品。拥有核心引擎、召回排序、搜索引导、充分开放等核心能力,可应用在电商行业、教育行业、内容行业等场景。目前帮助数千家客户搭建自己的搜索业务。 实践案例&a…

通过 Jenkins 构建 CI/CD 实现全链路灰度

本文介绍通过 Jenkins 构建流水线的方式实现全链路灰度功能。在发布过程中,为了整体稳定性,我们总是希望能够用小部分特定流量来验证下新发布应用是否正常。 即使新版本有问题,也能及时发现,控制影响面,保障了整体的稳…

合阔智云核心生产系统切换到服务网格 ASM 的落地实践

背景 合阔智云(http://www.hexcloud.cn) 是专注于为大中型零售连锁行业,提供全渠道业务中/前台产品和解决方案,并建立以消费者为中心的全渠道交易和敏捷供应链的新一代零售运营协同平台。 合阔智云提供了从全渠道交易管理到订单履约再到门店供应链完整…

Serverless 架构下的 AI 应用开发:入门、实战与性能优化

随着时间的推移,Serverless 架构变得越来越火热,凭借着极致弹性、按量付费、低成本运维等特性,在很多领域发挥着越来越重要的作用;机器学习领域在近些年也非常火热,并在越来越多的行业中得到应用。 实际上&#xff0c…

数据变更白屏化利器 - 推送轨迹上线

背景 Zookeeper 可作为注册配置中心,选主,分布式锁等多种场景,随着业务规模的扩大,业务之间的依赖关系逐渐变得复杂,在这种复杂的场景下如果遇到变更推送相关问题,排查起来相当困难,虽然 Zooke…

KubeVela 1.5:灵活框选 CNCF 原子能力打造独特的企业应用发布平台

KubeVela 1.5 于近日正式发布。在该版本中为社区带来了更多的开箱即用的应用交付能力,包括新增系统可观测;新增 Cloud Shell 终端,将 Vela CLI 搬到了浏览器;增强的金丝雀发布;优化多环境应用交付工作流等。进一步提升…

开源小白到核心开发——我与 sealer 的成长故事

个人简介 大家好,我是周欣元,本科就读于杭州师范大学,今年 9 月将去往云南大学进行研究生学习。本科研究方向为 docker 容器在网络攻防中的应用,目前作为 sealer member 加入了核心模块 sealer runtime 的研发工作。 个人主页&a…

全链路灰度新功能:MSE 上线配置标签推送

背景 微服务场景下,全链路灰度作为一种低成本的新功能验证方式,得到了越来越广泛的应用。除了微服务实例和流量的灰度,微服务应用中的配置项也应该具备相应的灰度能力,以应对灰度应用对特殊配置的诉求。 为什么需要配置标签推送…

万节点规模云服务的 SRE 能力建设

背景及现状 系统架构简介 上图为阿里云内部实际使用的系统架构,系统主要用途为实时数据流的计算和存储。使用阿里云的容器服务 ACK 作为系统底座,容器化的部署、发布、管控等全部基于 K8s 标准。使用自己开发的 Gateway service 作为系统流量入口&#…

阿里云 ACK 容器服务生产级可观测体系建设实践

ACK 可观测体系介绍 全景概要介绍 上图为 ACK 可观测体系全景图金字塔,从上至下可分为四层: 最上层是最接近用户业务的 Business Monitoring,包括用户业务的前端的流量、PV、前端性能、JS 响应速度等监控。通过容器服务的 IngressDashboard…

中仑网络全站 Dubbo 2 迁移 Dubbo 3 总结

中仑网络在 2022 年完成了服务框架从 Dubbo 2 到 Dubbo 3 的全站升级,深度使用了应用级服务发现、Kubernetes 原生服务部署、服务治理等核心能力。来自中仑网络的技术负责人来彬彬对整个 Dubbo 3 的选型、升级过程及收益等做了深入总结。 来彬彬,2020 年…

基于 OpenYurt 和 EdgeX 的云边端协同新可能

2022 EdgeX 中国挑战赛暨中关村国际前沿科技创新大赛 EdgeX 专题赛正式拉开帷幕。本次大赛分设两大赛道:医疗、教育、消费行业赛道和能源、工业、供应链赛道。大赛致力于构建一个物联网及边缘计算的学习和分享平台,基于 EdgeX Foundry、OpenYurt 等开源技…

OSCAR 2022 开源产业大会PolarDB-X、 PolarDB-PG获奖揭晓

9月16日,OSCAR 2022 开源产业大会在京召开,会议由中国信息通信研究院、中国通信标准化协会主办,中国通信标准化协会云计算标准和开源推进委员会承办。此次会议以“千行百业 可信开源”为主题,邀请上百位专家大咖和国内主流的开源社…

App 隐私合规“免费”自动化检测

一、为什么要进行App隐私合规检测 2021年11月1日《个人信息保护法》正式生效;今年6月14日,国家互联网信息办公室公布《移动互联网应用程序信息服务管理规定》,这是针对App的最强监管新规,于8月1日起正式实施。新规要求应用程序提…