前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >0523-5.15-为Cloudera Manager配置自定义告警脚本

0523-5.15-为Cloudera Manager配置自定义告警脚本

作者头像
Fayson
发布2019-11-27 18:50:12
1.9K0
发布2019-11-27 18:50:12
举报
文章被收录于专栏:Hadoop实操

1

文档编写目的

Cloudera Manager支持三种方式的告警输出,在前面的文章《如何为CDH集群配置警报邮箱》和《如何通过Cloudera Manager配置使用SNMP方式转发告警》Fayson介绍了邮件和SNMP两种方式的告警接入,那Cloudera Manager还支另外一种自定义告警脚本方式接入告警,本篇文章Fayson主要介绍如何使用自定义告警脚本的方式将CM告警输出。

  • 测试环境

1.CM和CDH版本为5.15.0

  • 前置条件

1.CDH集群使用Cloudera Manager管理

2

环境准备

这里在Cloudera Management Service下的Alert Publisher服务所在节点安装了jq命令,主要用于解析JSON格式的数据。由于Alert Publisher服务通过自定义告警脚本方式输出的告警内容为json格式,为了能够方便的解析

1.在Cloudera Manager服务器上安装JQ命令,用于解析JOSN数据文件

代码语言:javascript
复制
[root@cdh1 ~]# yum -y install jq

2.在Linux上可以通过jq命令方便的解析JSON数据,如下所示:

代码语言:javascript
复制
[root@cdh1 script]# cat alert_test.log | jq -r '.[].body.alert.attributes.__uuid'

更多的使用方式大家可以查看资料或使用帮助文档。

3

自定义告警脚本及配置

1.在Alert Publisher服务所在节点创建如下目录,并修改属主

代码语言:javascript
复制
[root@cdh1 ~]# mkdir -p /opt/cloudera/script       
[root@cdh1 ~]# chown cloudera-scm. /opt/cloudera/script
[root@cdh1 ~]# ll /opt/cloudera/

注意:需要将放脚本目录修改属主修改为cloudera-scm,因为接下来的脚本会在该目录下产生一些临时文件。

2.在/opt/cloudera/script目录下创建alert_script.sh脚本,内容如下:

代码语言:javascript
复制
[root@cdh1 script]# vim alert_script.sh 
#!/bin/bash

OG_ALERT_FILE=$1

date=`date`

# 定义告警日志
ALERT_FILE=/tmp/alert_test.log
# 定义告警解析后日志文件
ALERT_RESULT_FILE=/opt/cloudera/script/alert_result.log

#告警解析存放目录,将原始的告警日志转换为一行行的json存储
TMP_ALERT_FILE=/opt/cloudera/script/tmp_alert.json
cat $OG_ALERT_FILE | jq -r '.[].body.alert|"\(.attributes)"' > $TMP_ALERT_FILE

while read -r line
do
  cluster=$(echo -e $line | jq -r '.CLUSTER_DISPLAY_NAME[]')
  hostname=$(echo -e $line |jq -r '.HOSTS[]')
  if [ $? -ne 0 ];then
     hostname=null
  fi
  echo -e $line | jq -r '.|"\(.HEALTH_TEST_RESULTS[])"' |while read alert; do
    alert_service=$(echo -e $alert | jq -r '.testName')
    alert_enent_doce=$(echo -e $alert | jq -r '.code')
    alert_content=$(echo -e $alert | jq -r '.content')
    alert_severity=$(echo -e $alert | jq -r '.severity')
    echo "告警集群:[$cluster],告警主机:[$hostname],告警级别:[$alert_severity],告警服务:[$alert_service],告警事件编码:[$alert_enent_doce],告警详细内容:[$alert_content]" >> $ALERT_RESULT_FILE
  done

done < $TMP_ALERT_FILE

echo "$date: Wrting log to $ALERT_RESULT_FILE" >> $ALERT_FILE

3.修改脚本属主及执行权限

代码语言:javascript
复制
[root@cdh1 script]# chown cloudera-scm. alert_script.sh 
[root@cdh1 script]# chmod +x alert_script.sh 

4.登录CM进入Cloudera Management Service配置页面,配置自定义告警脚本路径

完成上述配置后,重启Alert Publisher服务即可,不需要重启CMS所有服务。

4

告警脚本测试

1.在集群中手动的kill掉几个服务的进程

这里将cdh2.fayson.com节点的Kafka和Spark History服务的进程kill了,在CM上已显示这两个服务异常

2.登录Alert Publisher服务所在服务器,进入/opt/cloudera/script目录下

可以看到alert_result.log日志文件中保存着已经解析好的告警日志。

5

总结

1.Cloudera Manager支持多种方式上报告警(邮件、SNMP、自定义告警脚本)

2.Alert Publisher服务负责将集群的告警信息转发,通过自定义告警脚本AP服务在/tmp目录下生成一个临时的告警原始文件,文件内容为JSON格式

3.通过自定义告警脚本将原始告警解析后,在脚本中还可以将解析好的告警通过HTTP或其他采集方式将告警上报

4.Fayson在文章中解析JSON格式数据使用到了Linux下的jq命令,更多的使用方式大家可以网上查阅

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-01-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
专用宿主机
专用宿主机(CVM Dedicated Host,CDH)提供用户独享的物理服务器资源,满足您资源独享、资源物理隔离、安全、合规需求。专用宿主机搭载了腾讯云虚拟化系统,购买之后,您可在其上灵活创建、管理多个自定义规格的云服务器实例,自主规划物理资源的使用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档