上个月, 买的阿里云ECS磁盘爆了。命令执行不了。操蛋。
其实服务器一般来说监控必不可少。 但是如果是自己的云服务器或者测试环境的。 就偷懒了。很不想搞。
于是就搞了一个shell脚本的。用来监控 CPU, 磁盘, 内存三个指标。功能简单。适合测试环境或者自己的服务器做简单的监控。
脚本做了钉钉推送。方便在线提醒。
脚本中也有写明使用方式。添加cron, 每分钟调度一次。一般来说够用了。
欢迎大家使用。如果好的话希望大家到github 给我点个赞 谢谢。
#!/bin/bash
##############################################
#
# Author: chang.ray
#
# Last modified: 2022-08-06
#
# 收集系统CPU, 磁盘, 内存指标信息, 到达阈值进行预警
#
# 食用方式:
# 1. 修改 钉钉回调地址
# 2. 上传脚本
# 3. chmod +x monitor.sh; 修改为可执行文件
# 4. 计划任务中加入以下指令, 每分钟扫描一次
# 5. crontab -e
# 6. cron: */1 * * * * /home/admin/backup/monitor.sh >/dev/null 2>&1
#
##############################################
# wehook url
Dingding_Url="https://oapi.dingtalk.com/robot/send?access_token=2fca*****3bf"
# 这里可以i指定钉钉消息昵称,将会进行@处理
user=phone_number
# 机器别名,通知时使用
machineName="Ali_8.131.241.140"
#获取cpu使用率
cpuIdea=`top -b -n 1 | head -5 | awk -F '[, ]+' 'NR==3 {print $8}'`
cpuIdea=$(printf "%.0f" $cpuIdea)
#获取磁盘使用率
data_name="/"
diskUsage=`df -h | grep -w $data_name | awk -F'[ %]+' '{print $5}'`
#获取内存情况
mem_total=`free -m | awk -F '[ :]+' 'NR==2 {print $2}'`
mem_used=`free -m | awk -F '[ :]+' 'NR==2 {print $3}'`
#统计内存使用率
mem_used_persent=`awk 'BEGIN{printf"%.0f\n",('$mem_used' / '$mem_total')*100}'`
#获取报警时间
now_time=`date '+%F %T'`
#主机信息
Date_time=`date "+%Y-%m-%d %H:%M:%S"`
IP_addr=`ifconfig $ifconfig | grep "inet" |awk 'NR==1{ print $2}'`
#发送钉钉消息
function SendDownMessageToDingding(){
curl -s "${Dingding_Url}" -H 'Content-Type: application/json' -d "
{
'msgtype': 'text',
'text': {
'content':
'ALIECS资源监控
资源耗尽预警!
机器别名:${machineName}
时间:${Date_time}
资源状况如下:
【空闲CPU:${cpuIdea}%】
【磁盘使用率:${diskUsage}%】
【内存使用率:${mem_used_persent}%】 \n'
},
'at': {'atMobiles': ['${user}'], 'isAtAll': true}
}"
}
echo $cpuIdea
echo $diskUsage
echo $mem_used_persent
# 此处定义阈值, 可以修改阈值
function check(){
if [[ "$cpuIdea" -le 30 ]] || [[ "$diskUsage" -ge 70 ]] || [[ "$mem_used_persent" -ge 70 ]];then
SendDownMessageToDingding
fi
}
check
推送效果如下:
求赞蟹蟹:有好的脚本也希望大家多多贡献。
https://github.com/MisterChangRay/scriptshttps://github.com/MisterChangRay/scripts