[root@localhost ~]# vim自动巡检脚本.sh
#!/bin/bash
###################################################################
# Functions: this script from polling system status
# Info: be suitable for CentOS/RHEL 6/7 
# Changelog:
#     2018-01-28    Hetl    initial commit
###################################################################

#set path env,if not set will some command not found in crontab
# export
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
# source /etc/profile

#set user to run this script
# report_user='monitor'

#  run this script use monitor
# if [ `whoami` != "$report_user" ];then
#     echo " only monitor can run this script"
#     exit 1
# fi

# define log path
# LOGPATH=/home/$report_user/var
# [ -d $LOGPATH ] || mkdir -p $LOGPATH
# RESULTFILE="$LOGPATH/HostDailyCheck-`hostname`-`date +%Y%m%d`.txt"

# check system version,6 or 7 ?
OS_Version=$(awk '{print $(NF-1)}' /etc/redhat-release)

# define globle variable
report_DateTime=''    #日期
report_SystemVersion=''    #系统版本
report_Hostname=''    #主机名
report_IP=''    #主机IP
report_CpuUser=''    #用户空间占用CPU百分比
report_CpuSys=''    #内核空间占用CPU百分比
report_CpuIdle=''    #CPU空闲率
report_CpuUsed=''    #CPU使用率
report_MemALL=''    #内存大小
report_MemFree=''    #内存剩余
report_MenRate=''    #使用率
report_DiskInfo=''    #磁盘信息
report_DefunctProsess=''    #僵尸进程数量
report_ProcessCount=''    #系统进程数
report_ProcessStatus='' #特定进程状态

function getSystemStatus(){
    report_DateTime=$(date +"%F %T")
    report_SystemVersion=$(cat /etc/redhat-release)
    report_Hostname=$(hostname)
}

function getCpuStatus(){
    if [[ $OS_Version < 7 ]];then
        report_CpuUser=$(top -n 1|grep 'Cpu(s)'|awk '{print $2}'|sed
's/us\,//')
        report_CpuSys=$(top -n 1|grep 'Cpu(s)'|awk '{print $3}'|sed
's/sy\,//')
        report_CpuIdle=$(top -n 1|grep 'Cpu(s)'|awk '{print $5}'|sed
's/id\,//')
        report_CpuUsed=''    #建议程序计算
    else
        report_CpuUser=$(top -n 1|grep 'Cpu(s)'|awk '{print $2}')%
        report_CpuSys=$(top -n 1|grep 'Cpu(s)'|awk '{print $4}')%
        report_CpuIdle=$(top -n 1|grep 'Cpu(s)'|awk '{print $8}')%
        report_CpuUsed=''    #建议程序计算
    fi
}

function getIpInfo(){
    #report_IP=$(ip -f inet addr | grep -v 127.0.0.1 |  grep inet | awk
'{print $NF,$2}' | tr '\n' ',' | sed 's/,$//')
    if [[ $OS_Version < 7 ]];then
        report_IP=$(ifconfig|grep "inet addr:"|grep -v "127.0.0.1"|cut -d:
-f2|awk '{print $1}')
    else
        report_IP=$(ifconfig|grep -w inet|grep -v "127.0.0.1"|awk '{print
$2}')
    fi
}

function getMemInfo(){
    report_MemALL=$(grep MemTotal /proc/meminfo|awk {'print $2'})
    report_MemFree=$(grep MemFree /proc/meminfo|awk {'print $2'})
    report_MenRate=''    #使用率--建议程序计算
}

function getDiskInfo(){
    report_DiskInfo=$(df -Ph |grep -vE 'boot|run|tempfs|Filesystem|文件系统'|grep
-vw '0%'|awk '{print $6,$5,$4}')
}

function getProcessNum(){
        #僵尸进程数量
    report_DefunctProsess="$(ps -ef | grep defunct | grep -v grep|wc -l)"
        #进程总数
        report_ProcessCount="$(ps aux|wc -l)"
}

