首页 > 编程语言 >php-status监控流程

php-status监控流程

时间:2024-06-08 18:22:04浏览次数:9  
标签:status processes 流程 cachefile zabbix php listen

1.开启php的状态页功能

#基于php-fpm进程做的实验

yum install php-fpm -y

修改配置文件,开启php,status功能即可,打开如下参数即可
要求你访问php状态页面的入口就是/status_php

[root@web-7 ~]#grep 'status_'  /etc/php-fpm.d/www.conf 
pm.status_path = /status_php

php-fpm,nginx转发过去的
  1. 设置nginx转发
[root@web-7 /etc/nginx/conf.d]#cat status.conf 
server{

listen 80;
server_name localhost;
location /nginx_status {
stub_status on;
access_log off;
}


location /php_status {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME html$fastcgi_script_name;
    include fastcgi_params;

}


}

重启nginx,和php-fpm俩进程

[root@web-7 ~]#systemctl restart php-fpm.service nginx.service 

访问测试php_status

字段解释

[root@web-7 /etc/nginx/conf.d]#curl 127.0.0.1/php_status
pool:                 www
process manager:      dynamic
start time:           04/Jul/2022:17:27:43 +0800
start since:          158
accepted conn:        2
listen queue:         0
max listen queue:     0
listen queue len:     128
idle processes:       4
active processes:     1
total processes:      5
max active processes: 1
max children reached: 0
slow requests:        0
[root@web-7 /etc/nginx/conf.d]#


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

自定义的key php_status[采集的关键字]

UserParameter=php_status[*],/etc/zabbix/zabbix_agentd.d/php_status.sh  $1

写脚本简单的监控php-fpm状态值的脚本

#!/bin/bash
# 这是一个简单的监控php-fpm状态值的脚本

comm_para=$1
PHP_URL=$2
cmd="/usr/bin/curl $url"
cachefile=/tmp/php_status.txt
port=80

file_time=`stat -c %Y $cachefile`
now_time=`date +%s`
rm_file=$(($now_time-$file_time))
if [ -z $2 ];then
    url=http://127.0.0.1:$port/status_php
else
    url=$PHP_URL
fi
cmd="/usr/bin/curl $url"

if [ ! -e $cachefile ];then
    $cmd > $cachefile 2>/dev/null
fi

if [ $rm_file -gt 60 ];then
    rm -rf $cachefile
fi

if [ ! -f $cachefile ];then
    $cmd > $cachefile 2>/dev/null
fi

start_since() {
    #运行时长
    cat $cachefile | awk '/since/{print $3}'
    exit 0;
}

accepted_conn() {
    cat $cachefile | awk '/accepted/{print $3}'
    exit 0;
}

listen_queue(){ 
        cat $cachefile | awk '{if(NR==6){print $3}}'
    exit 0;
}

max_listen_queue(){
    cat $cachefile | awk '{if(NR==7){print $4}}'
    exit 0;
}

listen_queue_len() {
    cat $cachefile | awk '{if(NR==8){print $4}}'
    exit 0;
}

idle_processes() {
    cat $cachefile | awk '/idle/{print $3}'
    exit 0;
}

active_processes() {
    cat $cachefile | awk '{if(NR==10){print $3}}'
    exit 0;
}

total_processes() {
    cat $cachefile | awk '{if(NR==11){print $3}}'
        exit 0;
}

max_active_processes() {
    cat $cachefile | awk '{if(NR==12){print $4}}'
        exit 0;
}

max_children_reached() {
    cat $cachefile | awk '{if(NR==13){print $4}}'
        exit 0;
}

slow_requests() {
    cat $cachefile | awk '{if(NR==14){print $3}}'
        exit 0;
}

check() {
        php_pro_count=`ss -tunlp|grep php-fpm|wc -l`
        echo $php_pro_count
}

case "$comm_para" 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
    ;;
check)
    check
    ;;
*)    
    echo "invalid status"
    exit 2;
esac

改权限

[root@web-7 /etc/zabbix/zabbix_agentd.d]#chmod +x php_status.sh 
[root@web-7 /etc/zabbix/zabbix_agentd.d]#chown -R zabbix.zabbix ./*
[root@web-7 /etc/zabbix/zabbix_agentd.d]#ll
total 20
-rw-r--r-- 1 zabbix zabbix   87 Jul  4 13:44 nginx_status.conf
-rwxr-xr-x 1 zabbix zabbix 1706 Jul  4 13:51 nginx_status.sh
-rwxr-xr-x 1 zabbix zabbix 1095 Jul  4 17:33 php_status.sh
-rw-r--r-- 1 zabbix zabbix   52 Jun 29 19:06 tcp_status.conf
-rw-r--r-- 1 zabbix zabbix 1531 Jul 29  2019 userparameter_mysql.conf
3. 重启agent
[root@web-7 /etc/zabbix/zabbix_agentd.d]#systemctl restart zabbix-agent.service 

