当前位置: 首页 > news >正文

Zabbix监控进程报警(Zabbix Monitoring Process Alarm)

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

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=${#proc_array[@]}

  

printf "{\n"

printf '\t'"\"data\":["

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

do

    printf "\n\t\t{"

    printf "\"{#PROCESS_NAME}\":\"${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使用率:

图形效果图:

内存使用率:

内存使用大小:

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[["${#DISK[@]}" -gt "$num"&&"$num" -ne "$((${#DISK[@]}-1))"]];then

        printf"\t\t{\"{#RAID_ID}\":\"$key\"},\n"

        let"num++"

        elif[["$((${#DISK[@]}-1))" -eq "$num"]];then

        printf"\t\t{\"{#RAID_ID}\":\"$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的环境上运行的,低版本可能不兼容,只要理解了键值的意义自己可以自定义模板;

相关文章:

  • EG8200Mini导轨版
  • Android 11 DAC和MAC
  • LabVIEW伺服阀高频振动测试
  • babeltrace的使用
  • 解锁Android BroadcastReceiver:从原理到实战的深度剖析
  • uni-app开发的App和H5嵌套封装的App,以及原生App有什么区别
  • DINOv2:无监督学习强大的视觉特征
  • QQuick3D-Node的介绍
  • shell 脚本的编写学习
  • 对Docker的一些基本认识
  • C++蓝桥杯皮亚诺曲线距离求解
  • Ubuntu 24.04.2 安装 PostgreSQL 16 、PostGIS 3
  • 「string」笔记
  • 【每日学点HarmonyOS Next知识】swiper样式、日期选择、自定义弹窗键盘、文本组件换行、富文本适配
  • AI代理的高效助手:Composio工具集详解
  • 【HarmonyOS Next之旅】DevEco Studio使用指南(二)
  • 《第三选择》:撕掉“非黑即白”,解锁人生隐藏副本✨
  • C++STL的六大部件和联系
  • 刷题记录(LeetCode 78 子集)
  • 聚焦两会:科技与发展并进,赛逸展2025成创新新舞台
  • 淄博 网站制作/免费发seo外链平台
  • 手机网站设计案例/手机卡顿优化软件
  • 昆明哪些做网站建设的公司/自己有域名怎么建网站
  • 腾讯做的电子商务网站/移动端关键词排名优化
  • html5移动网站开发实例/怎么做好网络营销
  • 邯郸网站设计招聘网/官方百度app下载安装