带你读《云上自动化运维宝典》——提升云上资源稳定性的两大利器:事件驱动体系构建&自诊断工具(1)

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: 带你读《云上自动化运维宝典》——提升云上资源稳定性的两大利器:事件驱动体系构建&自诊断工具(1)

弹性计算技术公开课——CloudOps云上运维季目前已经圆满结束了,阿里云弹性计算技术专家王子龙和阿里云弹性计算技术专家樊超在本次课程中带来了题为《提升云上资源稳定性的两大利器:事件驱动体系构建&自诊断工具》的主题分享, 课程涵盖基于事件构建可观测体系、基于事件的云上运维、ECS事件驱动最佳实践、使用ECS遇到故障时的痛点分析、一眼排障ECS健康状态、一键定位ECS健康诊断等内容。

 

以下是本节课程的内容整理,供各位开发者学习:

 

大家好,我是来自阿里云弹性计算团队的王子龙,今天给大家讲一下如何构建 ECS 的事件驱动体系,如何基于 ECS 事件进行自动化运维,提升运维效率,从这四个方面给大家进行介绍。

1. 基于事件构建可观测体系

首先看一下如何基于事件构建可观测体系,先看一个真实案例。

 

image.png

 

某用户使用了突发性能实例,再进行大幅活动的时候,发现实例性能不符合业务预期,CPU 负载高,紧急进行了扩容,对大促活动造成了一些不好的影响,事后对该案例进行分析,可以看到,在问题可以发生时,如果能够提前感知对问题进行处理,就可以避免对业务的影响。

 

在使用 ECS 过程中会遇到很多突发问题。比如实例重启影响了正常业务使用,磁盘出现损坏,无法进行数据读写,创建实例后我们如何知道实例已经创建成功能够正常运行。针对这些问题,我们的共性思考就是能否提前感知问题,能否避免问题影响业务,是否能够知道问题产生的原因。针对问题,我们能做什么,如何处理从而对业务没有影响以及如何提升效率,比如使用 openai ati 的过程中,如何避免轮询更高效的感知 ati 的结果。

 

image.png

 

这里列出了使用 ECS 时可能会遇到的一些常见共性问题,在实例维度会遇到实例突然宕机,实例非预期重启,实例性能受损,实例欠费等问题,在磁盘方面会出现磁盘损坏,磁盘性能严重降低,如何换盘问题,从安全层面会遇到实例受 DDOS 攻击,是否存在潜在的安全违规问题,从业务操作层面启动实例,挂载网卡是异步的,怎么能够及时感知结果,创建快照时间比较久,如何知道快照什么时间创建完成。

 image.png

 

接下来了解如何监测这些问题,这是公有云的完整架构数据图。通过对刚才列出的问题进行分类可以分为两部分,一部分是阿里云底层物理设备或者服务异常导致的问题,另一部分是客户使用资源的直接或者间接行为导致所产生的,而这些问题都会有对应的 ECS 事件,阿里云会把 ECS 实例出现到异常以及用户操作所导致的资源状态变化包装为不同类型的 ECS 事件,通过订阅 ECS 事件,可以监测当前实例的健康状态。

 

image.png

 

通过介绍 ECS 事件,了解事件和实例问题之间的关系。首先,不同的事件类型代表不同的问题。

 

比如磁盘不可用会对应坏盘事件,比如创建的快照。快照完成后就会有快照创建完成时间。目前 ECS 事件整体分为运维事件,用户事件,安全类事件,费用类事件。

 

每个大的分类一下都会有不同的事件类型对应不同的问题场景。比如都会有实例重启时间。非预期事件就是发生了重启通知用户,计划内运维事件就是未来某个事件会发生重启,用户可以修改重启时间规避问题。

 

对运维事件进行一下说明:运维事件分为非预期运维事件和计划内运维事件,非预期事件是指由于宿主底层软硬件突然出现故障,比如说硬件损坏,软件 Bug 等,导致其上的 ECS 突然变得不可用,计划类运维事件是阿里云计划对宿主级进行维护升级或阿里云发现底层物理机存在故障隐患,提前通知用户进行相关操作,同时我们根据受影响的程度划分了不同的事件等级,分为严重、警告、信息、三个级别。

 

