php-status监控流程

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_phpphp-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=80file_time=`stat -c %Y $cachefile`
now_time=`date +%s`
rm_file=$(($now_time-$file_time))
if [ -z $2 ];thenurl=http://127.0.0.1:$port/status_php
elseurl=$PHP_URL
fi
cmd="/usr/bin/curl $url"if [ ! -e $cachefile ];then$cmd > $cachefile 2>/dev/null
fiif [ $rm_file -gt 60 ];thenrm -rf $cachefile
fiif [ ! -f $cachefile ];then$cmd > $cachefile 2>/dev/null
fistart_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进程挂了立即钉钉报警

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/721905.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

南昌航空大学软件学院23201823第二次blog

一、前言: 这是第二次的blog,接下来关于这最近三次的PTA大作业,只有第一次是上次答题判题程序的延续,接下来则是一个全新的关于电路的设计,最新的电路设计相较于之前的答题判题程序来说的话,难度确实有所下降。前两次中都含有三道题,而最后一次的PTA则是删去了其余两道题…

BUUCTF-Misc(121-130)

[UTCTF2020]sstv 参考: [UTCTF2020]QSSTV - cuihua- - 博客园 (cnblogs.com) qsstv解密一下flag{6bdfeac1e2baa12d6ac5384cdfd166b0}voip 参考: buuctf VoIP-CSDN博客 voip就是语音通话技术然后wireshark可以直接播放这个语音然后播放一下flag就是考听力的,加油吧,我太垃圾…

Paxos Made Simple

1 IntroductionPaxos算法是莱斯利兰伯特(Leslie Lamport)于1990年提出的一种基于消息传递且具有高度容错特性的共识(consensus)算法。《The Part-Time Parliament》最早发表于1998年,Paxos岛上有一个议会,这个议会来决定岛上的法律,而法律是由议会通过的一系列的法令定义…

题目集4~6的总结

目录一.前言 nchu-software-oop-2024-上-4 ~知识点 nchu-software-oop-2024-上-5 ~知识点 nchu-software-oop-2024-上-6 ~知识点二.设计与分析一.答题判题程序-41.继承2.多态二.家居强电电路模拟程序-11.类的设计2.抽象类二.家居强电电路模拟程序-21.面向对象设计原则——单…

后缀数组学习笔记

后缀数组学习笔记1. 前置知识:基数排序 1.1. 思想 现有如下序列:3,44,38,5,47,15,36,32,50,现在要用基数排序算法排序,要怎么做? 基数排序的初始状态如下:按照个位将原序列中的数分组,放入对应的集合将分好的数按照个位的顺序取出,得到:将序列中的数重新按照十位分组,…

RUST安装和配置过程

RUST安装和配置过程 在Linux系统下,使用如下命令执行安装 sudo sh -c "curl --proto =https --tlsv1.2 -sSf https://sh.rustup.rs | sh" 可能会有报错如下检查 /tmp 权限 确保 /tmp 目录具有正确的权限,允许所有用户写入。可以使用以下命令检查 /tmp 目录的权限:…

第一篇 Markdown学习

第一篇 Markdown语法归纳Markdown官方文档 Typora安装教程(来自CSDN大佬)标题 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 标题一 标题二 字体样式 加粗文本 加粗文本 删除线 斜体 斜体 斜体加粗 斜体加粗 引用引用图片分割线超链接 我的博客 列表A B CA B CA B C…

.net core使用PageOffice时提示POBrowser is not defined

页面控制台提示: 说明PageOffice.js未引用,页面增加 <script type="text/javascript" src="~/pageoffice.js"></script> 如果还是访问不到这个js,检查一下Startup.cs,注册2个中间件即可。// This method gets called by the runtime. Use …

FastAPI-5:Pydantic、类型提示和模型预览

5 Pydantic、类型提示和模型 FastAPI主要基于Pydantic。它使用模型(Python对象类)来定义数据结构。这些模型在FastAPI应用程序中被大量使用,是编写大型应用程序时的真正优势。5.1 类型提示 在许多计算机语言中,变量直接指向内存中的值。这就要求程序员声明它的类型,以便确…

代码随想录算法训练营第四天 |

24. 两两交换链表中的节点 题目:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 解题: 关键:cur的位置在要交换的两个节点的前面 具体如何交换的操作!! while种植条件:cur的下…

C++--移动构造函数/移动赋值运算符

C++ 的移动语义C++--移动构造函数/移动赋值运算符 什么是移动语义?在C++11中,移动语义是一个重要的新特性,它可以使程序在内存管理方面更加高效,同时也提高了程序的性能它允许将一个对象的所有权从一个对象转移到另一个对象,而不需要进行数据的拷贝。 通俗理解 我有一份材…

java小记

今天学了一些计算机存储数据的原理: 文本,图片,声音等存储 编码:gb2312,Unicode,gbk等等。 数据类型相关遇到了一些问题:解决办法大概是:但是对于我来说是无效的,最后还是照着下面来:成功