centos7写一个监控系统的shell,要求如下 cpu使用率超过80%(Shell变量单独配置)并且持续60秒钟(Shell变量单独配置)以上使用Curl post json方式调用http://aaa.com接口,传入以下JSON信息 服务器ip(Shell变量单独配置)+当前CPU使用率+持续时间+CPU占用率最高的前3个进程名字以及文件路径 内存使用率超过70%(Shell变量单独配置)并且持续70秒钟(Shell变量单独配置)以上使用Curl post json方式调用http://aaa.com接口,传入以下JSON信息 服务器ip(Shell变量单独配置)+当前内存使用率+持续时间+内存占用率最高的前3个进程名字以及文件路径 硬盘使用率超过90%(Shell变量单独配置)并且持续90秒钟(Shell变量单独配置)以上使用Curl post json方式调用http://aaa.com接口,传入以下JSON信息 服务器ip(Shell变量单独配置)+当前硬盘使用率+持续时间+磁盘占用最大的3个文件以及大小(以KB、GB、TB等为单位,精确到1位小数)和文件路径 脚本持续监控,每隔N秒(Shell变量单独配置)执行一次,要求直接给出最完美的shell代码,一次性说完,无需任何解释
时间: 2023-02-09 19:45:43 浏览: 121
```
#!/bin/bash
# 设置变量
cpu_usage=80
cpu_duration=60
mem_usage=70
mem_duration=70
disk_usage=90
disk_duration=90
interval=60
server_ip=`curl -s http://checkip.dyndns.org | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'`
# 监控循环
while true; do
# 检查 CPU 使用率
cpu_load=`top -bn1 | grep "Cpu(s)" | awk '{print $2+$4}'`
if [[ $(echo "$cpu_load > $cpu_usage" | bc) -eq 1 ]]; then
cpu_duration_count=$((cpu_duration_count+1))
if [[ $cpu_duration_count -ge $cpu_duration ]]; then
cpu_top_3=`ps aux --sort=-%cpu | head -n 4`
data="{\"server_ip\":\"$server_ip\",\"usage\":\"$cpu_load\",\"duration\":\"$cpu_duration\",\"top_3\":\"$cpu_top_3\"}"
curl -H "Content-Type: application/json" -X POST -d "$data" http://aaa.com
cpu_duration_count=0
fi
else
cpu_duration_count=0
fi
# 检查内存使用率
mem_load=`free | grep Mem | awk '{print $3/$2 * 100.0}'`
if [[ $(echo "$mem_load > $mem_usage" | bc) -eq 1 ]]; then
mem_duration_count=$((mem_duration_count+1))
if [[ $mem_duration_count -ge $mem_duration ]]; then
mem_top_3=`ps aux --sort=-%mem | head -n 4`
data="{\"server_ip\":\"$server_ip\",\"usage\":\"$mem_load\",\"duration\":\"$mem_duration\",\"top_3\":\"$mem_top_3\"}"
curl -H "Content-Type: application/json" -X POST -d "$data" http://aaa.com
mem_duration_count=0
fi
else
mem_duration_count=0
fi
# 检查磁盘使用率
disk_load=`df -h | awk '$NF=="/"{printf "%s\t", $5}'`
disk_load=${disk_load::-1}
if [[ $(echo "$disk_load > $disk_usage" | bc) -eq 1 ]]; then
disk_duration_count=$((disk_duration_count+1))
if [[ $disk_duration_count -ge $disk_duration ]]; then
disk_top_3=`du -h --max-depth=1 / | sort -hr | head -
阅读全文