如严重的等级,就表示这个事件需要被尽快处理,否则可能会导致实例无法使用,用户可以根据自己的诉求关注不同等级的事件。另外,事件会按照统一的标准进行定义,根据事件定义,我们能够一目了然的明白当前事件代表的含义,一般事件会包括资源类型。比如 instanse 代表实例,DISK 代表云盘。还会有事件起因说明该事件为何产生,还有对资源的影响,如宕机表示 ECS 实例会停止运行。

 

另外部分事件会有事件的状态,如 executing 代表事件正在执行中。另外,我们可以基于事件进行一些运维的操作。

 

下面看一下什么是基于事件观测实例的健康状态。

image.png

 

首先是实例产生事件后会通过阿里云的消息中心发送短信,邮件。在阿里云 ECS 控台可以查看实例下产生了哪些事件,也可以通过 open API 进行实践查询,这里可以只查询自己关注的事件。

 

同时我们也可以在云监控查看事件,在云监控的系统事件列表下可以根据不同的条件筛选不同的事件和查看,同时我们再用监控也可以配置自定义的报警规则,选择关注的事件,针对事件创建报警规则,投递到指定的渠道,目前支持多种投递渠道,同时我们还可以根据事件的属性进行事件过滤,实现更精确的观测。

2. 基于事件的云上运维

看一下如何基于事件进行运维,先看一个真实案例。

 

image.png

 

某个用户在业务高峰期实例发生了重启,影响了该时间段的业务。分析后发现,该实例的底层宿主机出现了故障。平台计划在未来某个时间段重启实例,通过迁移规避故障。而刚好该是时间为用户的业务高峰期,用户可以通过修改计划重启时间,避开业务高峰。但是用户忽略了这个通知。除了重启,我们还会遇到比如本地盘损坏,云盘残留安全问题,而这些问题都会有对应的事件,都可以基于事件运维提前规定,比如阿里云底层宿主机存在潜在的软硬件故障风险,需要重启。那此时 ECS 就会生成实例相关的计划内运维事件。

 

通过重启,重新部署等操作,可以提前规避底层的风险。同时我们还能指定重启的时间,避免重启对业务造成影响。比如本地盘出现损坏,会生成磁盘相关的事件。我们可以通过隔离坏盘,本地维修,磁盘恢复事件,来完成对受损的本地盘的处理。我们可以授权阿里云执行事件,也可以修改事件的执行时间,也可以通过系统去集成事件。

 

下面介绍一下基于事件进行运维的几种方式。

 

image.png

 

第一可以基于 ECS 控制台进行运维。我们可以在控制台试验列表选择关注的事件。如果事件太多,也可以通过一些过滤条件进行筛选。在事件列表会展示事件对应的实例,事件类型,事件的严重等级,事件状态。通过点击操作下方的按钮执行事件,不同事件对应的操作会有所不同,有的是重新部署,有的可以设置重启时间。具体的操作会根据实践类型而有所不同。

 

第二用户可以基于 ECS 事件 open API 进行运维。用户可以通过 open API 主动查询某个地域下全部实例或者某个实例的运维事件。

 

image.png

 

并且快速适配自己的业务系统进行自动化的对接。目前有三个新的 API

 

一个是可以查询用户下某个地域内的沉没实例或者指定实例。第二个,就是我们对于外形中的状态的运维事件。用户可以去响应该事件,并授权阿里云执行默认的操作。第三我们可以修改某个地域下全部实例或者某个实例的运维策略比如说,修改运维的事件窗口,修改运维的维护动作。第三我们可以基于 EVENT  BUS 平台进行系统的集成。我们会把 ECS 事件推到云监控,可以在 EVENT  BUS 平台上订阅事件。

 

