【Zabbix 自定义监控全流程实战指南(附图文教程):从语法基础到内存传参、PHP-FPM 服务、Web 场景监控配置】

提示:本文原创作品,良心制作,干货为主,简洁清晰,一看就会

zabbix自定义监控


前言

这篇内容带大家快速上手 Zabbix 的基础用法

关于 Zabbix 的安装步骤或创建监控项,还不太清楚的小伙伴,可以查看这篇文章补充相关知识
https://blog.csdn.net/m0_63756214/article/details/156421867?spm=1001.2014.3001.5501

关于 Zabbix 创建触发器,动作,媒介及图形,还不太清楚的小伙伴,可以查看这篇文章补充相关知识https://blog.csdn.net/m0_63756214/article/details/156644688?spm=1001.2014.3001.5501

这里先介绍一下我的环境

IP地址 主机名 部署软件 节点作用及职责
192.168.136.134 zabbix-server 1. Zabbix Server;2. Zabbix Agent(自身监控代理);3. MySQL ;4. Apache 核心监控节点,负责接收各被监控节点上报的监控数据
192.168.136.135 zabbix-node1 1. Zabbix Agent;2. 被监控软件 被监控业务节点,通过Zabbix Agent采集本地系统资源,将采集到的监控数据实时上报至Zabbix Server
192.168.136.138 zabbix-node2 1. Zabbix Agent;2. 被监控软件 被监控业务节点,通过Zabbix Agent采集本地系统资源,将采集到的监控数据实时上报至Zabbix Server

前文我们使用的都是 Zabbix 自带监控参数,添加监控项时直接从键值列表选择即可;若所需参数不在列表中,或不想手动翻找,就可以通过自定义监控来配置专属键值

一、自定义监控语法

自定义监控的核心是在Zabbix Agent配置文件(zabbix_agentd.conf)中定义UserParameter,语法格式固定:

