欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

定时获取系统监控数据

程序员文章站 2022-04-25 17:41:57
...

一、需求

获取本机cpu、内存、存储使用率,写入数据库sys_monitor表中,一分钟读取一次

二、脚本

vim sysMonitor.sh

#!/bin/bash
hostname=`hostname`
mysqlhost='unisoc1'
mysqlport='3306'
mysqluser='root'
mysqlpassword='uni_soc_mysql'
mysqldb='uni_soc_db'
mysqltablemonitor='sys_monitor'
mysqltableconfig='sys_config'
mysqltablealarm='sys_alarm'

getconfig_sql="select * from $mysqltableconfig where type='user'"

#echo $getconfig_sql
config=`mysql -h${mysqlhost}  -P${mysqlport}  -u${mysqluser} -p${mysqlpassword} ${mysqldb} -e"${getconfig_sql}" | awk 'NR>1'`
#echo $config


now=`date -u -d"+8 hour" +'%Y-%m-%d %H:%M:%S'`
#cpu使用阈值%
cpu_warn=`echo $config | awk '{print $3}'`
#echo "$cpu_warn"
#mem空闲阈值%
mem_warn=`echo $config | awk '{print $4}'`
#echo "$mem_warn"
#disk使用阈值%
disk_warn=`echo $config | awk '{print $5}'`
#echo "$disk_warn"
#---cpu
cpu_idle=`top -b -n 1 | grep Cpu | awk '{print $8}'|cut -f 1 -d "."`
cpu_use=`expr 100 - $cpu_idle`
echo "$now 当前cpu使用率为 $cpu_use%" >> /home/uni-script/sysMonitor/sysMonitor.log
if [ $cpu_use -gt $cpu_warn ]
    then
        echo "cpu warning!!!"
        cpualarmlevel=`echo $config | awk '{print $7}'`
        cpualarminfo=`echo $config | awk '{print $10}'| sed "s/%主机名%/${hostname}/g" | sed "s/%阈值%/${cpu_warn}/g"`
        cpu_alarm_sql="insert into $mysqltablealarm (create_time,update_time,send_status,alarm_src,alarm_level,alarm_info) values('$now','$now','0','$hostname','$cpualarmlevel','$cpualarminfo')"
        #echo $cpu_alarm_sql
        mysql -h${mysqlhost}  -P${mysqlport}  -u${mysqluser} -p${mysqlpassword} ${mysqldb} -e"${cpu_alarm_sql}"
    else
        echo "cpu ok!!!"
fi
#---mem
#MB为单位
mem_total=`free -m | grep "Mem" | awk '{print $2}'`
mem_free=`free -m | grep "Mem" | awk '{print $4+$6}'`
mem_use=$(($(($(($mem_total-$mem_free))*100))/$mem_total))
echo "$now 当前内存使用率为 ${mem_use}%,内存剩余空间为 ${mem_free}MB" >> /home/uni-script/sysMonitor/sysMonitor.log
if [ $mem_use -gt $mem_warn  ]
    then
        echo "mem warning!!!"
        memalarmlevel=`echo $config | awk '{print $8}'`
        memalarminfo=`echo $config | awk '{print $11}'| sed "s/%主机名%/${hostname}/g" | sed "s/%阈值%/${mem_warn}/g"`
        mem_alarm_sql="insert into $mysqltablealarm (create_time,update_time,send_status,alarm_src,alarm_level,alarm_info) values('$now','$now','0','$hostname','$memalarmlevel','$memalarminfo')"
        #echo $mem_alarm_sql
        mysql -h${mysqlhost}  -P${mysqlport}  -u${mysqluser} -p${mysqlpassword} ${mysqldb} -e"${mem_alarm_sql}"
    else
        echo "mem ok!!!"
fi
#---disk
disk_use=`df -P | grep /soc | awk '{print $5}' | cut -f 1 -d "%"`
echo "$now 当前磁盘使用率为 $disk_use%" >> /home/uni-script/sysMonitor/sysMonitor.log
if [ $disk_use -gt $disk_warn ]
    then
        echo "disk warning!!!"
        diskalarmlevel=`echo $config | awk '{print $9}'`
        diskalarminfo=`echo $config | awk '{print $12}'| sed "s/%主机名%/${hostname}/g" | sed "s/%阈值%/${disk_warn}/g"`
        disk_alarm_sql="insert into $mysqltablealarm (create_time,update_time,send_status,alarm_src,alarm_level,alarm_info) values('$now','$now','0','$hostname','$diskalarmlevel','$diskalarminfo')"
        #echo $disk_alarm_sql
        mysql -h${mysqlhost}  -P${mysqlport}  -u${mysqluser} -p${mysqlpassword} ${mysqldb} -e"${disk_alarm_sql}"
    else
        echo "disk ok!!!"
fi

#更新监控数据
update_sql="update $mysqltablemonitor set cpu_use=$cpu_use,mem_use=$mem_use,disk_use=$disk_use where node='$hostname'"
echo $update_sql
mysql -h${mysqlhost}  -P${mysqlport}  -u${mysqluser} -p${mysqlpassword} ${mysqldb} -e"${update_sql}"
exit

三、定时配置

1.确定安装mysql客户端,未安装则安装
定时获取系统监控数据
2.添加定时任务同步(每分钟获取一次)
定时获取系统监控数据

四、数据库查看

定时获取系统监控数据

相关标签: Record