这里看一下基于 EVENT BREAK 示例。首先选择要订阅的事件来源。ECS 事件请选择阿里云官方事件源,然后选择需要订阅的事件类型,选择后会给出事件格式的示例。接下来呢,我们可以创建对应的事件,订阅的规则,选择合适的投递协议投递到我们的应用系统。目前支持了多种的投递协议,可以满足多样化的系统提升诉求。

3. ECS 事件驱动最佳实践

 

image.png

 

接下来看一下基于第三次事件驱动的最佳实践。这是云上某用户通过 EVENT bridge 订阅事件进行自动化运维的最佳实践。首先用户会在 EVENT bridge 创建实现规则,选择 HTTP 作为事件的投递协议。其次,用户会订阅关注的云产品产生的事件。EVENT bridge 也提成了阿里云很多云产品事件。当产品产生事件的时候会通过EVENT bridge 投递到用户自己的内部用户系统。

 

在用户系统中通过 KAFKA 进行内部的事件分发。事件会与内部的财务系统进行集成,实时感知费用变化情况,支持费用相关的业务。一些运维事件会按照优先级事件类型进行分类,分发给不同的运维人员进行处理。另外还有一些内部应用会集成事件,用来订阅资源状态变化。内部业务系统和应用程序通过实验驱动来集成阿里云的事件,方便运维人员通过事件进行自动化的运维。

 

这个是通过事件驱动解决轮询用户 OPEN API 体验差的最佳事件。用户会调用 ECS open API 操作 ECS 的资源。

 

image.png

 

但像启动实例,挂载网卡,创建镜像等操作是异步的,不能实时得到结果。此时用户就会调用查询类的 API,不断轮询资源的状态。但是轮询会遇到限流,并且会有很多无效的查询,不能实时感知结果。而通过事件驱动的方式,当有事件产生时, ECS 会把事件发布到 EVENT BUS 平台,如云监控,用户选择使用 MNS 协议,同时通过事件驱动的方式进行集成。

 

一方面更新内部业务系统的资源状态,解决资源状态更新不及时的问题。另一方面可以根据事件中的时间属性与内部运维系统提成统计整个操作的耗时。

 

通过事件驱动的方式,可以解决异步 Open API 轮询体验差,能够在第一时间感知业务操作结果,避免阻塞当前业务,同时事件驱动的方式编程更友好,相比 open API 更适合应用提成。


更多精彩内容,欢迎观看:

带你读《云上自动化运维宝典》——提升云上资源稳定性的两大利器:事件驱动体系构建&自诊断工具(2):https://developer.aliyun.com/article/1405330

