#!/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. oracle统计id出现次数,oracle 统计sql
  2. JAVA实现简单链表操作
  3. oracle学习笔记一
  4. Compliments 计算机术语,2016年9月统考计算机复习题.doc
  5. Nginx使用Location匹配URL进行伪静态
  6. Go 内存对齐的那些事儿
  7. 数据仓库相关书籍调研
  8. golang利用json.Unmarshal转json为map、slice类型
  9. 解决:System.Data.SqlClient.SqlException: 超出了存储过程、函数、触发器或视图的最大嵌套层数(最大层数为 32)....
  10. 如何解决NDK toolchains出现ABI mips64el-linux-android无法编译问题
  11. 【2021】【论文笔记】太赫兹量子阱光电探测器——
  12. Unity WebGL基于js通信实现网页录音
  13. 替罪羊树的原理及实例
  14. The number of method references in a .dex file cannot exceed 64K. Error 解决方案
  15. WebRTC视频码率控制(一)—— CPU使用度检测
  16. 学Linux有哪些就业方向?
  17. 学习笔记1--自动驾驶系统架构
  18. matlab读取串口数据并显示曲线
  19. 配电室环境监控系统,实现电力设备监控的无人化
  20. 【在虚拟机上安装windows系统】

热门文章

  1. redis 持久化详解 RDB和AOF 优缺点
  2. Proxy error: Could not proxy request /admin/myResources.do from localhost.jd.com:41000 to http://loc
  3. Storm 03_Storm 架构设计
  4. vscode 经过跳板机,连接到内网服务器
  5. ZooKeeper实战(一):ZooKeeper原理,详细安装步骤,基本命令,节点间通信原理
  6. 算法设计与分析 矩阵连乘问题 动态规划
  7. @SessionAttributes 和 @SessionAttribute的区别
  8. flex与java间用json传输数据,如何在Java中使用flexjson通过@JSON注释控制序列化?
  9. android 禁用dlsym_Android7.0对dlopen的改变——读取私有.so结果变化
  10. C/C++ 指针和数组