tencent cloud

事件总线

动态与公告
产品动态
【2024年07月19日】CLS 的 EB 专用日志主题恢复计费公告
新手指引
产品简介
产品概述
基本概念
产品优势
应用场景
限制说明
购买指南
计费概述
产品定价
欠费与停服说明
快速入门
开通事件总线
快速投递自定义事件
快速配置云产品事件告警推送
快速配置云监控事件告警推送
事件源
事件源概述
官方云服务事件源
事件结构
连接器
事件
事件结构
自定义事件
官方云服务事件
事件集
事件集概述
创建事件集
管理事件集
链路追踪
事件规则
事件规则概述
事件模式
创建事件规则
管理事件规则
配置数据转换
事件目标
SCF 云函数目标
CLS 日志目标
消息推送目标
Ckafka 目标
实践教程
迁移事件告警
Oceanus 告警消息实时推送
云服务器异常自动备份与重启
基于 EventBridge 设计零售业务中台
API 文档
History
Introduction
API Category
Making API Requests
Delivery Target APIs
Event Bus APIs
Event Rule APIs
Event Connector APIs
Data Transformer APIs
Event Storage APIs
Data Types
Error Codes
常见问题
概念相关
告警相关
计费相关
联系我们
EB 政策
EB 隐私协议
EB 数据处理和安全协议
文档事件总线实践教程云服务器异常自动备份与重启

云服务器异常自动备份与重启

PDF
聚焦模式
字号
最后更新时间: 2024-01-22 20:52:28

操作背景

对于企业的生产环境而言,监控与报警不可或缺的,完善的监控与及时的报警和自动化处理,可以帮助企业快速定位并解决问题,从而减少经济损失。
腾讯云事件总线(EventBridge,EB)是一款安全、稳定、高效的无服务器事件管理平台。事件中心的事件总线可以接收来自您自己的应用程序、软件即服务(SaaS)和腾讯云服务的实时事件及相关数据流,通过集成消息推送和 SCF 云函数,实现告警信息的事实通知和自动化处理。
本文以服务器异常为例,为您介绍当云服务器产生告警事件后,如何基于事件总线 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 higher
const tencentcloud = require("tencentcloud-sdk-nodejs");

const CvmClient = tencentcloud.cvm.v20170312.Client;
const CbsClient = tencentcloud.cbs.v20170312.Client;
var secretId = process.env.secretId //环境变量注入您账号的 secretId
var secretKey = process.env.secretKey //环境变量注入您账号的 secretKey
var insID = event.subject

const 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:创建事件规则并完成告警事件的筛选过滤

2. 事件集中,选择云服务事件集 > default
3. default事件集详情中,单击管理事件规则
4. 事件规则中,单击新建事件规则。创建规则用于过滤和转换事件。
4.1 云服务器磁盘只读事件为例,创建规则如下:
规则1:接收磁盘只读异常事件


规则2:接收实例重启事件


4.2 事件规则也支持自定义编辑,您可根据实际需求,自定义您的事件规则信息。示例如下:
筛选所有来自广州地域的云服务器事件。
{
"source":"cvm.cloud.tencent",
"region":"ap-guangzhou"
}
筛选指定实例 ID 的云服务器事件。
{
"source":"cvm.cloud.tencent",
"subject":[
"ins-xxxxxx",
"ins-xxxxxx"
]
}

步骤3:绑定事件目标并完成后端处理逻辑的绑定 和推送目标的设置

创建好规则信息后,根据指引,为规则绑定投递目标,以上述 demo 为例:
对于规则1,需要同时绑定消息推送云函数两类型目标。
消息推送
云函数
选择指定方式接收告警信息。


绑定 步骤1 创建的云函数,实现告警事件自动化处理。


对于规则2,只需绑定消息推送目标。



步骤4:测试使用流程,发送模拟事件,检验流程是否通过

完成配置后,便已完成告警自动处理链路的搭建,您BN 可通过模拟告警事件,测试流程是否可以正常运行:
函数成功调用:


实例重启:


创建快照:


告警信息接收:


重启邮件接收:



帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