相关实践学习
RocketMQ监控/告警一站式搭建应用
RocketMQ监控/告警一站式搭建演示
相关文章
|
2天前
|
运维 监控 安全
构建高效自动化运维体系:策略与实践
【4月更文挑战第25天】在数字化转型的浪潮中,企业IT基础设施日趋复杂多变,传统的手动运维模式已难以满足快速响应和高效管理的需求。本文探讨了构建一个高效自动化运维体系的关键环节,并结合实际案例分析,提出了一系列切实可行的策略与实践方法。文章着重分析了自动化工具选择、流程设计优化以及持续监控的重要性,并讨论了如何通过这些手段降低运维成本,提升系统稳定性和安全性。
|
3天前
|
人工智能 运维 监控
构建高效自动化运维体系的五大关键步骤
【4月更文挑战第25天】 在现代IT架构的复杂多变环境中,传统的手动运维方式已无法满足快速迭代与稳定性的双重要求。本文将深入探讨构建一个高效自动化运维体系的关键步骤,涵盖从工具选型到流程优化的全方位考量。通过引入自动化工具、实施标准化流程、建立监控预警机制、持续集成与部署以及文档化管理,组织能够实现运维效率的显著提升,确保系统的稳定性和可靠性。
7 0
|
3天前
|
存储 运维 Kubernetes
构建高效自动化运维体系:Ansible与Kubernetes的协同策略
【4月更文挑战第25天】 在当今快速迭代的软件开发过程中,自动化运维已成为提升效率、保证一致性和降低人为错误的关键。本文将探讨如何利用Ansible作为配置管理工具,以及Kubernetes作为容器编排系统,共同构建一个高效、可靠的自动化运维体系。文章首先概述了自动化运维的基本概念及其重要性,随后详细分析了Ansible与Kubernetes在自动化流程中的作用与优势,并通过一系列实践案例,展示了两者如何协同工作以优化部署、扩缩容和灾难恢复等关键运维任务。最后,文中还讨论了在实际应用中可能遇到的挑战及相应的解决策略,为读者提供了一套完整的自动化运维解决方案参考。
|
12天前
|
运维 Kubernetes Devops
构建高效自动化运维体系:DevOps与容器技术融合实践
【4月更文挑战第15天】 在当今快速发展的信息技术时代,传统的IT运维模式已难以满足业务敏捷性的需求。本文旨在探讨如何通过整合DevOps理念和容器技术来构建一个高效的自动化运维体系。文章将详细阐述DevOps的核心原则、容器技术的基础知识,以及两者结合的优势。此外,文中还将分享一系列实践经验,包括持续集成/持续部署(CI/CD)流程的搭建、微服务架构的应用,以及监控和日志管理策略的优化,以期帮助企业实现快速、可靠且安全的软件交付过程。
|
14天前
|
人工智能 运维 监控
构建高效自动化运维体系的实践与思考
【4月更文挑战第14天】在数字化转型的浪潮中,自动化运维作为提升系统稳定性和效率的关键手段,受到了企业的广泛关注。本文将深入探讨如何构建一个高效的自动化运维体系,涵盖从基础设施的搭建到流程的优化等多个方面。通过分析当前自动化运维的挑战及解决方案,文章旨在为读者提供一套实用的策略框架,帮助企业实现运维工作的高效化、标准化和智能化。
|
18天前
|
机器学习/深度学习 存储 运维
构建高效自动化运维体系的五大策略
【4月更文挑战第10天】在数字化转型的浪潮中,企业IT基础设施的复杂性与日俱增,传统的手动运维模式已难以满足快速响应和高效率的需求。本文将探讨构建一个高效自动化运维体系的五大策略,包括监控与告警的智能化、配置管理自动化、故障自愈能力的提升、日志管理的优化以及持续集成和部署(CI/CD)的实践。这些策略将帮助企业减轻运维负担,提高系统稳定性和业务敏捷性。
|
19天前
|
运维 监控 Kubernetes
构建高效自动化运维体系的实践与思考
【4月更文挑战第8天】在数字化时代,IT基础设施的复杂性日益增加,传统的手工运维模式已经难以满足快速响应和高效率的需求。本文将探讨如何通过自动化工具和策略构建一个高效的自动化运维体系,旨在提高系统的稳定性、减少人为错误以及优化资源分配。文章首先分析了自动化运维的必要性,接着介绍了实现自动化的关键技术和工具,并通过案例分析展示自动化运维体系的实际效果。最后,对自动化运维的未来发展趋势进行了展望。
|
15天前
|
数据采集 存储 API
网络爬虫与数据采集:使用Python自动化获取网页数据
【4月更文挑战第12天】本文介绍了Python网络爬虫的基础知识,包括网络爬虫概念(请求网页、解析、存储数据和处理异常)和Python常用的爬虫库requests(发送HTTP请求)与BeautifulSoup(解析HTML)。通过基本流程示例展示了如何导入库、发送请求、解析网页、提取数据、存储数据及处理异常。还提到了Python爬虫的实际应用,如获取新闻数据和商品信息。
|
1月前
|
Web App开发 Python
在ModelScope中,你可以使用Python的浏览器自动化库
在ModelScope中,你可以使用Python的浏览器自动化库
17 2
|
1月前
|
存储 BI 数据处理
Python自动化 | 解锁高效办公利器,Python助您轻松驾驭Excel!
Python自动化 | 解锁高效办公利器,Python助您轻松驾驭Excel!