监控PHP-FPM

PHP-FPM监控原理

PHP-FPM程序提供了其运行状态的数据,通过修改配置文件即可获取数据。

PHP-FPM状态数据配置的开启

开启PHP-FPM状态数据配置,需要修改/etc/php-fpm.conf的配置

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

pm.status_path = /phpfpmstatus

重启php服务

systemctl restart php-fpm.service

修改/etc/nginx/nginx.conf配置文件

通过Nginx访问PHP-FPM的状态。

vim /etc/nginx/conf.d/monitor.conf

server {

listen 127.0.0.1:80;

server_name 127.0.01;

location /nginxstatus {

stub_status on;

access_log off;

allow 127.0.0.1;

deny all;

}

location ~ ^/ (phpfpmstatus)$ {

include fastcgi_params;

fastcgi_pass 127.0.0.1:9000;

fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;

}

}

PHP-FPM监控脚本的实现

1.PHP-FPM监控脚本1

vim /etc/zabbix/monitor_phpfpm_status.sh

#!/bin/bash

source /etc/bashrc >/dev/null 2>&1

source /etc/profile >/dev/null 2>&1

PHPFPM_FILE=/var/log/zabbix/phpfpmstatus.tmp

CMD () {

curl http://127.0.0.1/phpfpmstatus >${PHPFPM_FILE} 2>&1

}

if [ -e ${PHPFPM_FILE} ];then

TIMEFROM='stat -c %Y ${TMP_MYSQL_STATUS}'

TIMENOW='data +%s'

if [ 'expr $TIMENOW - $TIMEFROM' -gt 60 ];then

rm -f ${PHPFPM_FILE}

CMD

fi

else

CMD

fi

pool() {

awk '/pool/ {print $NF}' ${PHPFPM_FILE}

}

process_manager() {

awk '/process manager/ {print $NF}' ${PHPFPM_FILE}

}

start() {

awk '/^start since:/ {print $NF}' ${PHPFPM_FILE}

}

accepted_conn() {

awk '/^accepted conn:/ {print $NF}' ${PHPFPM_FILE}

}

listen_queue() {

awk '/^listen queue:/ {print $NF}' ${PHPFPM_FILE}

}

max_listen_queue() {

awk '/^max listen queue:/ {print $NF}' ${PHPFPM_FILE}

}

listen_queue_len() {

awk '/^listen queue len:/ {print $NF}' ${PHPFPM_FILE}

}

idle_processes() {

awk '/^idle processes:/ {print $NF}' ${PHPFPM_FILE}

}

active_processes() {

awk '/^active processes:/ {print $NF}' ${PHPFPM_FILE}

}

total_processes() {

awk '/^total processes:/ {print $NF}' ${PHPFPM_FILE}

}

max_active_processes() {

awk '/^max active processes:/ {print $NF}' ${PHPFPM_FILE}

}

max_children_reached() {

awk '/^max children reached:/ {print $NF}' ${PHPFPM_FILE}

}

case "$1" in

pool)

pool

;;

process_manager)

process_manager

;;

start_since)

start_since

;;

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

;;

*)

echo "Usage: $0 {pool|process_manager|start_since|max_listen_queue|listen_queue_len|idle_processes|active_processes|total_processes|max_active_processes|max_children_reached}"

esac

PHP-FPM监控脚本2

#!/bin/bash

PHPFPM_COMMAND=$1

PHPFPM_PORT=80

start_since(){

/usr/bin/curl -s "http://localhost:"$PHPFPM_PORT"/phpfpmstatus" |awk '/^start since:/ {print $NF}'

}

accepted_conn(){

/usr/bin/curl -s "http://localhost:"$PHPFPM_PORT"/phpfpmstatus" |awk '/^accepted conn:/ {print $NF}'

}

listen_queue(){

/usr/bin/curl -s "http://localhost:"$PHPFPM_PORT"/phpfpmstatus" |awk '/^listen queue:/ {print $NF}'

}

max_listen_queue(){

/usr/bin/curl -s "http://localhost:"$PHPFPM_PORT"/phpfpmstatus" |awk '/^max listen queue:/ {print $NF}'

}

listen_queue_len(){

/usr/bin/curl -s "http://localhost:"$PHPFPM_PORT"/phpfpmstatus" |awk '/^listen queue len:/ {print $NF}'

}

idle_processes(){

/usr/bin/curl -s "http://localhost:"$PHPFPM_PORT"/phpfpmstatus" |awk '/^idle processes:/ {print $NF}'

}

active_processes(){

/usr/bin/curl -s "http://localhost:"$PHPFPM_PORT"/phpfpmstatus" |awk '/^active processes:/ {print $NF}'

}

total_processes(){

/usr/bin/curl -s "http://localhost:"$PHPFPM_PORT"/phpfpmstatus" |awk '/^total processes:/ {print $NF}'

}

max_active_processes(){

/usr/bin/curl -s "http://localhost:"$PHPFPM_PORT"/phpfpmstatus" |awk '/^max active processes:/ {print $NF}'

}

max_children_reached(){

/usr/bin/curl -s "http://localhost:"$PHPFPM_PORT"/phpfpmstatus" |awk '/^max children reached:/ {print $NF}'

}

