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的环境上运行的,低版本可能不兼容,只要理解了键值的意义自己可以自定义模板;
相关文章:
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、创建监控项 名称&…...
p5.js:sound(音乐)可视化,动画显示音频高低变化
本文通过4个案例介绍了使用 p5.js 进行音乐可视化的实践,包括将音频振幅转化为图形、生成波形图。 承上一篇:vite:初学 p5.js demo 画圆圈 cd p5-demo copy .\node_modules\p5\lib\p5.min.js . copy .\node_modules\p5\lib\addons\p5.soun…...
HAL库常用函数
一、通用函数 系统初始化: HAL_Init(): 初始化HAL库和系统时钟(调用前需配置系统时钟源)。 HAL_Delay(uint32_t Delay): 毫秒级阻塞延时(基于SysTick定时器)。 HAL_GetTick(): 获取系统运行时间(毫秒计数…...
【Zinx】Day5-Part3:Zinx 的连接管理
目录 Day5-Part3:Zinx 的连接管理创建连接管理模块将连接管理模块集成到 Zinx 当中将 ConnManager 集成到 Server 当中在 Connection 的工厂函数中将连接添加到 ConnManagerServer 中连接数量的判断连接的删除 补充:连接的带缓冲发包方式补充:…...
C语言:6.20字符型数据练习题
编写程序,输人一行数字字符(用回车结束),每个数字字符 的前后都有空格。 把这一行中的数字转换成一个整数。 例如,若输入(<CR>代表 Enter键):2 4 8 3<CR>则输出 整数:2483。 #include <stdio.h>int main() {char ch;int number 0;printf("请输入一行…...
SpringBoot Test详解
目录 spring-boot-starter-test 1、概述2、常用注解 2.1、配置类型的注解2.2、Mock类型的注解2.3、自动配置类型的注解2.4、启动测试类型的注解2.5、相似注解的区别和联系 3、SpringBootTest和Junit的使用 3.1、单元测试3.2、集成测试 4、MockMvc 4.1、简单示例4.2、自动配置4…...
CDefView::_GetPIDL函数分析之ListView_GetItem函数的参数item的item.mask 为LVIF_PARAM
CDefView::_GetPIDL函数分析之ListView_GetItem函数的参数item的item.mask 为LVIF_PARAM 第一部分: 1: kd> t SHELL32!CDefView::_GetPIDL: 001b:77308013 55 push ebp 1: kd> dv this 0x00000015 i 0n21 …...
Android Retrofit 框架注解定义与解析模块深度剖析(一)
一、引言 在现代 Android 和 Java 开发中,网络请求是不可或缺的一部分。Retrofit 作为 Square 公司开源的一款强大的类型安全的 HTTP 客户端,凭借其简洁易用的 API 和高效的性能,在开发者社区中广受欢迎。Retrofit 的核心特性之一便是通过注…...
项目上传到Gitee过程
在gitee上新建一个仓库 点击“克隆/下载”获取仓库地址 电脑上要装好git 在电脑本地文件夹右键“Git Bash Here” 依次执行如下命令 git init git remote add origin https://gitee.com/qlexcel/stm32-simple.git git pull origin master git add . git commit -m ‘init’…...
DeepSeek R1在医学领域的应用与技术分析(Discuss V1版)
DeepSeek R1作为一款高性能、低成本的国产开源大模型,正在深刻重塑医学软件工程的开发逻辑与应用场景。其技术特性,如混合专家架构(MoE)和参数高效微调(PEFT),与医疗行业的实际需求紧密结合,推动医疗AI从“技术驱动”向“场景驱动”转型。以下从具体业务领域需求出发,…...
数学之快速幂-数的幂次
题目描述 给定三个正整数 N,M,P,求 输入描述 第 1 行为一个整数 T,表示测试数据数量。 接下来的 T 行每行包含三个正整数 N,M,P。 输出描述 输出共 T 行,每行包含一个整数,表示答案。 输入输出样例 示例 1 输入 3 2 3 7 4…...
git subtree管理的仓库怎么删除子仓库
要删除通过 git subtree 管理的子仓库,可以按照以下步骤操作: 1. 确认子仓库路径 首先确认要删除的子仓库的路径,假设子仓库路径为 <subtree-path>。 2. 从主仓库中移除子仓库目录 使用 git rm 命令删除子仓库的目录: …...
学习资料电子版 免费下载的网盘网站(非常全!)
我分享一个私人收藏的电子书免费下载的网盘网站(学习资料为主): link3.cc/sbook123 所有资料都保存在网盘了,直接转存即可,非常的便利! 包括了少儿,小学,初中,中职&am…...
SpringMVC-全局异常处理
文章目录 1. 全局异常处理2. 项目异常处理方案2.1 异常分类2.2 异常解决方案2.3 异常解决方案具体实现 1. 全局异常处理 问题:当我们在SpingMVC代码中没有对异常进行处理时,三层架构的默认处理异常方案是将异常抛给上级调用者。也就是说Mapper层报错会将…...
基于Spring Boot的宠物健康顾问系统的设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
【Linux内核系列】:深入理解缓冲区
🔥 本文专栏:Linux 🌸作者主页:努力努力再努力wz ★★★ 本文前置知识: 文件系统以及相关系统调用接口 输入以及输出重定向 那么在此前的学习中,我们了解了文件的概念以及相关的系统调用接口,并…...
Python开发Scikit-learn面试题及参考答案
目录 如何用 SimpleImputer 处理数据集中的缺失值? 使用 StandardScaler 对数据进行标准化的原理是什么?与 MinMaxScaler 有何区别? 如何用 OneHotEncoder 对类别型特征进行编码? 解释特征选择中 SelectKBest 与 VarianceThreshold 的应用场景。 如何通过 PolynomialFe…...
~(取反)在算法竞赛中的常见用法和注意事项
在算法竞赛中,取反符号 ~ 主要用于按位取反操作,其功能是对整数的二进制表示逐位取反(0 变 1,1 变 0)。以下是 ~ 在算法竞赛中的常见用法和注意事项: 1. 按位取反的基本用法 ~ 对整数的二进制表示进行取反…...
C++ MySQL 常用接口(基于 MySQL Connector/C++)
C MySQL 常用接口(基于 MySQL Connector/C) 1. 数据库连接 接口: sql::mysql::MySQL_Driver *driver; sql::Connection *con;作用: 用于创建 MySQL 连接对象。 示例: driver sql::mysql::get_mysql_driver_insta…...
本地部署 OpenManus 保姆级教程(Windows 版)
一、环境搭建 我的电脑是Windows 10版本,其他的没尝试,如果大家系统和我的不一致,请自行判断,基本上没什么大的出入啊。 openManus的Git地址:https://github.com/mannaandpoem/OpenManus 根据官网的两种安装推荐方式如…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
Admin.Net中的消息通信SignalR解释
定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...
通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
