#!/bin/bash

export JAVA_HOME=/app/jdk/jdk1.8.0_92
export HADOOP_CONF_DIR=/home/hdfs/balancer/hadoop-conf
rm -f hostname.txt
rm -f dfused.txt
rm -f hostdfs.txt
rm -f hostdfs_alert.txt
###获取大于95%的主机名和dfs used%
function checkdfs(){
echo "start checking hdfs used rate"
hdfs dfsadmin -report | grep -i "50010" | awk -F ":" '{print $2}'| awk '{print $1}' > hostname.txt
hdfs dfsadmin  -report | grep "DFS Used%" | awk -F ": " '{print $2}' | awk -F "%" '{print $1}' > dfused.txt
livesum=$(hdfs dfsadmin -report  | grep "Live datanodes" | awk '{print $3}' | awk -F "):" '{print $1}' | awk -F "(" '{print $2}')
echo $livesum
sed -i '1d' dfused.txt
let livesum+=1
sed -i $livesum',$d' dfused.txt
sed -i $livesum',$d' hostname.txt
linesum=$(cat hostname.txt | wc -l)
echo $linesum
harr=($(awk '{print $1}' hostname.txt))
darr=($(awk '{print $1}' dfused.txt))
if [ $linesum -gt 0 ]
  then
  for (( i = 0 ; i < ${#harr[@]} ; i++ ))
  do
     for (( j = 0 ; j < ${#darr[@]} ; j++ ))
     do
         if [ $i -eq $j ]
         then
            echo ${harr[$i]} ":" ${darr[$j]} >> hostdfs.txt
         fi
     done
 done
else
   echo "Not Live Datanodes"
fi
ddarr=($(cat hostdfs.txt | awk '$3>95{print $3}' |sort -ru))
for (( m = 0; m< ${#ddarr[@]} ; m++ ))
do
    if [[ $(echo $(cat hostdfs.txt) | grep "${ddarr[$m]}") != "" ]]
    then
    echo $(cat hostdfs.txt | grep "${ddarr[$m]}" | awk 'NR==1{print $1":"$3}') >> hostdfs_alert.txt
    fi
done
}
checkdfs

rm -f key.txt
url="http://xxx/monitor/report/sendReport"
linenum=$(cat hostdfs_alert.txt | wc -l)
let linenum+=1
echo $linenum
#上报数据
function postdfs(){
for (( k = 1; k< $linenum ; k++ ))
  do
  key=$(echo $(sed -n "$k p" hostdfs_alert.txt | awk -F ":" '{print "xxx.hdfs_used##ip="$1"##cluster=bdp##env=prod"}') | awk '{gsub(/[[:blank:]]*/,"",$0);print $0;}' )
  echo $key >> key.txt
  value=$(sed -n "$k p" hostdfs_alert.txt | awk -F ":" '{print $2}')
  data="{\"key\":\"$key\",\"value\":\"$value\"}"
  echo $data
  cmd="curl -s -X POST -H 'Content-type':'application/json' -d '${data}' ${url}"
  sh -c "$cmd"
  done
}
postdfs

rm -f allkey.txt
expression="x>95"
time=5
count=1
alertMode="1,2,3"
members="bdp-ops"
call_users="bdp-ops"
call_content="xxx"
add_url="http://xxx/monitor/rule/addReport"
hnum=$(cat hostname.txt | wc -l)
let hnum+=1
echo $hnum
function dfsalert(){
for(( n = 1;n<$hnum;n++))
do
key=$(sed -n "$n p" hostname.txt | awk '{print "xxx.hdfs_used##ip="$1"##cluster=bdp##env=prod"}')
str1=$(sed -n "$n p" hostname.txt | awk '{print $1}')
str2="的HDFS使用率已经超过95%,请检查HDFS存储目录"
echo $key >>allkey.txt
description=${str1}${str2}
add_data="{\"id\":\"$key\",\"expression\":\"$expression\",\"time\":$time,\"count\":$count,\"alertMode\":\"$alertMode\",\"members\":\"$members\",\"description\":\"$description\",\"call_users\":\"$call_users\",\"call_content\":\"$call_content\"}"
echo $add_data
add_cmd="curl -s -X POST -H 'Content-type':'application/json' -d '${add_data}' ${add_url}"
sh -c "$add_cmd"
done
}
dfsalert 

Linux记录-告警脚本的更多相关文章

  1. linux下shell脚本执行jar文件

    最近在搞一个shell脚本启动jar文件个关闭jar文件的东东.搞得我都蛋疼了.今天晚上终于弄好了 话说,小弟的linux只是刚入门,经过各方查资料终于搞定了.话不多说,下面开始上小弟写的shell脚 ...

  2. Linux记录-监控系统开发

    需求:使用shell定制各种个性化告警工具,但需要统一化管理.规范化管理.思路:指定一个脚本包,包含主程序.子程序.配置文件.邮件引擎.输出日志等.主程序:作为整个脚本的入口,是整个系统的命脉.配置文 ...

  3. Linux记录-shell 100例(转载)

    1.编写hello world脚本 #!/bin/bash # 编写hello world脚本 echo "Hello World!" 2.通过位置变量创建 Linux 系统账户及 ...

  4. Linux如何用脚本监控Oracle发送警告日志ORA-报错发送邮件

    Linux如何用脚本监控Oracle发送警告日志ORA-报错发送邮件 前言 公司有购买的监控软件北塔系统监控,由于购买的版权中只包含了有限台数据库服务器的监控,所以只监控了比较重要的几台服务器. 后边 ...

  5. 使用C#给Linux写Shell脚本

    在这个逼格决定人格,鄙视链盛行的年头,尤其是咱们IT界,请问您今天鄙视与被鄙视的次数分别是多少?如果手中没有一点压箱的本事,那就只有看的份了.今天我们也要提升下自己的格调,学习些脑洞大开的东西,学完之 ...

  6. 详解Linux交互式shell脚本中创建对话框实例教程_linux服务器

    本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一下. 当你在终端环境下安装新的软件时,你可以经常看到信息 ...

  7. 使用C#给Linux写Shell脚本(下篇)

    在上篇的<使用C#给Linux写Shell脚本>结尾中,我们留下了一个关于C#如何调用BashShell的问题.在文章发布之后,我留意到有读者留言推荐使用“Pash”(一款类PowerSh ...

  8. linux nginx 启动脚本

    linux nginx 启动脚本 [root@webtest76 ~]# vi /etc/init.d/nginx #!/bin/bash # nginx Startup script for the ...

  9. Linux记录从此开始

    Linux记录从此开始~ 希望自己多写代码同时多记录~

随机推荐

  1. HDU5977 Garden of Eden 【FMT】【树形DP】

    题目大意:求有所有颜色的路径数. 题目分析:参考codeforces997C,先利用基的FMT的性质在$O(2^k)$做FMT,再利用只还原一位的特点在$O(2^k)$还原,不知道为什么网上都要点分治 ...

  2. Linux服务器定时健康检查,发生故障自动微信告警

    此脚本适用于于各种Linux环境,可以实现各种监控项目,可自定义阀值,实现不同监控效果已在原有脚本基础上做了简化,提取了主要功能目前实现的有:1.磁盘监控2.内存监控3.cpu负荷监控4.进程数监控5 ...

  3. 洛谷CF809C Find a car(数位DP)

    洛谷题目传送门 通过瞪眼法发现,\(a_{i,j}=(i-1)\text{ xor }(j-1)+1\). 二维差分一下,我们只要能求\(\sum\limits_{i=0}^x\sum\limits_ ...

  4. Hdoj 1548.A strange lift 题解

    Problem Description There is a strange lift.The lift can stop can at every floor as you want, and th ...

  5. 自学Zabbix4.0之路

    自学Zabbix4.0之路 01 Centos7安装Zabbix4.0步骤 02 Centos7下Zabbix3.4至Zabbix4.0的升级步骤 03 Zabbix4.0添加cisco交换机基本监控 ...

  6. 小程序-camera

    camera 使用这个组件使用手机的拍摄功能.实现如下操作 打开拍摄画面,在手机上半屏显示拍摄取景,下面有一个拍摄按钮.点击后,取景器位置显示拍摄画面,下面显示确定取消按钮. 确定后,下方的预览图片列 ...

  7. [ZJOI2012]灾难(建图)

    阿米巴是小强的好朋友. 阿米巴和小强在草原上捉蚂蚱.小强突然想,如果蚂蚱被他们捉灭绝了,那么吃蚂蚱的小鸟就会饿死,而捕食小鸟的猛禽也会跟着灭绝,从而引发一系列的生态灾难. 学过生物的阿米巴告诉小强,草 ...

  8. CF1137C Museums Tour(Tarjan,强连通分量)

    好题,神题. 题目链接:CF原网 洛谷 题目大意: 一个国家有 $n$ 个城市,$m$ 条有向道路组成.在这个国家一个星期有 $d$ 天,每个城市有一个博物馆. 有个旅行团在城市 $1$ 出发,当天是 ...

  9. Can DBC文件翻译

    1 引言 DBC文件描述单个CAN网络的通信.这个信息足以监测和分析网络并模拟不是物理可用的节点(剩余的总线模拟). DBC文件也可以用来开发电子控制单元的通信软件,该控制单元应该是CAN网络的一部分 ...

  10. hdu 3746 Cyclic Nacklace(kmp最小循环节)

    Problem Description CC always becomes very depressed at the end of this month, he has checked his cr ...