• php-fpm自定义zabbix监控


    自定义php-fpm zabbix监控模板
    根据以上实验
    在设备1、设备2基础上
    设备1 192.168.70.10 zabbix-server
    设备2 192.168.70.20 zabbix-agent

    设备2:
    安装php-rpm服务

    [root@host-20]# yum -y install php-fpm
    
    • 1

    修改php-fpm配置文件开启状态页面功能(搜索:status)

    [root@host-20]# vim /etc/php-fpm.d/www.conf
    pm.status_path = /php_status  #取消注释并改名php_status
    
    
    • 1
    • 2
    • 3

    启动php-fpm

    [root@host-20]# systemctl start php-fpm 
    
    • 1

    设置开机自启

    [root@host-20]#systemctl enable php-fpm
    
    • 1

    修改nginx配置文件指定php配置 (Ctrl+v 下滑 出现可视块 取消注释)

    [root@host-20]#vim /etc/nginx/conf.d/default.conf
    ……
    location /php_status {      #指定php页面 名称 
           root                 html;
           fastcgi_pass   127.0.0.1:9000;
           fastcgi_index     index.php;
           fastcgi_param    SCRIPT_FILENAME   /scripts$fastcgi_script_name; #配置环境
           include fastcgi_params;
      }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    重启nginx

    [root@host-20]#systemctl restart nginx
    
    • 1

    测试访问php状态页面:http://192.168.70.20/php_status
    在这里插入图片描述

    php-fpm status状态值详解 
    pool:fpm池子名称,大多数为www 
    process manager:进程管理方式,值:static,dynamic or ondemand 
    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功能时,如 果出现php-fpm慢请求这个计数器会增加,一般不当的Mysql查 询会触发这个值
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    自定义phpfpm监控项 (监控以上状态)

    [root@host-20 script]# vim/etc/zabbix/zabbix_agentd.d/phpfpm_status.conf UserParameter=phpfpm_status[*],/bin/bash /etc/zabbix/script/phpfpm_status.sh "$1"
    
    • 1

    上传脚本到/etc/zabbix/script路径并添加执行权限

    [root@host-20 script]#/etc/zabbix/script
    [root@host-20 script]#ls
    phpfpm_status.sh
    [root@host-20 script]# cat phpfpm_status.sh
    #!/bin/bash
    
    PHPFPM_COMMAND=$1
    #根据监听不同端口进行调整
    PHPFPM_PORT=80
     
    start_since(){
        /usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^start since:/ {print $NF}'
    }
    accepted_conn(){
        /usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^accepted conn:/ {print $NF}'
    }
    listen_queue(){
        /usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^listen queue:/ {print $NF}'
    }
    max_listen_queue(){
        /usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^max listen queue:/ {print $NF}'
    }
    listen_queue_len(){
        /usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^listen queue len:/ {print $NF}'
    }
    idle_processes(){
        /usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^idle processes:/ {print $NF}'
    }
    active_processes(){
        /usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^active processes:/ {print $NF}'
    }
    total_processes(){
        /usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^total processes:/ {print $NF}'
    }
    max_active_processes(){
        /usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^max active processes:/ {print $NF}'
    }
    max_children_reached(){
        /usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^max children reached:/ {print $NF}'
    }
    slow_requests(){
        /usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80

    脚本授权

    [root@host-20 script]# chmod +x phpfpm_status.sh
    
    • 1

    重启zabbix agent服务监控项生效

    [root@host-20 script]# systemctl restart zabbix-agent
    
    • 1

    开启php-rpm

    [root@host-20 script]# systemctl restart php-fpm
    
    • 1

    查看服务端都

    [root@host-20 script]# netstat  -ntlp
    
    • 1

    设备1

    解析

    [root@zabbix-server]#vim /etc/hosts
    192.168.70.20   host-20
    
    • 1
    • 2

    zabbix server获取监控项数据

    [root@zabbix-server]#zabbix_get -s 192.168.0.111 -k phpfpm_status[start_since] #php-fpm运行时 长
    [root@zabbix-server]#zabbix_get -s 192.168.0.111 -k phpfpm_status[accepted_conn] #当前接收的连接数 
    [root@zabbix-server]#zabbix_get -s 192.168.0.111 -k phpfpm_status[listen_queue] #等待连接的请求数
    [root@zabbix-server]# zabbix_get -s 192.168.0.111 -k phpfpm_status[max_listen_queue] #请求等待队列最高 的数量 
     [root@zabbix-server]#zabbix_get -s 192.168.0.111 -k phpfpm_status[listen_queue_len] #socket等待队列 长度
     [root@zabbix-server]#zabbix_get -s 192.168.0.111 -k phpfpm_status[idle_processes] #空闲进程数量 `在这里插入代码片`
     [root@zabbix-server]#zabbix_get -s 192.168.0.111 -k phpfpm_status[active_processes] #活跃进程数量 
     [root@zabbix-server]#zabbix_get -s 192.168.0.111 -k phpfpm_status[total_processes] #总进程数量 
     [root@zabbix-server]#zabbix_get -s 192.168.0.111 -k phpfpm_status[max_active_processes] #最大的活跃 进程数量 
     [root@zabbix-server]#zabbix_get -s 192.168.0.111 -k phpfpm_status[max_children_reached] #进程最大数 量限制的次数 
     [root@zabbix-server]#zabbix_get -s 192.168.0.111 -k phpfpm_status[slow_requests] #php-fpm慢 请求
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    配置 ——>模板——>创建模板
    在这里插入图片描述
    新创建模板内——>创建 应用集
    在这里插入图片描述
    在这里插入图片描述
    在新模板——>创建 监控项
    在这里插入图片描述
    监控项名称:php-fpm运行时长
    类型:客户端
    键值:phpfpm_status[start_since](选择脚本里面的名称)
    消息类型:数字(无正负) (涉及小数的为 浮点数)
    更新间隔:1m (表示1分钟)
    历史数据保留时长:7d(7天)
    趋势存储时间:365d(365天)
    应用集:PHP (我们新建的)

    添加
    在这里插入图片描述
    脚本里面的其它数据依次添加

    添加完成
    在这里插入图片描述
    完成

  • 相关阅读:
    使用mac自带VNC公网远程控制macOS
    美格智能NB-IoT模组通过三个1000小时可靠性测试,并中标中国电信项目招标
    Autosar基本概念详细介绍
    RabbitMQ消息队列快速入门
    JS 如何实现继承
    WMS仓储管理系统:从集成到面向未来的策略
    内网学习笔记(8)
    难的不是今年,自学软件测试1个半月,上岸拿5个offer
    (76)MIPI DSI LLP介绍(十六)
    Java锁对象
  • 原文地址:https://blog.csdn.net/weixin_45861372/article/details/125898562