复制代码
UserParameter=<自定义键值>,<要执行的脚本/命令>
  • <自定义键值>:自定义监控项的唯一标识(如 custom.nginx.status),添加监控项时需填写这个键值
  • <要执行的脚本/命令>:可以是直接的Shell命令,也可以是脚本路径(如 /etc/zabbix/scripts/check_nginx.sh

Zabbix自定义监控项可针对业务专属指标(如服务状态、接口响应)配置监测,弥补默认监控不足,满足个性化运维需求,接下来我将举一些例子

二、监控内存--基础用法

这里以zabbix-node1为例,来监控该机器上的内存情况

bash 复制代码
#在zabbix-node1上操作
root@zabbix-node1:~# free
              total        used        free      shared  buff/cache   available
Mem:        4013244      230868     3100224        1476      682152     3529532
Swap:       4015100           0     4015100
root@zabbix-node1:~# free | awk '/^Mem/{print $2}'   #查看总内存
4013244
root@zabbix-node1:~# free | awk '/^Mem/{print $3}'   #查看已用内存
231232
root@zabbix-node1:~# free | awk '/^Mem/{print $NF}'   #查看可用内存,已用和可用内存都会变
3530116
root@zabbix-node1:~# ls /etc/zabbix/zabbix_agentd.d/    #当前目录下没有子配置文件
root@zabbix-node1:~# vim /etc/zabbix/zabbix_agentd.d/memory.conf   #在zabbix的子配置目录中写文件
UserParameter=memory.total,free | awk '/^Mem/{print $2}'
UserParameter=memory.used,free | awk '/^Mem/{print $3}'
UserParameter=memory.available,free | awk '/^Mem/{print $NF}'
root@zabbix-node1:~# systemctl restart zabbix-agent.service    #修改配置文件后需要重启zabbix-agent
bash 复制代码
#在zabbix-server中测试一下,看看能不能拿到数据
root@zabbix-server:~# zabbix_get -s 192.168.136.135 -k memory.total
4013244
root@zabbix-server:~# zabbix_get -s 192.168.136.135 -k memory.used
231480
root@zabbix-server:~# zabbix_get -s 192.168.136.135 -k memory.available
3522404

接下来我们就可以去zabbix界面上添加这三个自定义的监控项

添加监控项memory.total

添加监控项memory.used

添加监控项memory.available

添加好后的界面

去"最新数据"中可以看到,数据已经生成

感兴趣的小伙伴还可以为 memory.used 和 memory.available 配置触发器,具体方法在此不再赘述,本专栏第二篇文章已有详细讲解,大家可以去翻阅

三、监控内存--传参用法

接下来我讲一下传参用法

这种传参写法能复用单个监控项键值,无需为MemTotal、MemFree等每个内存指标单独定义UserParameter,大幅简化配置;这种方法可以作为了解

bash 复制代码
root@zabbix-node1:~# cat /proc/meminfo   #查看内存
MemTotal:        4013244 kB
MemFree:         3099400 kB
MemAvailable:    3528796 kB
Buffers:           58064 kB
Cached:           530776 kB
SwapCached:            0 kB
Active:           466096 kB
Inactive:         176852 kB
Active(anon):      54912 kB
Inactive(anon):      764 kB
......
root@zabbix-node1:~# vim /etc/zabbix/zabbix_agentd.d/upgrade.memory.conf 
UserParameter=memory.stats[*],cat /proc/meminfo | awk '/^$1/{print $$2}'
# $1:代表调用该监控项时传入的第一个参数(比如用 memory.stats[MemTotal],$1 就等于 MemTotal)
# $$2:awk 里的 $2 表示取一行的第 2 列,前面多一个 $ 是因为 Zabbix 配置文件里需要转义,否则会被 Zabbix 解析成自身变量
root@zabbix-node1:~# systemctl restart zabbix-agent.service 
bash 复制代码
#在zabbix-server中测试一下能否取到数据
root@zabbix-server:~# zabbix_get -s 192.168.136.135  -k memory.stats[MemTotal]
4013244
root@zabbix-server:~# zabbix_get -s 192.168.136.135  -k memory.stats[MemFree]
3100116
root@zabbix-server:~# zabbix_get -s 192.168.136.135  -k memory.stats[MemAvailable]
3529840

接下来去zabbix界面上配置监控项

新增监控项memory.stats[MemTotal],其他指标也是一样的配置方法,这里我就配置了三个指标

配置好后,去"最新数据"中可以看到已经产生了监控数据

四、监控php-fpm 服务的状态

bash 复制代码
root@zabbix-node1:~# apt -y install php-fpm  #下载php
root@zabbix-node1:~# vim /etc/php/7.2/fpm/pool.d/www.conf 
user = www-data   #nginx的所属用户
group = www-data   #nginx的所属组
pm.status_path = /php-fpm-status    #php-fpm 的状态监测页面 ,#打开注释并修改
ping.path = /ping      #ping 接口,存活状态是否ok   #打开注释
ping.response = pong    #响应内容pong  #打开注释
root@zabbix-node1:~# vim /etc/nginx/conf.d/php.conf
server {
listen 80 default_server;
        listen [::]:80 default_server;
        root /var/www/html;
        index index.html index.htm index.nginx-debian.html;
        server_name _;
        location / {
                try_files $uri $uri/ =404;
        }
        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
        location ~* /(php-fpm-status|ping) {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $fastcgi_script_name;
            include        fastcgi_params;

            access_log off;   #访问这个页面就不用记录日志了
       }
}
root@zabbix-node1:~# systemctl restart nginx
root@zabbix-node1:~# systemctl start php7.2-fpm.service 
root@zabbix-node1:~# curl 192.168.136.135/php-fpm-status   #访问
pool:                 www
process manager:      dynamic
start time:           07/Jan/2026:14:22:58 +0800
start since:          9
accepted conn:        1
listen queue:         0
max listen queue:     0
listen queue len:     128
idle processes:       1
active processes:     1
total processes:      2
max active processes: 1
max children reached: 0
slow requests:        0
root@zabbix-node1:~# cat /etc/zabbix/zabbix_agentd.d/php.conf 
UserParameter=php.stats[*],curl -s 192.168.136.135/php-fpm-status | awk '/^$1/{print $$NF}'
bash 复制代码
#在zabbix-server上测试,看能否取到数据
root@zabbix-server:~# zabbix_get -s 192.168.136.135  -k "php.stats[pool]"
www
root@zabbix-server:~# zabbix_get -s 192.168.136.135  -k "php.stats[accepted conn]"
9
root@zabbix-server:~# zabbix_get -s 192.168.136.135  -k "php.stats[listen queue len]"
128
root@zabbix-server:~# 

然后去zabbix的界面上添加监控项

添加php.stats[pool]的监控项,添加其他监控项操作类似

添加好后去"最新数据"中查看数据

五、Web场景监控

Zabbix Web 场景监控(也叫 Web 监控)是用于模拟用户访问行为、对 Web 应用的可用性和性能进行自动化检测的功能

它的核心原理是:预先配置一系列 HTTP 请求步骤(即一个 "场景"),Zabbix 会按照设定的频率自动执行这些步骤,同时收集每个步骤的响应时间、HTTP 状态码、内容匹配结果等关键数据

在上面实验中正好有两个页面,我就创建这两个页面的web监控


查看最新数据,web页面监控已产生监控数据


注:

文中若有疏漏,欢迎大家指正赐教。

本文为100%原创,转载请务必标注原创作者,尊重劳动成果。

求赞、求关注、求评论!你的支持是我更新的最大动力,评论区等你~

后续会持续分享关于zabbix的进阶知识~

相关推荐
成为你的宁宁20 分钟前
【Zabbix 自动发现全流程实战指南:从规则配置到动作触发(附大量图文教程,零基础快速上手)】
zabbix
成为你的宁宁2 小时前
【Zabbix 分布式监控实战指南(附图文教程):Server/Proxy/Agent 三者关系解析 + Proxy 部署、Agent 接入及取数路径验证】
分布式·zabbix
郑州光合科技余经理2 小时前
架构解析:同城本地生活服务o2o平台海外版
大数据·开发语言·前端·人工智能·架构·php·生活
智能修复2 小时前
502 Bad Gateway:互联网世界的“断桥”时刻
开发语言·php
源码师傅2 小时前
AI短剧创作系统源码 开发语言:PHP+MySQL 基于uniapp 无限SAAS多开源码
人工智能·php·短剧小程序开发·ai短剧创作系统源码·ai短剧创作系统·短剧原创制作软件
BingoGo3 小时前
PHP 8.5 #[\NoDiscard] 揪出"忽略返回值"的 Bug
后端·php
乐维_lwops14 小时前
Zabbix监控华为交换机教程
zabbix·交换机
星辰烈龙18 小时前
黑马程序员JavaSE基础加强d5
服务器·网络·php
No0d1es18 小时前
2025年12月 GESP CCF编程能力等级认证Python三级真题
开发语言·php
哥只是传说中的小白18 小时前
Nano Banana Pro高并发接入Grsai Api实战!0.09/张无限批量生成(附接入实战+开源工具)
开发语言·数据库·ai作画·开源·aigc·php·api