ARMS 助力极氪提效服务应急响应,为安全出行保驾护航

news2024/11/27 17:51:29

作者:比扬

01 客户介绍与项目背景

浙江极氪智能科技有限公司于 2021 年 3 月成立,2021 年 4 月发布极氪品牌及旗下首款产品——极氪 001。极氪是一家以智能化、数字化、数据驱动的智能出行科技公司,秉承用户型企业理念,聚焦智能电动出行前瞻技术的研发,构建科技生态圈与用户生态圈,以“共创极致体验的出行生活”为使命,从产品创新、用户体验创新到商业模式创新,致力于为用户带来极致的出行体验。

截止 2023 年 4 月,极氪量产车交付已经突破 10 万辆,从 0 到 10 万辆,极氪用时仅两年,快于其他新势力品牌至少四年以上的时间,持续刷新新势力品牌交付记录,这不仅是对“极氪速度”的展现,也是对“中国速度”最好的诠释。

image

为了保障好极氪汽车业务的快速发展和用户体验,技术团队除了保持高效的功能迭代的同时,也在不断的夯实其系统稳定性和应急响应能力。自 2023 年开始,大数据团队正试点推行面向极数BI业务的数字化稳定性治理建设。

极数 BI 是一款面向极氪经营管理全体系的可视化数据分析系统,已覆盖多个核心业务场景。极数 BI 不仅仅是一个报表工具,还提供了全域数据互联互通、智能化数据分析和全景数据可视化的功能,可以为其他业务“发生了什么、为什么发生、将要发生什么、如何应对”提供完善的数据支撑和辅助决策能力。打破数字鸿沟,创造数据价值,逐步实现全业务域的经营过程观测与经营结果呈现是极数 BI 的发展目标。

为保障极数 BI 的数字化稳定性治理建设落地,极氪通过建设端到端的全链路可观测体系、企业级应急响应机制和跨部门团队的人员协同机制,以业务连续性保障为目标,实现了极数 BI 业务的“X分钟的故障发现与通报”、“X分钟的应急响应与故障定位”、“X分钟的故障恢复”核心稳定性指标的达成。

image

02 项目落地时面临的挑战和需求

云原生浪潮下,Serverless 因其全托管免运维、成本降低和弹性伸缩等特性正逐步在引领下一代的应用架构。极数 BI 业务从立项之初就确定了 Serverless 化的方向,并基于阿里云 Serverless 应用引擎(SAE)成功落地。应用 Serverless 化最大化限度减轻了运维工作,但是在自身业务的数字化稳定性治理方面依然面临较大挑战:

如何覆盖和收敛从基础设施到业务应用监控的全链路告警事件

从前台业务数据、用户体验,到后台应用服务性能,再到云服务及基础资源,即系统资源层、云服务应用层、业务监控层,虽然针对不同的服务模块都有对应监控,构建了相对完善的指标监控体系,但由于微服务化后的服务模块众多、依赖复杂,很有可能因为某个组件的异常或不可用导致整条链路产生大量冗余告警,形成告警风暴,从而造成运维团队疲于应付海量告警信息,并且非常容易遗漏真正用于故障排查的重要消息。因此,针对海量持续告警信息,如何进行告警合并,在保证不错过核心告警消息的前提下抑制告警消息数量,成为了面临的重要运维难题。

如何构建统一的报警体系、通报机制和跨团队应急协同机制

系统资源层、云服务应用层、业务监控层,为了监控这些复杂的IT环境,由于各层资源分属不同的团队进行管理,导致采用了多种监控系统,例如 Prometheus、Grafana、Skywalking、阿里云云监控、阿里云 ARMS 等,以获取更全面的监控数据和更好的了解运行状态和性能表现。然而多种监控系统的并存带来的其中一个显著问题是告警信息的分散,不同的监控系统产生不同的告警信息,通过不一致的方式通报给告警处理人,而告警的排查通常需要多个团队共同合作进行处理,纵横交错的告警处理增加了人员响应的复杂性和工作量,疲于应付的程度往往远超出了告警处理人员的日常负荷。

如何规范故障等级定义、应急处置流程和故障管理体系

