centos7写一个监控系统的shell,要求如下 cpu使用率超过80%(Shell变量单独配置)并且持续60秒钟(Shell变量单独配置)以上使用Curl post json方式调用http://...

``` #!/bin/bash

配置参数

cpu_threshold=80 cpu_duration=60 disk_threshold=90 disk_duration=90 memory_threshold=70 memory_duration=70 interval=10 ip="192.168.220.1" port="18181" path="/jeecg-boot/luodiye/sendMsg" url="http://$ip:$port$path"

监控函数

monitor() { local threshold=$1 local duration=$2 local resource=$3 local process=$4 local process_command="ps aux --sort=-%cpu | awk '{print $0" "NR}' | grep -v 'awk' | awk '$11>$threshold {print $0}' | head -3" local resource_command="awk '$1>$threshold {print $0}' /proc/stat | awk '{print $1}' | awk '{s+=$1} END {print s/4}'"

while :; do
    local count=0
    local process_name=''
    local process_path=''
    local resource_percent=0
    local resource_percent_duration=0
    while :; do
        # 获取当前资源使用率
        resource_percent=$(eval $resource_command)
        if [ $(echo "$resource_percent > $threshold" | bc) -eq 1 ]; then
            let count++
            resource_percent_duration=$count
            sleep 1
        else
            count=0
            resource_percent_duration=0
        fi
        # 获取当前占用资源最高的前3个进程
        process_name=$(eval $process_command | awk '{print $11}')
        process_path=$(eval $process_command | awk '{print $12}')
        # 超过阈值且持续时间超过设定值,发送请求
        if [ $count -ge $duration ]; then
            local data="{\"server_ip\":\"$(hostname -I)\",\"resource\":\"$resource\",\"resource_percent\":\"$resource_percent\",\"duration\":\"$resource_percent_duration\",\"process_name\":\"$process_name\",\"process_path\":\"$process_path\"}"
            curl -H "Content-Type: application/json" -X POST -d $data $url
            exit
        fi
    done
done

}

启动监控

monitor $cpu_threshold $cpu_duration "cpu" "ps aux --sort=-%cpu | awk '{print $0" "NR}' | grep -v 'awk' | awk '$11>$cpu_threshold {print $0}' | head -3" & monitor $disk_threshold $disk_duration "disk" "du -a / 2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值