1. 首页
  2. zabbix
  3. zabbix监控进程占cpu、内存、磁盘RAID情况

zabbix监控进程占cpu、内存、磁盘RAID情况

  • 发布于 2024-12-16
  • 12 次阅读

点击蓝字 关注我们

1、cpu达到90%时报警

名称: cpu user percent gt 90%

表达式:{Template OS Linux:system.cpu.util[,idle].avg(1m)}<10

2、内存达到80%时报警

配置—主机(选择监控主机)—监控项—创建监控项

1、创建监控项

名称:内存使用率

类型:可计算的

键值:vm.memory.size[usedpercent]

公式:

100*(last(“vm.memory.size[total]“)-last(“vm.memory.size[available]“))/last(“vm.memory.size[total]“)

信息类型:数字(无正负)

更新间隔:5s

2、创建触发器

配置—主机(选择监控主机)—触发器—创建触发器

名称: Memory used percent more than 80%

表达式: {192.168.88.16:vm.memory.size[usedpercent].avg(1,60)}>80

3、创建图形

3、内存达到80%时报警

1、增加硬盘使用量的监控项

名称:监控/磁盘空间

键值:vfs.fs.size[/,pfree]

2、增加硬盘使用量的触发器

名称: 空闲硬盘大小 小于20%

表达式:{192.168.88.16:vfs.fs.size[/,pfree].last(0)}<20

4、监控进程占cpu、内存情况

mkdir -p /usr/local/zabbix/scripts

cd /usr/local/zabbix/scripts

vi top.sh

!/bin/sh

top -b -n 1 -d 1 > /tmp/top.txt

chmod +x top.sh

./top.sh

chown zabbix /tmp/top.txt

crontab -e

*/1 * * * * /usr/local/zabbix/scripts/top.sh > /dev/null 2>\&1

vi discovery_process.sh

!/bin/bash

获取占用高的10个进程

system process discovery script

proc_array=(`tail -n +8 /tmp/top.txt \| awk '{a[$NF]+=$10}END{for(k in a)print a[k],k}'\|sort -gr\|head -10\|cut -d” " -f2`)

length=$

printf “{\n”

printf '\t'“\“data\“:[”

for ((i=0;i<$length;i++))

do

printf “\n\t\t{”

printf “\“\“:\“${proc_array[$i]}\“}”

if [ $i -lt $[$length-1] ];then

printf “,”

fi

done

printf “\n\t]\n”

printf “}\n”

chmod +x discovery_process.sh

测试获取的10个进程名

./discovery_process.sh    json格式

vi process_check.sh

!/bin/bash

system process CPU\&MEM use information

mode=$1

name=$2

process=$3

mem_total=$(cat /proc/meminfo \| grep “MemTotal” \| awk '{printf “%.f”,$2/1024}')

cpu_total=$(( $(cat /proc/cpuinfo \| grep “processor” \| wc -l) * 100 ))

function mempre {

mem_pre=`tail -n +7 /tmp/top.txt \| awk '{a[$NF]+=$10}END{for(k in a)print a[k],k}' \| grep “\b${process}\b” \| cut -d” " -f1`

echo “$mem_pre”

}

function memuse {

mem_use=`tail -n +7 /tmp/top.txt \| awk '{a[$NF]+=$10}END{for(k in a)print a[k]/100*'''${mem_total}''',k}' \| grep “\b${process}\b” \| cut -d” " -f1`

echo “$mem_use” \| awk '{printf “%.f”,$1*1024*1024}'

}

function cpuuse {

cpu_use=`tail -n +7 /tmp/top.txt \| awk '{a[$NF]+=$9}END{for(k in a)print a[k],k}' \| grep “\b${process}\b” \| cut -d” " -f1`

echo “$cpu_use”

}

function cpupre {

cpu_pre=`tail -n +7 /tmp/top.txt\|awk '{a[$NF]+=$9}END{for(k in a)print a[k],k}'\|grep “${process}“\|cut -d” " -f1`

if [ “$cpu_pre” = “” ]

then

echo “0.0”

else

echo “$cpu_pre.0”

fi

}

case $name in

mem)

if [ “$mode” = “pre” ];then

