php监控
1.开启php的监控数据监控功能
# 使用部署了php-fpm的机器即可
# yum install php-fpm -y
# 1.修改参数
[root@web-7 /etc/php-fpm.d]#grep '^pm.status' /etc/php-fpm.d/www.conf
pm.status_path = /php_status
2. 设置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;
}
}
[root@web-7 /etc/nginx/conf.d]#
3.重启nginx,php-fpm
[root@web-7 /etc/nginx/conf.d]#systemctl restart nginx php-fpm
[root@web-7 /etc/nginx/conf.d]#netstat -tunlp|grep -E 'php|nginx'
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 51059/php-fpm: mast
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 51076/nginx: master
tcp6 0 0 :::80 :::* LISTEN 51076/nginx: master
[root@web-7 /etc/nginx/conf.d]#
2.访问测试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,缓慢请求的数量
3.脚本提取监控页面数据
#!/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/php_status
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
# author: www.yuchaoit.cn
放入zabbix-agent目录
[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
4.准备zabbix_agent自定义key配置文件
[root@web-7 /etc/zabbix/zabbix_agentd.d]#cat php_status.conf
UserParameter=php_status[*],/etc/zabbix/zabbix_agentd.d/php_status.sh $1
[root@web-7 /etc/zabbix/zabbix_agentd.d]#systemctl restart zabbix-agent.service
5.zabbix_get验证
[root@m-61 ~]#zabbix_get -s 10.0.0.7 -k php_status[listen_queue_len]
128
[root@m-61 ~]#zabbix_get -s 10.0.0.7 -k php_status[start_since]
1322
6.配置zabbix-UI的模板
创建模板

修改zabbix的宏,也就是我们自定义的status页面访问的入口url。

创建应用集、监控项
6.1 监控项克隆添加

克隆即可
其他监控项配置一致,只是参数key值不一样
所有监控项key值
php_status[start_since,{$PHP_URL}]
php_status[accepted_conn,{$PHP_URL}]
php_status[listen_queue,{$PHP_URL}]
php_status[max_listen_queue,{$PHP_URL}]
php_status[listen_queue_len,{$PHP_URL}]
php_status[idle_processes,{$PHP_URL}]
php_status[active_processes,{$PHP_URL}]
php_status[total_processes,{$PHP_URL}]
php_status[active_processes,{$PHP_URL}]
php_status[max_active_processes,{$PHP_URL}]
php_status[max_children_reached,{$PHP_URL}]
php_status[slow_requests,{$PHP_URL}]
php_status[check,{$PHP_URL}]


6.2 触发器添加
针对php-fpm进程状态加一个触发器,防止该进程挂了

6.3 创建图形

6.4 主机使用模板

6.5 查看最新数据、图形


6.6 php-fpm挂了报警
[root@web-7 /etc/zabbix/zabbix_agentd.d]#systemctl stop php-fpm

php监控的更多相关文章
- 使用Monit监控本地进程
目前用它监控某些服务,失败自动重启,同时监控特定的日志文件,如果有变化,就发邮件报警 安装不细写了,网上好多 我先用cat /proc/version看了下我的系统是el6的,于是wget http: ...
- node服务的监控预警系统架构
需求背景 目前node端的服务逐渐成熟,在不少公司内部也开始承担业务处理或者视图渲染工作.不同于个人开发的简单服务器,企业级的node服务要求更为苛刻: 高稳定性.高可靠性.鲁棒性以及直观的监控和报警 ...
- 采用MiniProfiler监控EF与.NET MVC项目(Entity Framework 延伸系列1)
前言 Entity Framework 延伸系列目录 今天来说说EF与MVC项目的性能检测和监控 首先,先介绍一下今天我们使用的工具吧. MiniProfiler~ 这个东西的介绍如下: MVC Mi ...
- Logstash实践: 分布式系统的日志监控
文/赵杰 2015.11.04 1. 前言 服务端日志你有多重视? 我们没有日志 有日志,但基本不去控制需要输出的内容 经常微调日志,只输出我们想看和有用的 经常监控日志,一方面帮助日志微调,一方面及 ...
- C# 利用性能计数器监控网络状态
本例是利用C#中的性能计数器(PerformanceCounter)监控网络的状态.并能够直观的展现出来 涉及到的知识点: PerformanceCounter,表示 Windows NT 性能计数器 ...
- 使用Zabbix监控Oracle数据库
Orabbix介绍 监控Oracle数据库我们需要安装第三方提供的Zabbix插件,我们先测试比较有名的Orabbix,http://www.smartmarmot.com/product/orabb ...
- 【开源】.net 分布式架构之监控平台
开源地址:http://git.oschina.net/chejiangyi/Dyd.BaseService.Monitor .net 简单监控平台,用于集群的性能监控,应用耗时监控管理,统一日志管理 ...
- Opserver开源的服务器监控系统(ASP.NET)
Opserver是Stack Exchange下的一个开源监控系统,系统本身由C#语言开发的ASP.NET(MVC)应用程序,无需任何复杂的应用配置,入门很快.下载地址:https://github. ...
- Performance Monitor4:监控SQL Server的IO性能
SQL Server的IO性能受到物理Disk的IO延迟和SQL Server内部执行的IO操作的影响.在监控Disk性能时,最主要的度量值(metric)是IO延迟,IO延迟是指从Applicati ...
- IT运维监控解决方案介绍
现状 •小公司/ 创业团队< 500台服务器规模 开源方案:Zabbix.Nagios.Cacti- 云服务提供商:监控宝.oneAlert等 •BAT级别> 10万台服务器 投 ...
随机推荐
- MyBatis源码之前言—JDBC编码存在的问题和Mybatis的介绍
MyBatis源码之前言-JDBC编码存在的问题和Mybatis的介绍 为了方便操作,我们在sjdwz_test数据库下建立一张表: CREATE TABLE `t_student` ( `id` b ...
- Apsara Stack 技术百科 | 浅谈阿里云混合云新一代运维平台演进与实践
简介:随着企业业务规模扩大和复杂化及云计算.大数据等技术的不断发展,大量传统企业希望用上云来加速其数字化转型,以获得虚拟化.软件化.服务化.平台化的红利.在这个过程中,因为软件资产规模持续增大而导致 ...
- 深度 | 从DevOps到BizDevOps, 研发效能提升的系统方法
简介:研发效能提升不知从何下手.一头雾水?阿里资深技术专家一文为你揭秘研发效能提升的系统方法. 注:本文是对云栖大会何勉分享内容的整理 这几年"研发效能"一直是热词,很多组织 ...
- VUE+element页面按钮调用dialog
VUE+element通过按钮调用普通弹框(弹框页面独立出一个dialog页面,非在同一个页面文件里) 代码如下 <el-dialog> <el-button type=" ...
- 【爬虫数据集】李子柒YouTube频道TOP10热门视频的TOP2000热门评论,共计2W条
目录 一.背景 二.爬取目标 三.结果展示 四.演示视频 五.附完整数据 一.背景 这段时间,有超多小伙伴找我要YouTube数据,做数据分析.情感分析之类的研究工作,但很多人并不是计算机软件相关专业 ...
- 探索Django:从项目创建到图片上传的全方位指南
Django是什么 Django 是一个流行的 Python Web 开发框架,它提供了一系列工具和库,用于帮助开发人员构建高效.可扩展的 Web 应用程序.Django 的目标是让开发者能够以快速和 ...
- Selenium4自动化测试6--控件获取数据--下拉框级联选择、checkbox选择、时间选择器
4-下拉框级联选择 import time from selenium.webdriver.support.select import Select #pip install selenium fro ...
- MyBatis-Plus 实现多租户管理的实践
本文主要讲解使用Mybatis-Plus结合dynamic-datasource来实现多租户管理 在现代企业应用中,多租户(Multi-Tenant)架构已经成为一个非常重要的设计模式.多租户架构允许 ...
- Java面试题:Spring中的循环依赖,给程序员带来的心理阴影
循环依赖通常发生在两个或多个Spring Bean之间,它们通过构造器.字段(使用@Autowired)或setter方法相互依赖,从而形成一个闭环.下面是一个使用字段注入(即使用@Autowired ...
- Axure和墨刀——两款原型设计工具介绍
Axure与墨刀是两款在原型设计领域广受欢迎的工具,各具特点和优势: Axure: Axure RP是一款功能强大的原型设计工具,广泛应用于交互设计和用户体验设计领域.它提供了丰富的交互元素库.高保真 ...