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

32次阅读

共计 4744 个字符,预计需要花费 12 分钟才能阅读完成。

编者按 :随着分布式系统和业务需要的飞速发展,监控告警在咱们保障系统稳定性和事变疾速复原的全周期中都是至关重要的。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 流程进行应急。

最初,通过数据的量化,造成对应的红黑榜通晒,继续对不达标的指标进行治理。同时也会通过数据分析咱们在治理流程上的有余,继续迭代,造成闭环。

正文完
 0