#!/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

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

linux时钟告警,Linux记录-告警脚本相关推荐

  1. Linux中的无人职守安装脚本kickstart

    Linux中的无人职守安装脚本kickstart 1 kickstart自动安装脚本的作用 2 实验环境 3 kickstart自动安装脚本的制作 3.1 通过模板生成kickstart文件 3.2用 ...

  2. linux terminal教程,Linux入门教程 - 如何记录和重放Linux终端会话

    原标题:Linux入门教程 - 如何记录和重放Linux终端会话 来自:https://www.linuxmi.com/replay-linux.html 使用命令,我们可以在type文件中记录终端会 ...

  3. 视频教程-Kali Linux渗透测试全程课与脚本语言编程系列课程-渗透测试

    Kali Linux渗透测试全程课与脚本语言编程系列课程 本人有多年的服务器高级运维与开发经验,擅长计算机与服务器攻防及网络攻防技术!对网络安全领域有持续的关注和研究! 林晓炜 ¥899.00 立即订 ...

  4. PHP 命令行模式实战之cli+mysql 模拟队列批量发送邮件(在Linux环境下PHP 异步执行脚本发送事件通知消息实际案例)...

    源码地址:https://github.com/Tinywan/PHP_Experience 测试环境配置: 环境:Windows 7系统 .PHP7.0.Apache服务器 PHP框架:ThinkP ...

  5. linux进程时钟时间,Linux的时钟

    Linux的时钟 作者:linuxer 发布于:2017-5-17 18:55 分类:时间子系统 一.前言 时钟或者钟表(clock)是一种计时工具,每个人都至少有一块,可能在你的手机里,也可能佩戴在 ...

  6. linux内核时钟工作原理,需要学习并了解Linux时钟的原理及其应用

    一.前言 时钟或者钟表(clock)是一种计时工具,每个人都至少有一块,可能在你的手机里,也可能佩戴在你的手腕上.如果Linux也是一个普通人的话,那么她的手腕上应该有十几块手表,包括:CLOCK_R ...

  7. 【Linux】《Linux命令行与shell脚本编程大全 (第4版) 》笔记-汇总 ( Chapter1-Chapter16 )

    一.初识 Linux shell Linux 系统可划分为以下 4 部分. Linux 内核 GNU 工具 图形化桌面环境 应用软件 内核主要负责以下 4 种功能. 系统内存管理 内核通过硬盘上称为交 ...

  8. 基于全志A33开发板linux系统移植学习记录(Boot0)

    基于全志A33开发板linux系统移植学习记录 第一章 Boot0基于ARMGCC的编译与修改 文章目录 基于全志A33开发板linux系统移植学习记录 前言 一.全志A33简介以及上电引导流程 二. ...

  9. Linux 时钟管理

    Linux 时钟管理 时钟管理是操作系统不可或缺的一个重要组成部分.无论是应用程序还是内核本身都在大量使用各种各样的timer.本文介绍了Linux操作系统曾经使用和现在正在使用的时钟管理机制,着重阐 ...

  10. 【Linux时钟系统】

    Linux系统时间 时间设备![在这里插入图片描述](https://img-blog.csdnimg.cn/7c50db7d72ba4ff5a0f1264629769184.png) RTC时钟系统 ...

最新文章

  1. 猪行天下之Python基础——7.1 文件存储
  2. 机器学习-常见的损失函数比较
  3. 怎么取消任意Windows窗口总在最前
  4. Swift之深入解析“类”的底层原理
  5. Spark学习之Spark调优与调试(7)
  6. Android之如何成为Android高手
  7. 记HTML5 a 标签的一个小坑 1
  8. linux mysql多实例启动_Mysql实例Linux下启动多个mysql服务器例子
  9. keytool错误: java.lang.RuntimeException: 用法错误,and 不是合法的命令【转】
  10. java基础-final
  11. 【运动学】基于matlab平抛小球地面跳跃规律【含Matlab源码 981期】
  12. cad二次开发之无法验证该可执行文件的发布者解决方案
  13. Oracle 12c 数据库基础教程
  14. 职称计算机考试常用的命令,Visual FoxPro常用命令分类表
  15. 计算机无法识别u盘,电脑无法识别U盘怎么办?简单搞定
  16. 【总结】1298- 如何用油猴提升前端开发效率
  17. 拼多多服务器请求失败在手机上如何修复,拼多多系统繁忙
  18. 记录一次关于解除推特的冻结
  19. 认识V模型、W模型、H模型
  20. AI人才创新发展联盟(AIHIA)执行委员会一届一次会议胜利闭幕

热门文章

  1. linux最大文件句柄数量总结
  2. 大数据在未来十年将如何发展
  3. JVM从入门到精通(九):JVM调优实战 - arthas 的使用
  4. Kafka Without ZooKeeper ---- 不使用zookeeper的kafka集群
  5. 【解题报告】Leecode 859. 亲密字符串——Leecode每日一题系列
  6. 【一起去大厂系列】什么是回表查询?怎么优化回表查询?
  7. 面试官问我:如何解决ABA问题?我给出接近满分的回答
  8. 【详细解析】1033 To Fill or Not to Fill (25 分)
  9. python Thread 函数_Python系列学习笔记
  10. 【GIF动画+完整可运行源代码】C++实现 快速排序——十大经典排序算法之六