mempre

elif [ “$mode” = “avg” ];then

memuse

fi

;;

cpu)

if [ “$mode” = “pre” ];then

cpupre

elif [ “$mode” = “avg” ];then

cpuuse

fi

;;

*)

echo -e “Usage: $0 [mode : pre\|avg] [mem\|cpu] [process]”

esac

chmod +x process_check.sh

zabbix agentd配置收集数据:

cat zabbix_agentd.conf

monitor process

UserParameter=discovery.process,/usr/local/zabbix/scripts/discovery_process.sh

UserParameter=process.check[*],/usr/local/zabbix/scripts/process_check.sh $1 $2 $3

systemctl restart zabbix_agentd

在web界面导入模板:discovery-cpu\&memory.xml

在主机添加整合图形:

内存使用率:

内存使用大小:

cpu使用率:

图形效果图:

内存使用率:

内存使用大小:

cpu使用率:

5、监控磁盘RAID的discover模板

通常,我们对硬盘当前的状态不太好确定,一般通过机房人员巡检来完成,有没有通过软件的方式来检查确定这个问题呢。MegaCli就可以做到,一般通过 MegaCli 的"Media Error Count"和"Other Error Count"这两个数值来确定阵列中磁盘是否有问题。

Medai Error Count 表示磁盘可能错误,可能是磁盘有坏道,这个值不为0值得注意,数值越大,危险系数越高;

Other Error Count 表示磁盘可能存在松动,可能需要重新再插入;

发现脚本:

!/bin/bash

raid_id_discover.sh

wuhf

num=0

RAID_stats(){

DISK=($(sudo /usr/local/MegaCli/MegaCli64 -pdlist -aALL \|grep"Slot Number”\|awk -F”:“'{print $2}'))

printf'{\n\t"data”:[\n'

for key in${DISK[@]};do

if[[“$” -gt “$num”\&\&“$num” -ne “$(($-1))“]];then

printf”\t\t{\“\“:\“$key\“},\n”

let"num++”

elif[[“$(($-1))” -eq “$num”]];then

printf”\t\t{\“\“:\“$key\“}\n”

fi

done

printf'\t]\n}\n'

}

RAID_stats

键值设置:

raid.conf

UserParameter=raid_discover,bash /usr/local/zabbix/libexec/raid_id_discover.sh

UserParameter=raid_degraded,sudo /usr/local/MegaCli/MegaCli64 -AdpAllInfo -aALL -NoLog \|grep"Degraded”\|awk'{print $NF}'

UserParameter=raid_failed_disks,sudo /usr/local/MegaCli/MegaCli64 -AdpAllInfo -aALL -NoLog \|grep"Failed Disks”\|awk'{print $NF}'

UserParameter=raid_MEC[*],sudo /usr/local/MegaCli/MegaCli64 -PDList -aAll -NoLog \|grep -A 8 “Slot Number: $1”\|grep"Media Error Count”\|awk'{print $NF}'

UserParameter=raid_OEC[*],sudo /usr/local/MegaCli/MegaCli64 -PDList -aAll -NoLog \|grep -A 8 “Slot Number: $1”\|grep"Other Error Count”\|awk'{print $NF}'

权限设置:

chmod 755 /usr/local/zabbix/libexec/raid_id_discover.sh

chown zabbix.zabbix /usr/local/zabbix/libexec/raid_id_discover.sh

chown zabbix.zabbix /usr/local/zabbix/etc/zabbix_agentd.conf.d/raid.conf

echo"zabbix ALL=(root) NOPASSWD:ALL”>> /etc/sudoers

sed -i 's/^Defaults.*.requiretty/#Defaults requiretty/' /etc/sudoers

模板导入:

说明:

要理解模板首先要了解MegaCLI命令的详情,这个百度教程有很多;我提供的模板是在zabbix-3.0的环境上运行的,低版本可能不兼容,只要理解了键值的意义自己可以自定义模板;
以上,既然看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧,如果想第一时间收到推送,也可以给我个星标⭐~谢谢你看我的文章,我们,下次再见

原文链接: https://mp.weixin.qq.com/s/Yerr4Rn8KSWTSA3WL2EIKw