23 Zabbix 4.2 自定义Key 监控PHP 7.1.26

(在zabbix客户端上操作 web01 189.73)

启用php-fpm 状态功能

vim /usr/local/php/etc/php-fpm.d/www.conf

修改nginx 配置文件:

vim /usr/local/nginx/conf/nginx.conf

location ~ ^/(status|ping)$
{
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
}

重启nginx php-fpm

/usr/local/nginx/sbin/nginx -s reload

systemctl restart php-fpm

pool – fpm池子名称,大多数为www
process manager – 进程管理方式,值:static, dynamic or ondemand. dynamic
start time – 启动日期,如果reload了php-fpm,时间会更新
start since – 运行时长
accepted conn – 当前池子接受的请求数
listen queue – 请求等待队列,如果这个值不为0,那么要增加FPM的进程数量
max listen queue – 请求等待队列最高的数量
listen queue len – socket等待队列长度
idle processes – 空闲进程数量
active processes – 活跃进程数量
total processes – 总进程数量
max active processes – 最大的活跃进程数量(FPM启动开始算)
max children reached – 大道进程最大数量限制的次数,如果这个数量不为0,那说明你的最大进程数量太小了,请改大一点。
slow requests – 启用了php-fpm slow-log,缓慢请求的数量

一、编写监控脚本: (在zabbix客户端上操作 web01 189.73)

mkdir -p /usr/local/zabbix/script && cd /usr/local/zabbix/script

vim php-fpm_status.sh

#! /bin/bash
#date: 2019-05-09
# Description:zabbix监控php-fpm 7.1.26性能以及进程状态
# Note:此脚本需要配置在被监控端
HOST="127.0.0.1"
# 检测php-fpm进程是否存在
function ping {
/sbin/pidof php-fpm | wc -l
}
# 检测php-fpm性能
#start since – 运行时长
function active {
curl "http://$HOST/status" -s 2>/dev/null| awk '/^start since:/ {print $NF}'
}
#accepted conn – 当前池子接受的请求数
function accept_conn {
curl http://$HOST/status -s 2>/dev/null| awk '/^accepted conn:/ {print $NF}'
}
#listen queue – 请求等待队列,如果这个值不为0,那么要增加FPM的进程数量
function queue {
curl http://$HOST/status -s 2>/dev/null| awk '/^listen queue:/ {print $NF}'
}
#max listen queue – 请求等待队列最高的数量
function max_queue {
curl http://$HOST/status -s 2>/dev/null| awk '/^max listen queue:/ {print $NF}'
}
#listen queue len – socket等待队列长度
function queue_len {
curl http://$HOST/status -s | awk '/^listen queue len:/ {print $NF}'
}
#idle processes – 空闲进程数量
function idle_proc {
curl http://$HOST/status -s | awk '/^idle processes:/ {print $NF}'
}
#active processes – 活跃进程数量
function active_proc {
curl http://$HOST/status -s | awk '/^active processes:/ {print $NF}'
}
#total processes – 总进程数量
function total_proc {
curl http://$HOST/status -s | awk '/^total processes:/ {print $NF}'
}
#max active processes – 最大的活跃进程数量(FPM启动开始算)
function max_active_ps {
curl http://$HOST/status -s | awk '/^max active processes:/ {print $NF}'
}
#max children reached - 大道进程最大数量限制的次数,如果这个数量不为0,那说明你的最大进程数量太小了,请改大一点。
function max_children {
curl http://$HOST/status -s | awk '/^max children reached:/ {print $NF}'
}
#slow requests – 启用了php-fpm slow-log,缓慢请求的数量
function slow_request {
curl http://127.0.0.1/status -s | awk '/^slow requests:/ {print $NF}'
}
# 执行function
$1
++++++++++++++++++++++++++

chmod +x php-fpm_status.sh

三、修改zabbix客户端的配置文件: (在zabbix客户端上操作web01 189.73)

cd /usr/local/zabbix/etc/zabbix_agentd.conf.d

vim php_status.conf

保存,退出,重启zabbix客户端

pkill zabbix_agentd

zabbix_agentd

四、测试 (在zabbix服务器上操作)

五、在zabbix WEB页面添加php 监控模版,并添加监控项。

添加监控项:

添加其他的监控项:

为监控主机(web01 189.73),添加模版

查看数据:

为php 模版添加图形:

+++++++++++++++++++++++

创建触发器:(php-fpm 进程挂掉后,触发,动作,邮件报警)

由于先前创建的动作是应用是所有触发器的,所以这里可以不用再单独创建动作。也可以单独为php-fpm 触发,创建一个动作。

测试触发器:(web01 192.168.189.73)停止php-fpm

重新启动 (web01 192.168.189.73) php-fpm