1. 编辑客户端配置文件/etc/zabbix/zabbix_agentd.conf

    内容:

    UnsafeUserParameters=1


    # UserParameter=my.net.if[*], /usr/local/sbin/zabbix/net.sh $1 $2

    UserParameter=process.nginx.memory, /tmp/shell/processstatus.sh nginx

    UserParameter=process.nginx.cpu, /tmp/shell/processstatus.sh nginxcpu

    UserParameter=process.mysql.memory, /tmp/shell/processstatus.sh mysql

    UserParameter=process.mysql.cpu, /tmp/shell/processstatus.sh mysqlcpu


    zabbix自定义监控项_第1张图片


    说明:增加这一行,其中UserParameter用来自定义键值my.net.if,有参数时,需要加[*],没有参数则省略[*];逗号后面为脚本或命令路径,以及参数变量

    格式

             UserParameter=key[*],command

     key为唯一值,[*]表示参数。

     command为要执行的命令脚本key[*]里面的参数一一对应$1$9,一共9个参数。$0表示脚本命令。返回结果

                数据最大为512KB


2. 编辑脚本/tmp/shell/processstatus.sh,并授执行权限+x

    zabbix自定义监控项_第2张图片

    解释:

   VSZ     占用虚拟内存大小,KB

   RSS      占用真实内存大小,KB

   START  开始时间

   TIME   占用CPU时间

   ?         当前终端下 运行的命令

   STAT    状态

   S          sleep休眠中

   s           主进程或父进程

   <          优先级比较高

   N          优先级低

   +          前台运行的进程

   R           running正在运行的进程

   L           内存中被锁

   l            多线程

   Z           僵尸进程

   X           死掉的进程

   T          人为暂停的进程

   D         表示不能终端的进程,如I/O


    内容:   

#! /bin/bash
##
mysql() {
ps aux|grep 'mysqld' |grep -v "grep" |awk '{sum+=$6}; END{print sum}'
}

mysqlcpu() {
ps aux|grep 'mysqld' |grep -v "grep" |awk '{sum+=$3}; END{print sum}'
}

nginx() {
ps aux|grep 'nginx' |grep -v "grep" |awk '{sum+=$6}; END{print sum}'
}

nginxcpu() {
ps aux|grep 'nginx' |grep -v "grep" |awk '{sum+=$3}; END{print sum}'
}

case "$1" in
mysql)
mysql
;;
mysqlcpu)
mysqlcpu
;;
nginx)
nginx
;;
nginxcpu)
nginxcpu
;;
*)
echo "Usage:  $0 (mysql|mysqlcpu|nginx|nginxcpu)"
;;
esac


3. 重启客户端,并在服务端测试脚本是否生效

    /etc/init.d/zabbix-agent restart

    

    zabbix_get -s 172.16.115.162 -p10050 -k process.mysql.memory

 wKiom1jHvA6jGlV7AAALujEkg6o057.png



4. 服务端,web上依次添加监控项

 zabbix自定义监控项_第3张图片



5. 查看结果

 zabbix自定义监控项_第4张图片




zabbix自定义监控项_第5张图片