业务可用率是一套业务系统可靠性、维修性和维修保障性的综合反映。Availability = MTBF / (MTBF + MTTR),通常业界习惯用 N 个 9 来表征系统可用性,比如99.9%(3-9 availability),99.999%(5-9 availability),系统出现故障的停机时间直接反映了业务可用率。如何定义一套适用于极氪自身业务的故障等级定义、应急处置流程和故障管理体系将是保障极氪对外承诺的业务可用率的重要支撑手段。通过建立一个可遵循的规范、全流程闭环的故障管理体系,配合技术手段的提升,可以有效降低故障发生的几率,缩短故障的 MTTR,最终使故障造成的破坏性趋近于 0。

如何有效度量业务稳定性指标和应急响应 SLA

如何查看过去一段时间系统发生了哪些告警,哪类告警占比较高;制定了值班机制,但无法衡量值班人员告警处理的效率,如何确保值班机制的执行效果;一个服务在多个系统中配置了多个告警,无法从服务的维度来查看告警的处理效率,查看服务的 SLA;在针对性的系统优化后告警占比是否降低,告警的持续时间占比是否得到改善。这些都是在日常运维过程中衡量告警的处理效率和服务的稳定性面临的典型问题。这些重要数据都需要完善的数据报表和统一的大盘来呈现。

03 基于 ARMS 的企业级应急响应解决方案

针对上述面临的问题和挑战,阿里云云原生可观测团队与大数据团队经过多轮沟通对焦,通力合作共同输出了基于 ARMS 构建企业级应急响应体系的最佳实践,并成功在极数 BI 业务中落地,实现了全业务、全场景的监控和告警。同时全面提升了监控的覆盖率和告警有效率,其中按照极氪现行推广的应急响应机制,全团队事件接手率显著提升,告警平均认领耗时(MTTA)大幅降低,告警平均恢复耗时(MTTR)明显缩短,跨团队协同效率得到有效提升。

image

以下重点介绍下整体方案中围绕“告警、接手”两项落地的“以事件为中心的告警全生命周期管理”解决方案。

image

采用 ARMS 智能告警建设统一的告警事件管理中心

极氪技术团队根据自身业务属性使用了多种监控系统,例如阿里云应用监控 ARMS、阿里云日志服务 SLS、Zabbix、Prometheus、Grafana 和自定义告警集成等,为了简化联系人、通知方式、值班等运维配置;统一告警信息格式、告警等级定义和告警事件的统一管理,极氪采用了 ARMS 智能告警作为多告警源统一管理的事件管理中心。ARMS 智能告警设计的集成、事件处理流、通知策略等功能专门针对告警统一管理的场景,解决了统一管理过程中遇到的诸多问题。

image

1)接入不同格式的告警。

ARMS 智能告警参考开源 Prometheus 告警定义,使用一个半结构化的数据结构来描述告警。通过高度可扩展的键值对来描述告警,这样就可以非常灵活的对告警内容进行扩展从而接入不同的数据源产生的告警。通过告警集成的字段映射能力,即可将自定义的告警内容中的关键信息映射到 ARMS 告警数据结构中。同时也提供了多种监控工具的快捷接入能力,像极氪这边使用的阿里云应用监控 ARMS、阿里云日志服务 SLS、Zabbix、Prometheus、Grafana 等均已覆盖。

2)告警等级统一定义。

根据影响面的不同、业务受损程度的不同,一般需要定义不同的告警等级,告警处理人员需要根据不同的告警等级执行不同的应急处理过程。按照极氪的故障等级规范,配置告警时根据业务情况将告警归一到 P0、P1、P2、P3 四个等级。

3)事件和告警的归一化管理。

多告警事件源通过集成的方式统一到 ARMS 智能告警,通过统一的事件处理流、通知策略、通知对象、升级策略等对告警事件进行归一化管理。一份通知对象、一套通知策略、一致的告警管理模式,满足极氪统一的告警事件中心需求。

基于极氪使用的企业微信建设便捷高效的 ChatOps 掌上运维能力

ChatOps 是一种集成了聊天和自动化工具的协作方法和文化,旨在提高团队的协作效率和可见性。ChatOps 的目标是提高工作流程的效率和可见性,并促进团队成员之间的协作和沟通。极氪内部使用企业微信作为办公协同工具,ARMS 智能告警支持对接企业微信,通过创建企业微信机器人,即可在通知策略中指定对应的企业微信群用于接收告警,相关告警信息仅在企业微信的极氪内部企业组织内流转。当通知策略的匹配规则被触发时,系统会自动向指定的企业微信群发送告警通知。企业微信群收到通知后,便可以随时随地在企业微信群中对告警进行管理。

