当前位置: 首页 > 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的环境上运行的,低版本可能不兼容,只要理解了键值的意义自己可以自定义模板;

相关文章:

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

zabbix监控进程占cpu、内存、磁盘RAID情况 1、cpu达到90%时报警 名称: cpu user percent gt 90% 表达式&#xff1a;{Template OS Linux:system.cpu.util[,idle].avg(1m)}<10 2、内存达到80%时报警 配置—主机(选择监控主机)—监控项—创建监控项 1、创建监控项 名称&…...

p5.js:sound(音乐)可视化,动画显示音频高低变化

本文通过4个案例介绍了使用 p5.js 进行音乐可视化的实践&#xff0c;包括将音频振幅转化为图形、生成波形图。 承上一篇&#xff1a;vite&#xff1a;初学 p5.js demo 画圆圈 cd p5-demo copy .\node_modules\p5\lib\p5.min.js . copy .\node_modules\p5\lib\addons\p5.soun…...

HAL库常用函数

一、通用函数 系统初始化&#xff1a; HAL_Init(): 初始化HAL库和系统时钟&#xff08;调用前需配置系统时钟源&#xff09;。 HAL_Delay(uint32_t Delay): 毫秒级阻塞延时&#xff08;基于SysTick定时器&#xff09;。 HAL_GetTick(): 获取系统运行时间&#xff08;毫秒计数…...

【Zinx】Day5-Part3:Zinx 的连接管理

目录 Day5-Part3&#xff1a;Zinx 的连接管理创建连接管理模块将连接管理模块集成到 Zinx 当中将 ConnManager 集成到 Server 当中在 Connection 的工厂函数中将连接添加到 ConnManagerServer 中连接数量的判断连接的删除 补充&#xff1a;连接的带缓冲发包方式补充&#xff1a…...

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 第一部分&#xff1a; 1: kd> t SHELL32!CDefView::_GetPIDL: 001b:77308013 55 push ebp 1: kd> dv this 0x00000015 i 0n21 …...

Android Retrofit 框架注解定义与解析模块深度剖析(一)

一、引言 在现代 Android 和 Java 开发中&#xff0c;网络请求是不可或缺的一部分。Retrofit 作为 Square 公司开源的一款强大的类型安全的 HTTP 客户端&#xff0c;凭借其简洁易用的 API 和高效的性能&#xff0c;在开发者社区中广受欢迎。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&#xff0c;求 输入描述 第 1 行为一个整数 T&#xff0c;表示测试数据数量。 接下来的 T 行每行包含三个正整数 N,M,P。 输出描述 输出共 T 行&#xff0c;每行包含一个整数&#xff0c;表示答案。 输入输出样例 示例 1 输入 3 2 3 7 4…...

git subtree管理的仓库怎么删除子仓库

要删除通过 git subtree 管理的子仓库&#xff0c;可以按照以下步骤操作&#xff1a; 1. 确认子仓库路径 首先确认要删除的子仓库的路径&#xff0c;假设子仓库路径为 <subtree-path>。 2. 从主仓库中移除子仓库目录 使用 git rm 命令删除子仓库的目录&#xff1a; …...

学习资料电子版 免费下载的网盘网站(非常全!)

我分享一个私人收藏的电子书免费下载的网盘网站&#xff08;学习资料为主&#xff09;&#xff1a; link3.cc/sbook123 所有资料都保存在网盘了&#xff0c;直接转存即可&#xff0c;非常的便利&#xff01; 包括了少儿&#xff0c;小学&#xff0c;初中&#xff0c;中职&am…...

SpringMVC-全局异常处理

文章目录 1. 全局异常处理2. 项目异常处理方案2.1 异常分类2.2 异常解决方案2.3 异常解决方案具体实现 1. 全局异常处理 问题&#xff1a;当我们在SpingMVC代码中没有对异常进行处理时&#xff0c;三层架构的默认处理异常方案是将异常抛给上级调用者。也就是说Mapper层报错会将…...

基于Spring Boot的宠物健康顾问系统的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

【Linux内核系列】:深入理解缓冲区

&#x1f525; 本文专栏&#xff1a;Linux &#x1f338;作者主页&#xff1a;努力努力再努力wz ★★★ 本文前置知识&#xff1a; 文件系统以及相关系统调用接口 输入以及输出重定向 那么在此前的学习中&#xff0c;我们了解了文件的概念以及相关的系统调用接口&#xff0c;并…...

Python开发Scikit-learn面试题及参考答案

目录 如何用 SimpleImputer 处理数据集中的缺失值? 使用 StandardScaler 对数据进行标准化的原理是什么?与 MinMaxScaler 有何区别? 如何用 OneHotEncoder 对类别型特征进行编码? 解释特征选择中 SelectKBest 与 VarianceThreshold 的应用场景。 如何通过 PolynomialFe…...

~(取反)在算法竞赛中的常见用法和注意事项

在算法竞赛中&#xff0c;取反符号 ~ 主要用于按位取反操作&#xff0c;其功能是对整数的二进制表示逐位取反&#xff08;0 变 1&#xff0c;1 变 0&#xff09;。以下是 ~ 在算法竞赛中的常见用法和注意事项&#xff1a; 1. 按位取反的基本用法 ~ 对整数的二进制表示进行取反…...

C++ MySQL 常用接口(基于 MySQL Connector/C++)

C MySQL 常用接口&#xff08;基于 MySQL Connector/C&#xff09; 1. 数据库连接 接口&#xff1a; sql::mysql::MySQL_Driver *driver; sql::Connection *con;作用&#xff1a; 用于创建 MySQL 连接对象。 示例&#xff1a; driver sql::mysql::get_mysql_driver_insta…...

本地部署 OpenManus 保姆级教程(Windows 版)

一、环境搭建 我的电脑是Windows 10版本&#xff0c;其他的没尝试&#xff0c;如果大家系统和我的不一致&#xff0c;请自行判断&#xff0c;基本上没什么大的出入啊。 openManus的Git地址&#xff1a;https://github.com/mannaandpoem/OpenManus 根据官网的两种安装推荐方式如…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域&#xff0c;REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名&#xff0c;不断适应这些现代范式的需求。随着不断发展的生态系统&#xff0c;Java 在现代 API 方…...

客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践

01技术背景与业务挑战 某短视频点播企业深耕国内用户市场&#xff0c;但其后台应用系统部署于东南亚印尼 IDC 机房。 随着业务规模扩大&#xff0c;传统架构已较难满足当前企业发展的需求&#xff0c;企业面临着三重挑战&#xff1a; ① 业务&#xff1a;国内用户访问海外服…...

Python学习(8) ----- Python的类与对象

Python 中的类&#xff08;Class&#xff09;与对象&#xff08;Object&#xff09;是面向对象编程&#xff08;OOP&#xff09;的核心。我们可以通过“类是模板&#xff0c;对象是实例”来理解它们的关系。 &#x1f9f1; 一句话理解&#xff1a; 类就像“图纸”&#xff0c;对…...