【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的进阶知识~

相关推荐
JaguarJack2 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo2 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
不做菜鸟的网工2 天前
Zabbix收集H3C交换机实时配置命令 「SNMP TRAP」
zabbix
肖祥3 天前
docker安装zabbix7.4
zabbix
JaguarJack3 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
郑州光合科技余经理3 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
QQ5110082853 天前
python+springboot+django/flask的校园资料分享系统
spring boot·python·django·flask·node.js·php
WeiXin_DZbishe3 天前
基于django在线音乐数据采集的设计与实现-计算机毕设 附源码 22647
javascript·spring boot·mysql·django·node.js·php·html5
longxiangam3 天前
Composer 私有仓库搭建
php·composer
shen121383 天前
【zabbix】自动发现监控项原型计算
zabbix