image

当告警以卡片的形式发送到 IM 群聊中,可以通过订正卡片的样式来添加一组操作进行告警的处理。通过 IM 的告警卡片即可便捷进行告警的全生命周期管理:

1)认领告警。 通过认领告警的消息广播可以让群成员之间明确的知道当前告警是谁在处理。

2)屏蔽告警。 有些告警触发属于预期内的行为,且不会造成业务影响,但是又不能直接关闭告警。这种情况下可以通过屏蔽告警来降低告警通知的打扰。

3)关注告警。 关注告警后,会将被关注告警的状态变更以短信的形式推送给关注人。对于重大故障的情况下,团队负责人可以通过关注告警的能力实时订阅关注告警处理的进展,从而为指挥决策提供数据支撑。

4)解决告警。 关闭告警并在群聊中发送一个告警关闭的通知,被关闭的告警状态会变成已恢复。

同时为了方便极氪告警值班人员快速知悉告警通告情况,防止群消息过多被忽略,告警通知支持在告警通知群中@指定处理人。通过将告警处理人添加为 ARMS 联系人、通知策略中配置的通知对象和绑定处理人手机号相同即可实现告警通知时根据排班情况@值班人员。

源于 ITIL 理念且适用于极氪组织架构和业务属性的事件管理体系

大数据团队目前正在极数 BI 业务推广的数字化稳定性治理机制最核心的部分就是构建一套标准规范的事件管理流程。流程上包含告警发现、告警通报、告警响应/接手、告警定位、指挥决策、告警恢复、故障复盘和持续改进。从人员组织上包括运维团队、告警值班人员、告警处置技术人员、应急指挥人员等。当告警触发接收到通报后,告警值班人员需要迅速建立针对告警关联团队的高效协同渠道,故障应急启动后。技术同学需要尽快完成签到,同时同步进行故障快速止血、根因定位排查、信息同步,如果在预期时间内未接手签到,告警通知将逐步升级。运维团队和应急指挥人员要负责统筹收集相关数据并同步影响面、处理进展和恢复进展,定时播报,更新告警处理情况。

image

1)排班管理

ARMS 智能管理提供排班管理功能,告警通知可以按照运维人员的值班时间设置告警发送的排班表,再通过通知策略将告警通知以电话、短信、邮件或企微消息的方式发送至对应的值班人员,而不会打扰到非值班时间的运维人员。告警值班人员再根据事件管理标准流程进行告警接手和处置。

2)通知策略

通过设置通知策略,可以制定针对告警事件的匹配规则。当匹配规则被触发时,系统会以指定的通知方式向通知对象发送告警信息,以提醒通知对象采取必要的问题解决措施。通知策略中可以选择排班表,匹配到通知策略的事件将会按照排班表中的人员进行告警通报。为了保障告警的接手率,防止值班人员遗漏告警,还可以在配置重复通知策略,当告警未恢复时,告警会以设置的重复频率循环发送告警信息直至告警恢复。

另外极氪的事件管理流程规定告警必须值班人员干预和接手,哪怕告警已经自动恢复。ARMS 智能告警提供了告警手动恢复的能力,当告警事件在告警集成中设置的自动恢复时间内都没有再触发,告警不会自动恢复,必须人工干预调整状态。满足极氪对值班人员接手率考核和度量的要求。

3)升级策略

对于长期未解决的告警,可以选择升级通知来提醒值班人员及时解决。在通知策略中添加升级策略后,系统会以指定的通知方式向处理人发送告警信息,以提醒处理人采取必要的问题解决措施。极氪的事件管理流程规定长期未处置的告警需要进行两层升级,一层到业务部门主管,再一层到应急指挥主管。通过这种方式也是为了尽可能提高告警接手率,降低告警处理和恢复时长。

灵活、自定义的 ARMS Grafana 应急响应数据大盘

