zabbix监控脚本02-进程使用的cpu率计算

发布时间 2023-05-30 14:57:10作者: shadown404

1 基础说明
(1)配合的监控工具 zabbix,被监控端操作系统版本信息
操作系统:CentOS Linux release 7.4.1708 (Core)
内核版本:3.10.0-693.el7.x86_64

(2)说明:此处的脚本直接使用的是linux下进程文件的数据做计算

(3)文件内容说明:/proc/stat,/proc/pid/stat

 

(4)脚本计算的是java进程每秒使用的cpu量占总cpu的多少,脚本名称可以命名为 java_cpu.sh

 1 #!/bin/bash
 2 
 3 R_MON="$1"
 4 
 5 vmrss_cpu_used() {
 6     R_PID=$(ps -fe | grep "${R_MON}" | grep -v "grep" | grep "jar" | awk -F" " '{print $2}')
 7     #总cpu量计算
 8     CPU_ALL1=$(head -1 /proc/stat | awk -F" " '{sum=0; sum=$2+$3+$4+$5+$6+$7+$8+$9+$10+$11; print sum}')
 9     #单个进程使用的cpu量计算
10     CPU_ONLY1=$(awk -F" " '{sum=0; sum=$14+$15+$16+$17; print sum}' /proc/${R_PID}/stat)
11     sleep 1
12     CPU_ALL2=$(head -1 /proc/stat | awk -F" " '{sum=0; sum=$2+$3+$4+$5+$6+$7+$8+$9+$10+$11; print sum}')
13     CPU_ONLY2=$(awk -F" " '{sum=0; sum=$14+$15+$16+$17; print sum}' /proc/${R_PID}/stat)
14 
15     CPU_ONLY_VALUE=$(( ${CPU_ONLY2} - ${CPU_ONLY1} ))
16     CPU_ALL_VALUE=$(( ${CPU_ALL2} - ${CPU_ALL1} ))
17 
18     #比率计算 %
19     VALUE=$(awk -v v1=${CPU_ONLY_VALUE} -v v2=${CPU_ALL_VALUE} -v v3=100 'BEGIN{printf "%.4f\n",(v1/v2)*v3}')
20     echo ${VALUE}
21     echo "$(date +%Y-%m-%d-%H-%M-%S) :: ${VALUE}" >> /usr/local/zabbix/scrip_log/java_cpu_used_${R_MON}.txt 2>&1
22 }
23 
24 case $R_MON in
25     程序名称1)
26         vmrss_cpu_used "$R_MON"
27         ;;
28     程序名称2)
29         vmrss_cpu_used "$R_MON"
30         ;;
31         *)
32         echo $"USAGE:$0 {VmRSS|}"
33 esac

 

2 脚本使用
(1)添加在zabbix里面

echo 'UserParameter=java_cpu_totals[*],/bin/bash /usr/local/zabbix/scrip/java_cpu.sh "$1"' >> /usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_java.conf