集群接口机存储监控

目前,我们正在建设基于Hadoop集群的统一数据中心,因为采集数据量大,容易遇到接口机存储不够的情况,所以写了个自动监控存储大小,不足则发出告警的脚本。

代码如下:

#!/bin/bash
######################################################################
#  FileName     :  disk_capatiy_alarm.sh 
#  Author       :  lyc
#  CreateDate   :  2017--06--02
#  Description  :  this script is mointoring the linux disk
#                  capacity, if disk used more than 90%,
#                  then it will send a alarm sms
######################################################################

sms_content="/ngbss/SCHD/lyc/scripts/output/diskchk_sms.txt";
sms_logfile="/ngbss/SCHD/lyc/scripts/output/diskdetail.txt";

#server_ip=132.224.36.29
server_ip=`ifconfig bond0|grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "` #获取本机IP地址
if [ ! -f ${sms_content} ];then
  cat /dev/null > ${sms_content}
fi

if [ ! -f ${sms_logfile} ];then
  cat /dev/null > ${sms_logfile};
fi

date >> ${sms_content}
date >> ${sms_logfile}

#操作数据库
conn_db()
{
  sql=$1
  export NLS_LANG='AMERICAN_AMERICA.UTF8'
  sqlplus -S  dm/bxdt75_d@132.224.36.12:1521/dss <<EOF
  set heading off feedback off pagesize 0 verify off echo off
  $sql
  exit;
EOF
}

sendSms()
{
  date_today=`date +%Y_%m_%d`
  subject="服务器 ${server_ip}磁盘空间告警"
  content="服务器 $server_ip 磁盘空间告警 ,请及时处理,路径:$1"
  echo $content >> ${sms_content}
  conn_db "call bcaapp.p_app_send_mms('BONC','$subject','$content');"
}

for d in `df -P | grep /dev | awk 'BEGIN{OFS=","}{print $6,$5}' | sed 's/%//g'` 
 do
  if [ `echo $d|cut -d , -f2` -gt 90 ]; then #disk capacity beyong 90% and alarm
    df -h >>$sms_logfile;
    sendSms $d"%"
    exit 0;
  fi
done

由于我们的客户是电信运营商,所以我们的告警是通过短信发出来的。这里也可以通过邮件发出来。

这个脚本的自动化运行是通过公司的ETL产品进行调度的。如果没有ETL工具,可以通过linux的crontab功能实现。

不过要注意使用crontab功能时,对命令的引用需要使用绝对路径等问题。

监控只是辅助手段,真正的解决办法是要在建设之初就要规范好各类数据文件的存储和清除机制并自动化运行。

随着文件的增长,存储周期也会动态调整,目前我已经基本收不到此类告警了。

原文地址:https://www.cnblogs.com/leeyuki/p/7908060.html