如果没有数据报告和持续运营,那么对现状的了解就会充满了模糊和不确定性,事件管理对整体业务的提升就没法落到实处。客观的数据虽然不能替代沟通和观察,但是通过数据共享和信息的可视化,能够有效的促进共识的达成,大家都能够共同的看到和了解数据变化和现状,促进相互协作。ARMS 智能告警默认提供历史告警总览和告警处理效率两张数据大盘,大盘提供了告警统计、告警趋势、MTTx 指标、人员效率等一系列告警度量数据,这些数据存储在默认的 Prometheus 实例中。极氪则根据自身运维诉求基于原始数据在 ARMS Grafana 服务中配置了自定义的应急响应度量大盘,包括值班状态、告警概览、告警接手情况和 MTTx 指标等,帮助运维团队能够实时了解业务告警状态及应急处置情况,大幅提升了应急响应效率。

image图:测试数据大盘示意图

04 后续合作的方向和规划

极氪全业务推行的数字化稳定性治理正在如火如荼的进行着,整体应急响应效率得到大幅提升的同时,也挖掘了更多的能够进一步提升效率的需求点,阿里云云原生可观测团队将继续跟大数据团队在提升告警规则配置效率和进一步缩短告警恢复时间上深度合作共建。

近期 ARMS 智能告警新发布的静态阈值推荐、告警数预测、区间检测和告警规则测试等能力将借助智能化的手段帮助极氪进一步提升告警规则配置效率。同时 ARMS 智能告警新增支持行动集成,提供函数计算 FC 和自定义 Webhook 的行动集成能力,基于行动集成提供的可执行的任务能够作为告警快速止血的预案,对于具有确定性特征的告警,能够提供快速的止血恢复手段,可以有效缩短实际的告警恢复时长。

业务系统的稳定性和应急响应效率,是品牌口碑和用户体验的基石,阿里云将坚定不移的为客户提供极致“稳定、安全、性能、成本”的产品和方案,助力客户业务再攀高峰。

目前,应用实时监控服务 ARMS 提供 15 天专家版免费试用, 助力企业快速构建可观测体系。

点击此处,立即领取免费额度。

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

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

相关文章

DNS指向别名还是IP

现在有一台服务器dbprod126,ip是172.22.100.4 现在有一个需求,需要在dns中对dbprod126建一个别名wondadb3r的记录,也就是ping wondadb3r的时候显示的是dbprod126的ip,目前有两​种方法,主要使用方法1指向别名&#xf…

matplotlib基础--2

5 图例 matplotlib中的图例是帮助观察者理解图像数据的重要工具。图列通常包含在图像中,用于解释不同的颜色、形状、标签和其它元素。 1)主要参数 当不设置图例的参数时,默认的图例是这样的。 x np.linspace(0,1,50) y1 np.sin(x*2*np.p…

【unity插件】使用BehaviorDesigner插件制作BOSS的AI行为树

文章目录 前言素材插件一、基础使用二、敌人物理攻击三、敌人面向玩家四、敌人法术攻击五、随机进行攻击六、敌人不同的阶段推荐学习视频源码完结 前言 Behavior Designer是一个行为树插件,是一款为了让策划,程序员,美术人员方便使用的可视化…

基于SSM技客户管理系统源码和论文

基于SSM技客户管理系统源码和论文079 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 一、课题的背景和意义 1、课题目的 客户管理是每个企业中最重要的模块,对客户的分类管理有利于更有效地了解从…

RHCE——九、SELinux

SELinux 一、概念1、作用2、SELinux与传统的权限区别 二、SELinux工作原理1、名词解释主体(Subject)目标(Object)策略(Policy)安全上下文(Security Context) 2、文件安全上下文查看1…

java入门第三节

java入门第三节 一.什么是oop 1.pop与oop (1).面向过程编程:(POP:Procedure Oriented Programming) 1.步骤清晰简单,第一步做什么,第二步做什么,按照顺序; 2.代码线性&#xff0…

什么是 TEE

参考文献: Sabt M, Achemlal M, Bouabdallah A. Trusted execution environment: what it is, and what it is not[C]//2015 IEEE Trustcom/BigDataSE/Ispa. IEEE, 2015, 1: 57-64. “U.S. government protection profifile for separation kernels in environment…

svn软连接和文件忽略

软连接 1)TortoiseSVN->Properties->New->Externals->New 2)填入软连接信息 Local path: 写下软连接后的文件夹的名字 URL: 想要软连接的牡蛎->TortoiseSVN->Repo-browser 复制下填入 文件忽略 以空格隔开就行

CentOS 7 Nacos 设置开机自动重启