4.手动zabbix_get测数据
[root@zabbix-server-71 ~]#zabbix_get -s 10.0.0.7 -k php_status[total_processes]
5

配置zabbix-UI的模板

监控项克隆添加
关联web7机器
添加图形数据,给模板加
查看web7的图形数据即可

添加触发器,判断php如果挂了, 立即钉钉报警

判断php-fpm进程挂了立即钉钉报警

标签:status,processes,流程,cachefile,zabbix,php,listen
From: https://www.cnblogs.com/btcm409181423/p/18238835

相关文章

  • minos 2.2 中断虚拟化——异常处理流程
    首发公号:Rand_cs上一节讲述了ARMv8异常模型,很多理论,这一节来看一个实际的例子,来看看minos中的异常处理流程异常向量表直接来看minos的异常向量表,很多事情就明了了:elx_vectors:c0sync://CurrentELwithSP0BAD_MODEVECTOR_C0_SYNC.balign0x80c0ir......
  • PHP CGI Windows下远程代码执行漏洞
    PHPCGIWindows下远程代码执行漏洞CVE编号:CVE-2024-4577危害定级:高危漏洞标签:发布预警公开漏洞披露日期:2024-06-07推送原因:标签更新:[公开漏洞]=>[发布预警公开漏洞]信息来源:https://www.oscs1024.com/hd/MPS-wk9q-5g71漏洞描述PHP是一种在服务器端执......
  • 6月13日在线研讨会 | 多产品多流程多团队的ALM选择方案
        随着汽车产业步入“软件定义汽车”时代,传统汽车产业的硬件中心模式逐渐被软件与服务的核心地位所取代,这是一场对汽车设计、制造及运营的全方位重塑。在这一转型过程中,如何高效管理汽车的整个生命周期成为了一项全新挑战。在此背景下,应用生命周期管理(ALM)平台应运而生,以......
  • 钉钉二次开发-企业内部系统集成官方OA审批流程(三)
    书接上回,本文主要分享 企业内部系统集成钉钉官方OA审批流程的步骤的第二部分。前端代码集成钉钉免登JSAPI:前端通过corpid获得钉钉临时访问码code,再通过临时访问码code调用此接口返回当前用户的姓名、userid、钉钉用户id、 系统工号、钉钉部门id列表、业务系统访问t......
  • PHP Standards Recommendations(PSR)
    以下是PHPStandardsRecommendations(PSR)的全部内容:PSR-1:基础编码标准:规定了PHP代码的基本格式和要求,包括文件的编码、标签的使用、代码的组织等。PSR-2:编码风格指南:是对PSR-1的扩展,详细规定了PHP代码的排版、缩进、命名规范等,以提高代码的可读性。PSR-3:日志接口:定义......
  • 香港优才计划线上申请10大步骤,2024年流程截图,diy照做就可以
    我是糖爸,已获批香港优才。10个步骤申请香港优才真的很简单,因为现在入境处只接受线上申请啦,你自己上传资料就可以,找中介也是你自己准备资料给他帮忙上传,何不自己动手上传呢,省个几万。10大步骤分别是:选择计分制度、确认基本资格、学历/专业资格、工作经验、人才清单、事业或学业......
  • AI助手:Agent工作流程与应用场景详解
    引言智能体(Agent)是一种在特定环境中自主行动、感知环境、做出决策并与其他智能体或人类进行交互的计算机程序或实体。它们具备自主性、反应性、社交性和适应性等特点,能够根据环境的变化调整自己的行为,以达到预设的目标。本文将详细拆解智能体从提示词接收、LLM大模型理解识别、知......
  • HTTP Status 400 – Bad Request
    1.问题2.原因org.apache.juli.logging.DirectJDKLog:log|ErrorparsingHTTPrequestheaderNote:furtheroccurrencesofHTTPheaderparsingerrorswillbeloggedatDEBUGlevel.java.lang.IllegalArgumentException:Requestheaderistoolargeat......
  • ThinkPHP发邮件配置教程?群发功能安全吗?
    ThinkPHP发邮件的注意事项?如何优化邮件发送的性能?无论是用户注册、密码重置还是消息提醒,发送邮件都是一个常见的需求。AokSend将详细介绍如何在ThinkPHP框架中配置和发送邮件,帮助开发者轻松实现邮件功能。ThinkPHP发邮件:了解需求在开始配置之前,我们需要明确邮件发送的具体......
  • PHP实名认证接口开发示例、银行卡实名认证API
    在互联网技术多元化、高速的发展下,催生出在挑战中不断奋勇前进的互联网企业。但不能忽视的是,互联网技术的快速迭代也会使部分企业在冲击中败下阵来,面临淘汰的危机。随着O2O、共享经济等新兴商业形式的兴起,企业对实名认证业务的数据形式和数据质量也有了更高的要求。这一现实警......