定时获取系统监控数据

一、需求

获取本机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.添加定时任务同步(每分钟获取一次)
在这里插入图片描述

四、数据库查看

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值