采用Cloudera Mananger提供的自定义告警脚本的方式,收集告警信息并转发到钉钉群中(钉钉群机器人)
主要内容:
- 实现Cloudera Manager告警的钉钉群机器人转发
- 实现思路是采用cloudera manager支持的自定义告警脚本方式,在脚本中调用钉钉群机器人的api
环境:
- CDH 6.3.2
- 钉钉 5.0.16
添加群机器人
分别点击:xxx群->鼠标右键->群设置->智能群助手->添加机器人->自定义->添加->填写机器人名称及安全设置->完成
配置Cloudera Manager平台自定义告警脚本
查看CDH Alert Publisher 所在的机
登录到对应的服务器,新建告警脚本目录
mkdir /data/apps/cdh_alert/mkdir /data/log/cdh_alertcd /data/apps/cdh_alert/#安装python依赖pip3 install dingtalkchatbot
将对应的脚本上传至服务器
cdh_alert_send.sh
#!/usr/bin/env bash# 抓告警信息cat $1 > /data/log/cdh_alert/alert.log# 告警信息发送ALERT_INFO=`cat $1 | python3 /data/apps/cdh_alert/cdh_alert.py`echo ${ALERT_INFO}
cdh_alert.py
#!/usr/bin/env python#coding: utf8import sysimport jsonimport timefrom dingtalkchatbot.chatbot import DingtalkChatbot#接收CDH报警发送盯盯群脚本if __name__ == "__main__":myfile = sys.stdinalert_data = json.load(myfile)content = "### CDH集群告警\n"for i in range(0, len(alert_data)):alert=alert_data[i]["body"]["alert"]attributes=alert["attributes"]timestamp= time.localtime(alert["timestamp"]["epochMs"]/1000)content = content +"> 时间:**"+time.strftime("%Y-%m-%d %H:%M:%S",timestamp)+"**\n"content = content +"> 集群名称:"+ ','.join(attributes["CLUSTER_DISPLAY_NAME"])+"\n"content = content +"> 服务名:"+ ','.join(attributes["SERVICE"]) +"\n"content = content +"> 角色名:"+ ','.join(attributes["ROLE_TYPE"]) +"\n"content = content +"> 主机名:"+ ','.join(attributes["HOSTS"]) +"\n"content = content +"> 内容:"+alert["content"] +"\n"content = content +"> 详情:"+alert["source"]+"\n"content = content +"> ---------------------------------------\n"print(content)robot= "https://oapi.dingtalk.com/robot/send?access_token=xxx"ding = DingtalkChatbot(robot)ding.send_text(msg=content,is_at_all=False)
修改告警目录下所有脚本的权限和组
chown -R cloudera-scm:cloudera-scm /data/apps/cdh_alertchmod 755 -R /data/apps/cdh_alertchown -R cloudera-scm:cloudera-scm /data/log/cdh_alert
在Cloudera Manager上配置自定义告警服务的脚本路径,找到cm的配置,Alert Publisher配置中找到自定义报警脚本的配置:alert.script.path
重启Cloudera Manager服务,自定义告警配置完成
报警测试
本环境为个人的测试环境,手动kill掉集群的一个Spark的SPARK_YARN_HISTORY_SERVER服务,看是否可以实现自定义告警
钉钉群里的告警记录
