作者:锦琛@阿里云
引言
开源大数据平台 E-MapReduce(简称“EMR”)是云原生开源大数据平台,向客户提供简单易集成的Hadoop、Hive、Spark、Flink、Presto、ClickHouse、StarRocks、Delta、Hudi等开源大数据计算和存储引擎。
云监控(简称“CloudMonitor”)是一项针对阿里云资源和互联网应用进行监控的服务,为云上用户提供开箱即用的企业级开放型一站式监控解决方案。
函数计算(简称“FC”)是事件驱动的全托管计算服务。使用函数计算,您无需采购与管理服务器等基础设施,只需编写并上传代码或镜像。函数计算为您准备好计算资源,弹性地、可靠地运行任务,并提供日志查询、性能监控和报警等功能。
通过结合CloudMonitor以及FC,可以实时捕获EMR集群的生命周期变化,如集群的创建和停止,扩容和缩容以及其他类型的集群状态变更等。
本文演示如何捕获EMR集群状态变更(我们以杭州区域为例)并发送到当前常用的“钉钉”手机客户端,其他服务场景请酌情参考。
关键字
E-MapReduce,CloudMonitor,函数计算,事件通知,钉钉
处理流程
这是我们设计的EMR实时状态在各个产品之间传递链路图,从图上可以看出,当EMR发生状态变更时(如启动集群,停止集群,创建节点组,对节点组进行扩缩容操作等)系统会产生事件,事件消息送到CMS后会触发告警,CMS支持函数计算FC,告警触发后会触发我们准备好的FC函数,从而解析JSON格式的消息内容并发送给“钉钉”手机客户端(客户也可以基于公司内部的聊天工具进行集成,或者定义下一步的操作,从而实现基于事件的自动化告警处理和运维等,关于这一块,本文章暂不做延展说明)。
钉钉配置
配置钉钉群机器人必须使用电脑版的钉钉,登录电脑版钉钉创建钉钉群(此过程略,例如创建后的群名为!!!APM告警),然后点击群右上角的“设置”,然后点击“智能群助手”,如下图所示:
然后选择“添加机器人”,如下图所示:
添加关键字“E-MapR”,其他关键字可自行添加,如下图所示:
在接下来的页面中会出现一个Webhook调用的URL,点击“复制”,类似如下
https://oapi.dingtalk.com/robot/send?access_token=aabbccdd
后面我们设置环境变量的时候将用到这一串aabbccdd
函数计算配置
打开函数计算FC的控制台(点击这里),选择左侧菜单的“服务与函数”,然后在右边的窗口中选择“创建服务”,如下图所示:
创建后点击进入服务,随后点击右侧窗口“创建函数”,如下图所示:
选择“通过zip包上传代码”,其中代码的详细地址如下(也可以手工下载此文件,然后从本地上传):
https://emr.oss-cn-hangzhou.aliyuncs.com/best_practice/cms/function_ding.zip
上传后,在代码TOKEN处填写创建的钉钉机器人token,如下图所示:
保存后点击部署代码,如果没有报错,表示部署成功。
云监控配置
打开云监控的控制台(点击这里),选择左侧菜单的“系统事件”,然后在右边的窗口中选择“创建报警规则”,如下图所示:
弹出创建窗口后,在产品类型处填写“E-MapReduce”,事件名称填写“节点组扩缩容成功、集群创建成功、集群释放成功、节点组升配成功”为例,资源范围选择“全部资源”(也可以选择应用分组选择您想要监控的集群id),选择函数计算并选择之前配置的服务和函数名,如下图所示:
点击确认后,完成配置,并确保规则生效,如图所示:
测试验证
打开EMR的控制台(点击这里),部署一个DataLake的EMR集群即可(过程略)。
正确返回
因为订阅了创建事件,我们的手机客户端就可以收到类似如下的消息提醒(集群状态 STARTING-> RUNNING),如下图所示:
错误诊断
如果启动集群过程中并没有收到对应的提醒,请首先确认对应的环境,查看函数计算中函数调用日志有没有错误,如下图所示:
扩展
经过上面的文档指引和动手实验,我们基于EMR集群的生命周期管理(如集群创建,停止,集群扩缩,缩容等)都会有对应提醒,其实只需要修改文件“function_ding.zip”里面对应的解析的JSON文件的内容,这个流程可以复制到别的场景,例如ECS的相关操作。
除了钉钉告警之外,还有更多的用法,比如将数据写入oss,写入数据库等等,期待您的使用。
钉钉扫码进群,了解更多详情