背景
ECS事件通知代表了ECS资源的状态变更。云监控提供了事件通知订阅的功能,用户可以通过设置事件通知来订阅短信、邮件或者钉钉通知。也可以将事件消息转发到消息队列或者日志文件中,通过SDK来进行程序化消费。
云监控尚未支持根据事件详情中的内容进行事件过滤。比如完成创建快照事件,如果用户只想接收创建快照失败的通知,目前还做不到。
运维编排(OOS)的事件运维功能是集成了云监控的事件报警能力和运维编排的自动化能力,可以实现托管的事件驱动运维。使用事件运维功能可以实现上述的事件过滤并通知的功能,实际上这只是最简单的事件运维场景。
配置步骤
配置权限和创建角色
首先,需要给运维编排服务设置RAM权限并创建OOS扮演的角色。如果使用子账户登录运维编排控制台,要给子账户授予合适的权限,请参考官方文档。
由于事件运维任务是7x24小时持续执行的,所以配置角色是必须的,请参考官方文档。
创建一个发送通知的模板
运维编排的运维任务是以模板的形式保存的,模板为json/yaml格式。我们先创建一个发送通知的模板。
Description: Create snapshot fail notification.
FormatVersion: OOS-2019-06-01
Parameters:
diskId:
Type: String
Description:
en: The disk id.
zh-cn: 磁盘ID。
Tasks:
- Name: NotifyDingtalk
Action: 'ACS::Notify'
Properties:
NotifyType: WebHook
WebHook:
URI: 'https://oapi.dingtalk.com/robot/send?access_token=xxx'
Headers:
Content-Type: application/json
Content:
msgtype: text
text:
content: '创建快照失败,磁盘ID {{diskId}}'
at:
atMobiles:
- '18688888888'
URI为钉钉机器人的地址,atMobiles是需要在钉钉消息中@的钉钉账号的手机号。
如需发送邮件,参照官网文档对ACS::Notify的参数进行修改
Tasks:
- Action: ACS::Notify
Name: testNotifyByMail
Properties:
NotifyType: Mail
Mail:
Host: SMTPHostAddress # SMTP 服务器主机地址 如 smtp.example1.com
Port: SMTPPort # SMTP 服务器端口 如 465
Username: sender # 代发送的邮箱用户 如 usr001@example1.com
Password: senderPassword # 代发送的邮箱密码 如 123456zxcv
Subject: mailSubject # 邮件主题 如 hello world
Body: mailBody # 邮件正文 如 hello world !!!
From: senderAddress # 邮件来自 如 usr001@example1.com
To: receiverAddresses # 收件人邮箱地址列表 如 [usr1234@example2.com,usr123@example2.com]
创建一个事件运维任务
登录运维编排控制台,选择告警与事件运维,触发类型选择系统事件,配置触发规则:
选择上面创建的钉钉通知模板:
设置执行模板的参数,可以使用事件消息体中的字段作为钉钉通知模板的入参:
立即执行。
我们看看通知的效果,当一个快照创建失败时,收到了一个钉钉机器人提醒:
探索运维编排的其他功能
以上只是运维编排的一个基本应用,运维编排支持多种常用运维任务,比如更新镜像、批量执行命令,以及定时运维、告警运维、事件运维等等。用户可以使用控制台执行这些常用任务,也可以一键执行一个公共模板。运维编排对接了60款云产品的OpenAPI,支持在用户GuestOS执行自定义命令,还有丰富的原子动作、云产品动作和强大的流程控制能力。如果有定制化的需求,可以编写自己的模板来实现。