加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

Linux记录-告警脚本

发布时间:2020-12-14 02:05:41 所属栏目:Linux 来源:网络整理
导读:#!/bin/bashexport JAVA_HOME=/app/jdk/jdk1.8.0_92export HADOOP_CONF_DIR=/home/hdfs/balancer/hadoop-confrm -f hostname.txtrm -f dfused.txtrm -f hostdfs.txtrm -f hostdfs_alert.txt###获取大于97%的主机名和dfs used%function checkdfs(){echo "star
#!/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
###获取大于97%的主机名和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>97{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}‘) ":" ${ddarr[$m]} >> hostdfs_alert.txt
    fi
done
}
checkdfs

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 "bdp.ops."$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
          
data_expression="x>97"
data_time=5
data_count=1
data_alertMode="1,2,3"
data_members="01384016"
add_url="http://xxx/monitor/rule/addReport"
keynum=$(cat key.txt | wc -l)
let keynum+=1
echo $keynum
function dfsalert(){
for((n=1;n<$keynum;n++))
do
data_key=$(sed -n "$n p" key.txt | awk ‘{print $1}‘)
str1=$(sed -n "$n p" key.txt | awk -F "." ‘{print $3"."$4"."$5"."$6}‘)
str2="以下主机IP HDFS使用已经超过97%:"
data_description=${str2}${str1}
add_data="{"id":"$data_key","expression":"$data_expression","time":$data_time,"count":$data_count,"alertMode":"$data_alertMode","members":"$data_members","description":"$data_description"}"
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 

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读