zabbix自定义监控php-fpm状态

  1. PHP-FPM工作模式通常与Nginx结合使用,修改php-fpm.conf,添加pm.status
[root@web-node1 ~]# vim /etc/php-fpm.d/www.conf 
...
pm.status_path = /phpfpm_status
  1. 修改nginx.conf的配置文件,通过Nginx访问PHP-FPM状态
server {
        listen 80;
        server_name localhost;
        root    /var/www/html;

        location / {
                root /var/www/html;
                index  index.php index.html;
        }
        location ~ \.php$ {
                root /var/www/html;
                fastcgi_pass    127.0.0.1:9000;
                fastcgi_index   index.php;
                fastcgi_param   SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
                include         fastcgi_params;
        }
        location ~ ^/(phpfpm_status)$ {
            include fastcgi_params;
            fastcgi_pass    127.0.0.1:9000;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }
}
  1. 访问测试phpfpm_status
    [外链图片转存失败(img-kOidyuip-1562418141526)(96AF034D68C1405BA52964835E29E4B8)]
pool #fpm池名称,大多数为www
process manager #进程管理方式dynamic或者static
start time #启动日志,如果reload了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,那说明你的最大进程数量过小,可以适当调整。
  1. 脚本获取php-fpm状态值,并给脚本添加可执行权限
#!/bin/bash
PHPFPM_COMMAND=$1
PHPFPM_PORT=80
start_since(){
    /usr/bin/curl -s "http://localhost:"$PHPFPM_PORT"/phpfpm_status" |awk '/^start since:/ {print $NF}'
}
accepted_conn(){
    /usr/bin/curl -s "http://localhost:"$PHPFPM_PORT"/phpfpm_status" |awk '/^accepted conn:/ {print $NF}'
}
listen_queue(){
    /usr/bin/curl -s "http://localhost:"$PHPFPM_PORT"/phpfpm_status" |awk '/^listen queue:/ {print $NF}'
}
max_listen_queue(){
    /usr/bin/curl -s "http://localhost:"$PHPFPM_PORT"/phpfpm_status" |awk '/^max listen queue:/ {print $NF}'
}
listen_queue_len(){
    /usr/bin/curl -s "http://localhost:"$PHPFPM_PORT"/phpfpm_status" |awk '/^listen queue len:/ {print $NF}'
}
idle_processes(){
    /usr/bin/curl -s "http://localhost:"$PHPFPM_PORT"/phpfpm_status" |awk '/^idle processes:/ {print $NF}'
}
active_processes(){
    /usr/bin/curl -s "http://localhost:"$PHPFPM_PORT"/phpfpm_status" |awk '/^active processes:/ {print $NF}'
}
total_processes(){
    /usr/bin/curl -s "http://localhost:"$PHPFPM_PORT"/phpfpm_status" |awk '/^total processes:/ {print $NF}'
}
max_active_processes(){
    /usr/bin/curl -s "http://localhost:"$PHPFPM_PORT"/phpfpm_status" |awk '/^max active processes:/ {print $NF}'
}
max_children_reached(){
    /usr/bin/curl -s "http://localhost:"$PHPFPM_PORT"/phpfpm_status" |awk '/^max children reached:/ {print $NF}'
}
slow_requests(){
    /usr/bin/curl -s "http://localhost:"$PHPFPM_PORT"/phpfpm_status" |awk '/^slow requests:/ {print $NF}'
}

case $PHPFPM_COMMAND in
    start_since)
            start_since;
            ;;
    accepted_conn)
            accepted_conn;
            ;;
    listen_queue)
            listen_queue;
            ;;
    max_listen_queue)
            max_listen_queue;
            ;;
    listen_queue_len)
            listen_queue_len;
            ;;
    idle_processes)
            idle_processes;
            ;;
    active_processes)
            active_processes;
            ;;
        total_processes)
                total_processes;
                ;;
        max_active_processes)
                max_active_processes;
                ;;
        max_children_reached)
                max_children_reached;
                ;;
        slow_requests)
                slow_requests;
                ;;
    *)
            echo $"USAGE:$0 {start_since|accepted_conn|listen_queue|max_listen_queue|listen_queue_len|idle_processes|active_processes|total_processes|max_active_processes|max_children_reached}"
esac
  1. 自定义获取php-fpm的key
vim /etc/zabbix/zabbix_agentd.d/phpfpm_status.conf
UserParameter=phpfpm_status[*],/usr/bin/sh /etc/zabbix/scripts/phpfpm_status.sh "$1"
systemctl restart zabbix-agent.service
  1. zabbix-server端测试获取key
[root@zabbix-server ~]# zabbix_get -s 192.168.1.12 -k phpfpm_status[total_processes]
5
[root@zabbix-server ~]# 
  1. zabbix的WEB界面创建phpfpm_status模板
    [外链图片转存失败(img-QGzw4ZBL-1562418141529)(1C2C8A13654244548D2ADEBA072EB444)]
  2. ab压测测试报警
[root@zabbix-server ~]# ab -n 100000 -c 1000 http://192.168.1.12/phpfpm_status

在这里插入图片描述
10.
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值