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 08:45:45 浏览: 204
请注意,以下代码仅供参考,具体实现可能需要根据实际环境进行修改。
```
#!/bin/bash
# 设置监控阈值
cpu_threshold=80
mem_threshold=70
disk_threshold=90
# 设置持续时间
cpu_duration=60
mem_duration=70
disk_duration=90
# 设置监控间隔
interval=60
# 设置服务器IP
ip=`ifconfig | grep inet | grep -v inet6 | awk '{print $2}'`
# 设置监控URL
url="http://aaa.com"
# 开始监控
while true; do
# CPU监控
cpu_usage=`top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d '.' -f1`
if [ $cpu_usage -gt $cpu_threshold ]; then
cpu_start_time=`date +%s`
while [ $cpu_usage -gt $cpu_threshold ]; do
cpu_end_time=`date +%s`
if [ $(($cpu_end_time-$cpu_start_time)) -gt $cpu_duration ]; then
top_cpu=`top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d '.' -f1`
top_cpu_process=`top -bn1 | head -n 10 | awk '{print $1,$2,$12}'`
json_data="{\"ip\":\"$ip\",\"usage\":\"$top_cpu\",\"duration\":\"$(($cpu_end_time-$cpu_start_time))\",\"process\":\"$top_cpu_process\"}"
curl -H "Content-Type: application/json" -X POST -d $json_data $url
break
fi
sleep 1
cpu_usage=`top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d '.' -f1`
done
fi
# 内存监控
mem_usage=`free | awk '{print $3/$2*100}' | cut -d '.' -f1`
if [ $mem_usage -gt $mem_threshold ]; then
mem_start_time=`date +%s`
while [ $mem_usage -gt $mem_threshold ]; do
mem_end_time=`date +%s`
if [ $(($mem_end_time-$mem_start_time)) -gt $mem_duration ]; then
top_mem=`free | awk '{print $3/$2
阅读全文