一、说明 Nacos如果是手动启动的话,在服务器宕机或者重启后,没有自动运行,影响很多业务系统,需要每次手动执行命令 startup.sh -m standalone,才能启动 Nacos 服务,不能像docker服务一样,使用 …

「Vue|网页开发|前端开发」01 快速入门:快速写一个Vue的HelloWorld项目

本文主要介绍如何用vue开发的标准化工具vue-cli快速搭建一个符合实际业务项目结构的hello world网页项目并理解vue的代码文件结构以及页面渲染流程。 文章目录 一、准备工作:安装node.js二、项目搭建创建项目目录全局安装vue-cli使用Webpack初始化项目启动项目学会…

Prometheus关于微服务的监控

在微服务架构下随着服务越来越多,定位问题也变得越来越复杂,因此监控服务的运行状态以及针对异常状态及时的发出告警也成为微服务治理不可或缺的一环。服务的监控主要有日志监控、调用链路监控、指标监控等几种类型方式,其中指标监控在整个微服务监控中比重最高,也是实际生…

支持库和应用条

每个Android新版本都会引入一些新特性,不过并不是每个人都能做到Android一推出新版本就升级到那个最新版本,实际上,大多数人都至少落后一个版本。而支持库允许在老版本的Android上使用新特性。 Andriod支持库提供了对Android老版本的向后兼容…

模块化与组件化:开发中的双剑合璧

引言:模块化与组件化的重要性 在现代软件开发中,随着项目规模的增长和技术的复杂性增加,如何有效地组织和管理代码变得越来越重要。模块化与组件化作为两种主要的代码组织方法,为开发者提供了有效的工具,帮助他们创建…

小白带你学习linux的LNMT和动静分离(三十九)

目录 一、LNMT 1、部署tomcat 2、部署nginx 3、部署Mariadb 4、配置Nginx 二、Nginx高级配置 1、location 2、rewirte 三、动静分离 1、修改nginx配置文件 2、重启服务!!! 一、LNMT L是linux,N是nginx ,M是…

8.28作业

定义一个基类 Animal&#xff0c;其中有一个虚函数 perform()&#xff0c;用于在子类中实现不同的表演行为。 #include <iostream>using namespace std; class Animal { public:Animal() {}virtual void perform(){} }; class Monkey:public Animal { public:Monkey() {…

普通制造型企业,如何成就“链主品牌

“链主品牌”通常掌握产业链主导地位&#xff0c;对于普通制造型企业看起来是遥不可及的事情&#xff0c;事实上并非如此。从洞察穿越周期的“链主品牌”规律来看&#xff0c;做螺丝起家的伍尔特、做宠物牵引绳的福莱希等小企业也可以成为“链主品牌”。另外&#xff0c;由于新…

如何用大模型解决产业场景实战问题?案例精讲教程来了!

科技爆炸&#xff0c;大模型赋能千行百业 生成式 AI 正以惊人的势头改变着我们的世界&#xff0c;新的浪潮席卷着全球各个行业&#xff0c;同时&#xff0c;也赋予企业前所未有的创新力量。大模型通过海量数据和复杂算法&#xff0c;刻画出AI世界的精妙法则&#xff0c;让企业…

【Android】TextView适配文本大小并保证中英文内容均在指定的UI 组件内部

问题 现在有一个需求&#xff0c;在中文环境下textView没有超过底层的组件限制&#xff0c;但是一切换到英文环境就超出了&#xff0c;这个如何解决呢&#xff1f;有啥例子吗&#xff1f; 就像这样子的。 解决 全部代码如下&#xff1a; <?xml version"1.0"…

解决无公网IP的微信公众号开发调试问题,利用内网穿透的实践经验分享

文章目录 前言1. 配置本地服务器2. 内网穿透2.1 下载安装cpolar内网穿透2.2 创建隧道 3. 测试公网访问4. 固定域名4.1 保留一个二级子域名4.2 配置二级子域名 5. 使用固定二级子域名进行微信开发 前言 在微信公众号开发中&#xff0c;微信要求开发者需要拥有自己的服务器资源来…

多线程(二)

一.关于线程的常用操作 1.启动线程 run(): 对于run方法的覆写只是指定线程要做的任务清单&#xff0c;而不是真正的启动线程 start()&#xff1a; start()方法才是真正的在底层创建出一个线程&#xff0c;并且启动 2.中断线程 1.通过共享的标记来中断 package demo; impor…