Linux记录-告警脚本
#!/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记录-告警脚本的更多相关文章
- linux下shell脚本执行jar文件
最近在搞一个shell脚本启动jar文件个关闭jar文件的东东.搞得我都蛋疼了.今天晚上终于弄好了 话说,小弟的linux只是刚入门,经过各方查资料终于搞定了.话不多说,下面开始上小弟写的shell脚 ...
- Linux记录-监控系统开发
需求:使用shell定制各种个性化告警工具,但需要统一化管理.规范化管理.思路:指定一个脚本包,包含主程序.子程序.配置文件.邮件引擎.输出日志等.主程序:作为整个脚本的入口,是整个系统的命脉.配置文 ...
- Linux记录-shell 100例(转载)
1.编写hello world脚本 #!/bin/bash # 编写hello world脚本 echo "Hello World!" 2.通过位置变量创建 Linux 系统账户及 ...
- Linux如何用脚本监控Oracle发送警告日志ORA-报错发送邮件
Linux如何用脚本监控Oracle发送警告日志ORA-报错发送邮件 前言 公司有购买的监控软件北塔系统监控,由于购买的版权中只包含了有限台数据库服务器的监控,所以只监控了比较重要的几台服务器. 后边 ...
- 使用C#给Linux写Shell脚本
在这个逼格决定人格,鄙视链盛行的年头,尤其是咱们IT界,请问您今天鄙视与被鄙视的次数分别是多少?如果手中没有一点压箱的本事,那就只有看的份了.今天我们也要提升下自己的格调,学习些脑洞大开的东西,学完之 ...
- 详解Linux交互式shell脚本中创建对话框实例教程_linux服务器
本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一下. 当你在终端环境下安装新的软件时,你可以经常看到信息 ...
- 使用C#给Linux写Shell脚本(下篇)
在上篇的<使用C#给Linux写Shell脚本>结尾中,我们留下了一个关于C#如何调用BashShell的问题.在文章发布之后,我留意到有读者留言推荐使用“Pash”(一款类PowerSh ...
- linux nginx 启动脚本
linux nginx 启动脚本 [root@webtest76 ~]# vi /etc/init.d/nginx #!/bin/bash # nginx Startup script for the ...
- Linux记录从此开始
Linux记录从此开始~ 希望自己多写代码同时多记录~
随机推荐
- ajax 提交数组 泛型集合(嵌套集合)
直接上代码 后台接口: A类型中嵌套了 List<B> B类型中嵌套了 List<C> [HttpPost] public string Post(A a) { return ...
- 【ARC072E】Alice in linear land DP
题目大意 有一个人要去直线上\(lm\)远处的地方,他会依次给他的机器发出\(n\)个指令.第\(i\)个指令为\(d_i\).他的机器收到一个指令\(x\)后,如果向目的地方向前进\(xm\)后比当 ...
- 【CF633D】Fibonacci-ish
题目描述 小y最近迷上了fibonacci数列,他定义了一种数列叫类fibonacci数列: 1.这个数列包含至少\(2\)个元素 2.\(f_0\)和\(f_1\)是任意选取的 3.\(f_{n+2 ...
- JLOI2016 简要题解
「JLOI2016」侦查守卫 题意 有一个 \(n\) 个点的树,有 \(m\) 个关键点需要被监视.可以在其中一些点上插眼,在 \(i\) 号点上放眼需要花费 \(w_i\) 的代价,可以监视距离 ...
- 【BZOJ5317】[JSOI2018]部落战争(凸包,闵可夫斯基和)
[BZOJ5317][JSOI2018]部落战争(凸包,闵可夫斯基和) 题面 BZOJ 洛谷 题解 很明显我们只需要两个凸包\(A,B\). 假设询问给定的方向向量是\(v\). 那么现在就是判断\( ...
- debugger
今天爬取cfda时遇到的困难,一旦开启了调试,就debugger pause, ???还有这种操作 一顿google,百度,解决了这个问题,点一下Deactivate breakPoints,然后点一 ...
- Typescript学习笔记(四)class 类
typescript的类,与c#,java等语言的类类似.也是包含了一大部分的es6的实现.我会用最通俗的语言讲一下对coding有用的地方. class Greeter { greeting: st ...
- Codeforces Round #487 (Div. 2) C - A Mist of Florescence
C - A Mist of Florescence 把50*50的矩形拆成4块 #include<bits/stdc++.h> using namespace std; ],b[]; ][ ...
- c# 获取机器硬件信息 (硬盘,cpu,内存等)
using System; using System.Collections.Generic; using System.Globalization; using System.Management; ...
- Fiddler安装证书
1.打开Fiddler,点击工具栏中的Tools——>Fiddler Options… 2.切换到 HTTPS 选项卡,勾选 Capture HTTPS CONNECTs,勾选 De ...