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监控的更多相关文章

  1. 使用Monit监控本地进程

    目前用它监控某些服务,失败自动重启,同时监控特定的日志文件,如果有变化,就发邮件报警 安装不细写了,网上好多 我先用cat /proc/version看了下我的系统是el6的,于是wget http: ...

  2. node服务的监控预警系统架构

    需求背景 目前node端的服务逐渐成熟,在不少公司内部也开始承担业务处理或者视图渲染工作.不同于个人开发的简单服务器,企业级的node服务要求更为苛刻: 高稳定性.高可靠性.鲁棒性以及直观的监控和报警 ...

  3. 采用MiniProfiler监控EF与.NET MVC项目(Entity Framework 延伸系列1)

    前言 Entity Framework 延伸系列目录 今天来说说EF与MVC项目的性能检测和监控 首先,先介绍一下今天我们使用的工具吧. MiniProfiler~ 这个东西的介绍如下: MVC Mi ...

  4. Logstash实践: 分布式系统的日志监控

    文/赵杰 2015.11.04 1. 前言 服务端日志你有多重视? 我们没有日志 有日志,但基本不去控制需要输出的内容 经常微调日志,只输出我们想看和有用的 经常监控日志,一方面帮助日志微调,一方面及 ...

  5. C# 利用性能计数器监控网络状态

    本例是利用C#中的性能计数器(PerformanceCounter)监控网络的状态.并能够直观的展现出来 涉及到的知识点: PerformanceCounter,表示 Windows NT 性能计数器 ...

  6. 使用Zabbix监控Oracle数据库

    Orabbix介绍 监控Oracle数据库我们需要安装第三方提供的Zabbix插件,我们先测试比较有名的Orabbix,http://www.smartmarmot.com/product/orabb ...

  7. 【开源】.net 分布式架构之监控平台

    开源地址:http://git.oschina.net/chejiangyi/Dyd.BaseService.Monitor .net 简单监控平台,用于集群的性能监控,应用耗时监控管理,统一日志管理 ...

  8. Opserver开源的服务器监控系统(ASP.NET)

    Opserver是Stack Exchange下的一个开源监控系统,系统本身由C#语言开发的ASP.NET(MVC)应用程序,无需任何复杂的应用配置,入门很快.下载地址:https://github. ...

  9. Performance Monitor4:监控SQL Server的IO性能

    SQL Server的IO性能受到物理Disk的IO延迟和SQL Server内部执行的IO操作的影响.在监控Disk性能时,最主要的度量值(metric)是IO延迟,IO延迟是指从Applicati ...

  10. IT运维监控解决方案介绍

    现状 •小公司/ 创业团队< 500台服务器规模 开源方案:Zabbix.Nagios.Cacti- 云服务提供商:监控宝.oneAlert等 •BAT级别> 10万台服务器 投 ...

随机推荐

  1. 全方位事件监控管理,阿里云日志服务Kubernetes事件中心正式上线

    2020年2月21日,阿里云日志服务Kubernetes事件中心正式上线,为Kubernetes事件提供集中化采集.存储.分析.可视化.告警等能力,帮助Kubernetes使用者快速构建准实时.高可靠 ...

  2. Alibaba Cloud Linux 2 LTS 正式发布,提供更高性能和更多保障

    Alibaba Cloud Linux 2 LTS版本发布后,阿里云将会为该版本提供长达5年的软件维护.问题修复服务.从2019-03-27开始到2024-03-31结束.包括: 免费的服务和支持:A ...

  3. 你不知道的 HTTPS 压测

    ​简介:随着互联网安全规范的普及,使用 HTTPS 技术进行通信加密,实现网站和 APP 的可信访问,已经成为公认的安全标准.本文将介绍针对 HTTPS 协议做压力测试的关注点,以及使用 PTS 做 ...

  4. 国内唯一连续入选Gartner,Quick BI是如何做到的?

    ​简介:阿里云Quick BI凭借灵活的公共云部署,私有化独立部署能力.无缝对接各类云上数据库和自建数据库.可视化搭建分析.高效数据处理能力与强大数据计算能力,使得在2022年持续入选Gartner ...

  5. 使用友盟+的APM服务实现对移动端APP的性能监控

    ​简介: 对于信息系统服务,一般我们的重点监控对象都是核心的后端服务,通常会采用一些主流的APM(Application Performance Management)框架进行监控.告警.分析.那么对 ...

  6. win10 uwp 笔迹书写预测 墨迹书写加速

    在 UWP 的 InkCanvas 里自带了预测书写轨迹的功能,开启此功能可以进行书写预测,从而减少书写延迟.本文将告诉大家如何在 UWP 的 InkCanvas 里开启笔迹书写预测功能 在 UWP ...

  7. golang 并发问题

    如何使用channel实现定时器? 使用channel的阻塞,里面放一个sleep就可以了 Go语言--goroutine并发模型: 视频地址: https://www.bilibili.com/vi ...

  8. 智慧城市three.js数字孪生三维展示城市建筑轮廓数据获取方法分析和AI算法方案剖析

    一.目前世面上有的2种免费方案是 1.OpenStreetMap开源网站下载, 2.blender的gis插件获取城市建筑轮廓. 缺点是:只有重点城市和省会城市,一些地级市或者县级市基本没有数据. 二 ...

  9. selenium Webdriver版本和浏览器版本不匹配问题:ChromeDriver only supports Chrome version 119 Current browser version is 124.0.6367.202

    问题描述 代码如下: from selenium import webdriver from selenium.webdriver.common.by import By def test01(): ...

  10. 密码学—重合指数法Python程序

    重合指数(Ic) 计算重合指数就是用来验证在Kasiski测试法中猜测出来的各种密钥长度哪一个才是最接近真实密钥长度的. 计算重合指数步骤 按照Kasiski测试法猜测的密钥长度分组 ↓ 分好组之后将 ...