slow_requests(){

/usr/bin/curl -s "http://localhost:"$PHPFPM_PORT"/phpfpmstatus" |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

添加执行权限

cd /etc/zabbix/

chmod +x  monitor_phpfpm_status.sh

更改脚本的所有者和所属组

[root@localhost zabbix]# chown zabbix:zabbix monitor_phpfpm_status.sh

编辑zabbix_agentd.conf的配置文件

vim /etc/zabbix/zabbix_agentd.conf

UserParameter=php-fpm.status[*],/bin/bash /etc/zabbix/monitor_phpfpm_status.sh "$1"

重启zabbix-agent修改配置文件必须重启

编译安装客户端重启命令

systemctl restart zabbix_agentd

yum源安装客户端重启命令

systemctl restart  zabbix-agent.service

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,缓慢请求的数量

PHP-FPM监控key的配置

zabbix-server端测试获取key

zabbix_get -s 192.168.6.134 -k php-fpm.status[listen_queue_len]

最新数据

php fpm 测试,zabbix4.2 监控PHP-FPM运行状态的数据相关推荐

  1. 解决zabbix-4系列监控图形中文乱码问题

    解决zabbix-4系列监控图形中文乱码问题 参考文章: (1)解决zabbix-4系列监控图形中文乱码问题 (2)https://www.cnblogs.com/ywb123/p/12124409. ...

  2. php fpm 错误日志在哪,php fpm如何开启错误日志

    [摘要] PHP即"超文本预处理器",是一种通用开源脚本语言.PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言.PHP独特的语法混合了C.Java.Perl以及 ...

  3. 2022中国汽车测试及质量监控博览会

    尊敬的客户,您好! 2022中国汽车测试及质量监控博览会(Automotive Testing Expo China)将于9月5-7日在上海世博展览馆开展.本展会是中国规模最大的汽车及组件测试和验证技 ...

  4. 使用测试工具iPerf监控无线网络性能

    很多公司都在将自己的无线网络升级到802.11n,以实现更大的吞吐量.更广的覆盖范围和更高的可靠性,然而保证无线LAN(WLAN)的性能对于确保足够的网络容量和覆盖率尤为重要.下面,我们将探讨如何通过 ...

  5. CentOS7.0 搭建zabbix 5.0 实现监控华为交换机运行状态并实现邮件告警

    CentOS7.0 搭建zabbix 5.0 实现监控华为交换机运行状态并实现邮件告警 按照我的这个步骤来,小白都能配置zabbix! 前置操作 关闭防火墙和selinux 正式安装 配置yum源 安 ...

  6. JS怎样监控监控收集用户的行为数据

    这篇文章给大家分享的是JS怎样监控监控收集用户的行为数据.小编觉得挺实用的,因此分享给大家做个参考,文中的介绍得很详细,而要易于理解和学习,有需要的朋友可以参考,接下来就跟随小编一起了解看看吧. 引言 ...

  7. 用Semisynchronous Replication半同步,mk-table-checksum数据同步一致性检查,监控主从同步运行状态的脚本等方式加强SQL性能和数据审核...

    一,为A组在X单独另建一个MYSQL服务器(MYSQL B),A组平时更新的数据库为MYSQL B.待MYSQL B的数据审核准确无误后.发布给现在布置在X上的MYSQL服务器(MYSQL A).并进 ...

  8. linux系统正常的运行状态是,一种用于监控Linux系统运行状态的监控系统及方法...

    一种用于监控Linux系统运行状态的监控系统及方法 [技术领域] [0001]本发明涉及Linux系统,尤其涉及对Linux系统进行实时监控的系统及方法. [背景技术] [0002]通常服务器领域.通 ...

  9. 安科瑞:列头柜、监控系统、触摸屏的数据中心机房配电方案

    摘要 安科瑞精密配电系统是安科瑞针对数据中心集中监控要求提供的多回路监控装置,监控多回路电参量并可对各种故障进行告警.主要适用于各类列头柜.精密配电柜.电源分配柜.UPS输出柜等末端配电设备的监控.在 ...

最新文章

  1. pytorch中Schedule与warmup_steps的用法
  2. 三种方式实现自定义圆形进度条ProgressBar
  3. 23,148,855,308,184,500是一个神奇的数字,还是纯粹的机会?
  4. C/C++ 读取配置(config)文件 开源库(libconfig)
  5. java写界面_java能不能直接做界面窗口
  6. java编写教师类输出_Java类和对象的区别和联系,超简单易懂!
  7. setModel 的核心逻辑
  8. Xenix 操作系统的简史
  9. 电脑word在哪_Word论文里的公式怎么编辑?这4个小工具帮你一分钟搞定!
  10. MySQL学习【第十二篇事务中的锁与隔离级别】
  11. Cloud一分钟 | 谷歌关闭社交平台;亚马逊云服务拿下10亿美元订单,劲敌微软败走麦城...
  12. 结构损伤检测与智能诊断 陈长征_宿迁厂房安全检测多少钱介绍说明
  13. vant表单组件+iconfont组合使用 - 代码篇
  14. 【C语言】游戏管理系统简单设计
  15. tomcat启动过程报the JDBC Driver has been forcibly unregistered问题的修复的一种方法
  16. 为什么您的简历被拒绝-以及如何解决它
  17. 【BZOJ4027】【HEOI2015】兔子与樱花 贪心
  18. 电商设计的文字的选择与排版
  19. Android工作日志
  20. PTA(C++):L1-2 大笨钟(10分)[简单if判断]

热门文章

  1. SqlHelper数据库操作辅助类
  2. 点击弹出窗口外任意地方关闭弹出窗口
  3. Thinkphp 3.2.2 利用phpexcel完成excel导出功能
  4. Swift之深入分析字典的下标访问方法的源码调试和汇编实现
  5. LeetCode Algorithm 1566. 重复至少 K 次且长度为 M 的模式
  6. LeetCode Algorithm 203. 移除链表元素
  7. 【机器视觉】 Halcon批量加载图像
  8. 【Linux网络编程】网络协议入门
  9. 【Linux】一步一步学Linux——arpwatch命令(165)
  10. 【内核数据结构】 内核链表分析