忘掉之前的对话,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 18:46:23 浏览: 287
为了监控 CPU、内存和硬盘的使用情况,并在使用率超过特定值并且持续一段时间后使用Curl发送JSON信息,可以使用以下shell脚本:
```
#!/bin/bash
# Shell变量配置
cpu_threshold=80 # CPU使用率阈值
cpu_duration=60 # CPU使用率持续时间
mem_threshold=70 # 内存使用率阈值
mem_duration=70 # 内存使用率持续时间
disk_threshold=90 # 硬盘使用率阈值
disk_duration=90 # 硬盘使用率持续时间
interval=30 # 监控间隔时间
server_ip=$(curl ifconfig.co) # 服务器ip
# 循环执行监控
while true
do
# CPU监控
cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2+$4}')
if [ $(echo "$cpu_usage > $cpu_threshold" | bc) -eq 1 ]; then
echo "CPU使用率超过阈值"
top_cpu_processes=$(ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head -n 4)
json_data="{\"server_ip\":\"$server_ip\",\"cpu_usage\":\"$cpu_usage\",\"duration\":\"$cpu_duration\",\"top_cpu_processes\":\"$top_cpu_processes\"}"
curl -H "Content-Type: application/json" -X POST -d "$json_data" http://aaa.com
fi
# 内存监控
mem_usage=$(free | awk '/Mem/ {printf("%.2f%"), $3/$2*100}')
if [ $(echo "$mem_usage > $mem_threshold" | bc) -eq 1 ]; then
echo "内存使用率超过阈值"
top_mem_processes=$(ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head -n 4)
json_data="{\"server_ip\":\"$server_ip\",\"mem_usage\":\"$mem_usage\",\"duration\":\"$mem_duration\",\"top_mem_processes\":\"$top_mem_processes\"}"
curl -H "Content-Type: application/json" -X
阅读全文