#获取单个进程的状态,参数1:程序名,参数2:筛选关键字
function getSingleProcessStats(){
    if [ $# -eq 1 ];then
        count=$(ps -ef | grep $1 | grep -v 'grep' | wc -l)
    elif [[ $# -eq 2 ]]; then
        count=$(ps -ef | grep $1 |grep $2| grep -v 'grep' |wc -l)
    else
        count="ERROR"
    fi

    if [[ $count = "ERROR" ]]; then
        report_ProcessStatus=$report_ProcessStatus$1"
""getSingleProcessStats()参数错误""|"
    elif [[ count -ge 1 ]]; then
        report_ProcessStatus=$report_ProcessStatus$1" ""YES""|"
    else
        report_ProcessStatus=$report_ProcessStatus$1" ""NO""|"
    fi
}

function getAllProcessStats(){
    getSingleProcessStats java CheungSSH aaa
    getSingleProcessStats flume
    getSingleProcessStats systemd
    getSingleProcessStats netns
}

#统一监控平台OVO接口测试
function OVOWebServiceStatus(){
    nodeName=`echo -n "192.168.56.200" | base64`
    alertName=`echo -n "TEST" | base64`
    severity=`echo -n "ALARM" | base64`
    Message=`echo -n "OVO接口测试,无需报障,谢谢!" | base64`
    
    #获取当前时间,yyyyMMddHHmmSS
    arisingTime=`date +%Y%m%d%H%M%S`
    arisingTime=`echo -n "${arisingTime}" | base64`
    
    #目前接口至通过agentId="OVO"的告警
    agentId=`echo -n "OVO" | base64`
    curl
http://192.168.56.200:8089/collectorAlertService/collectAlert/$nodeName/$alertName/$severity/$Message/$arisingTime/$agentId
    if [ $? -eq 0 ];
        then
        ImmsWebServiceStatus="ACCESS"
        echo $ImmsWebServiceStatus
    fi
}

function getJson(){
    json="{
        \"DateTime\":\"$report_DateTime\",
        \"report_Hostname\":\"$report_Hostname\",
        \"report_IP\":\"$report_IP\",
        \"report_SystemVersion\":\"$report_SystemVersion\",
        \"report_CpuUser\":\"$report_CpuUser\",
        \"report_CpuSys\":\"$report_CpuSys\",
        \"report_CpuIdle\":\"$report_CpuIdle\",
        \"report_MemALL\":\"$report_MemALL\",
        \"report_MemFree\":\"$report_MemFree\",
        \"report_DiskInfo\":\"$report_DiskInfo\",
        \"report_DefunctProsess\":\"$report_DefunctProsess\",
        \"report_ProcessCount\":\"$report_ProcessCount\",
        \"report_ProcessStatus\":\"$report_ProcessStatus\"
    }"
    echo "$json" 
}

function main(){
    getSystemStatus
    getCpuStatus
    getIpInfo
    getDiskInfo
    getMemInfo
    getProcessNum
    getAllProcessStats
    getJson
}

#main > $RESULTFILE
main

 

shell脚本的效果图

[root@localhost ~]#  sh zhuhaiyan.sh 
{
        "DateTime":"2018-07-22 13:46:03",
        "report_Hostname":"room9pc01",
        "report_IP":"176.130.4.34
192.168.4.254
192.168.2.254
201.1.1.254
201.1.2.254
172.25.254.250
172.25.0.250
192.168.6.254
192.168.122.1",
        "report_SystemVersion":"CentOS Linux release 7.4.1708 (Core) ",
        "report_CpuUser":"28.8%",
        "report_CpuSys":"0.0%",
        "report_CpuIdle":"97.0%",
        "report_MemALL":"16147372",
        "report_MemFree":"12032600",
        "report_DiskInfo":"/ 75% 29G
/dev/shm 2% 7.6G
/var/ftp/openstack-ext 100% 0
/var/lib/libvirt/images 59% 77G
/var/ftp/centos7 100% 0
/var/www/html/rhel7 100% 0
/var/ftp/rhel7 100% 0
/var/ftp/openstack 100% 0",
        "report_DefunctProsess":"0",
        "report_ProcessCount":"248",
        "report_ProcessStatus":"java getSingleProcessStats()参数错误|flume
NO|systemd YES|netns YES|"
    }


 

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信