提示:本文原创作品,良心制作,干货为主,简洁清晰,一看就会
zabbix自定义监控
- 前言
- 一、自定义监控语法
- 二、监控内存--基础用法
- 三、监控内存--传参用法
- [四、监控php-fpm 服务的状态](#四、监控php-fpm 服务的状态)
- 五、Web场景监控
前言
这篇内容带大家快速上手 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的进阶知识~