一、操作背景
这篇以服务器异常为例,为你介绍当云服务器产生告警事件后,如何基于事件总线 EventBridge 和云函数 SCF,实现告警消息的实时推送和硬盘快照的自动回滚,完成自动化运维架构的快速搭建。
二、架构设计
整体架构设计如下所示。当云服务器某台机器出现异常告警,CVM 会自动产生告警事件并主动推送给 EB,经过 EB 绑定的告警规则筛选后,完成到通知渠道的消息触达及时通知到用户,同时触发云函数,以调用 API 的方式完成硬盘快照的快速回滚,保证业务及时恢复。
基本流程如下:实例产生告警事件 > EB 规则筛选过滤 > 投递至消息推送 & 云函数 > 云函数通过调用接口完成硬盘数据的备份及实例重启 > 重启完成后推送用户
三、步骤1:创建函数并实现创建快照和重启逻辑
1. 登录 云函数控制台。
2. 创建新函数,操作详情见 使用控制台创建一个事件函数。
3. 完成调用 API 接口的代码逻辑编写,代码示例如下:
exports.main_handler = async (event, context) => { // Depends on tencentcloud-sdk-nodejs version 4.0.3 or higherconst tencentcloud = require("tencentcloud-sdk-nodejs");const CvmClient = tencentcloud.cvm.v20170312.Client;const CbsClient = tencentcloud.cbs.v20170312.Client;var secretId = process.env.secretId //环境变量注入你账号的 secretIdvar secretKey = process.env.secretKey //环境变量注入你账号的 secretKeyvar insID = event.subjectconst clientConfig1 = { credential: { secretId: secretId, secretKey: secretKey, }, region: "ap-guangzhou", profile: { httpProfile: { endpoint: "cvm.tencentcloudapi.com", }, },};const client1 = new CvmClient(clientConfig1);const params1 = { "InstanceIds": [ ${替换成需要重启的实例ID} ], "StopType": "SOFT"};client1.RebootInstances(params1).then( (data) => { console.log(data); }, (err) => { console.error("error", err); });const clientConfig2 = { credential: { secretId: secretId, secretKey: secretKey, }, region: "ap-guangzhou", profile: { httpProfile: { endpoint: "cbs.tencentcloudapi.com", }, },};const client2 = new CbsClient(clientConfig2);const params2 = { "DiskId": ${替换成需要备份的的硬盘ID}};client2.CreateSnapshot(params2).then( (data) => { console.log(data); }, (err) => { console.error("error", err); });};
你也可以通过 API Explorer 快速生成示例代码。
四、步骤2:创建事件规则并完成告警事件的筛选过滤
1. 登录 事件总线控制台。
2. 在事件集中,选择云服务事件集 > default。
3. 在default事件集详情中,单击管理事件规则。
4. 在事件规则中,单击新建。
4.1 例如云服务类型选择消息队列 RocketMQ 版:
4.2 事件规则也支持自定义编辑,你可根据实际需求,自定义你的事件规则信息。示例如下:
·筛选所有来自广州地域的云服务器事件。
{ "source":"cvm.cloud.tencent", "region":"ap-guangzhou" }
·筛选指定实例 ID 的云服务器事件。
{ "source":"cvm.cloud.tencent", "subject":[ "ins-xxxxxx", "ins-xxxxxx" ] }
五、步骤3:绑定事件目标并完成后端处理逻辑的绑定 和推送目标的设置
创建好规则信息后,根据指引为规则绑定投递目标,通过点击下方的添加可同时绑定消息推送与云函数两类型目标:
消息推送云函数选择指定方式接收告警信息。绑定 步骤1 创建的云函数,实现告警事件自动化处理。