首页 > 编程语言 >Zabbix监控PHP状态

Zabbix监控PHP状态

时间:2023-10-08 10:35:03浏览次数:29  
标签:status processes php zabbix PHPFILE Zabbix 监控 PHP listen

1.开启php的监控数据监控功能

# 使用部署了php-fpm的机器即可
# yum install php-fpm -y
安装报错就是遇到了php版本冲突,卸载老版本,如:
rpm -qa|grep  php71w
rpm -e `rpm -qa|grep  php71w`


# 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 /php_status {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME html$fastcgi_script_name;
    include fastcgi_params;
	}
}

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 

2.访问测试php_status

image

字段解释

[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_STATUS=$1
PHPFILE="/tmp/php_status.txt"
CMD="curl http://10.0.0.7:8081/php_status" 
TIMEFILE=$(stat -c %Y $PHPFILE)
TIMENOW=$(date +%s)
function PHPFILE_IS_EXIST(){
if [ ! -f $PHPFILE ];then
  $CMD > $PHPFILE 2>/dev/null
fi
}
PHPFILE_IS_EXIST

if [ $[ $TIMENOW - $TIMEFILE ] -gt 60 ];then
  rm -f $PHPFILE
  PHPFILE_IS_EXIST
fi

pool(){
  awk 'NR==1{print $NF}'  $PHPFILE
}

process_manager(){
  awk 'NR==2{print $NF}'  $PHPFILE
}
start_time(){
  awk 'NR==3{print $(NF-1)}'  $PHPFILE
}
start_since(){
  awk 'NR==4{print $NF}'  $PHPFILE
}
accepted_conn(){
  awk 'NR==5{print $NF}'  $PHPFILE
}
listen_queue(){
  awk 'NR==6{print $NF}'  $PHPFILE
}
max_listen_queue(){
  awk 'NR==7{print $NF}'  $PHPFILE
}
listen_queue_len(){
  awk 'NR==8{print $NF}'  $PHPFILE
}
idle_processes(){
  awk 'NR==9{print $NF}'  $PHPFILE
}
active_processes(){
  awk 'NR==10{print $NF}'  $PHPFILE
}
total_processes(){
  awk 'NR==11{print $NF}'  $PHPFILE
}
max_active_processes(){
  awk 'NR==12{print $NF}'  $PHPFILE
}
max_children_reached(){
  awk 'NR==13{print $NF}'  $PHPFILE
}
slow_requests(){
  awk 'NR==14{print $NF}'  $PHPFILE
}
check() {
  php_pro_count=`ss -tunlp|grep php-fpm|wc -l`
  echo $php_pro_count
}

case $PHP_STATUS in 
	pool)
	pool
	;;
	process_manager)
	process_manager
	;;
	start_time)
	start_time
	;;
	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 "无效的参数"
	;;
esac

放入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
-rwxr-xr-x 1 zabbix zabbix 1095 Jul  4 17:33 php_status.sh

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的模板

创建模板

image

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

image

创建应用集、监控项

image

![image-20220704175415629](C:\Users\18132\Desktop\image-20220704175415629.png克隆即可
其他监控项配置一致,只是参数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}]

image

image

6.2 触发器添加

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

image

6.3 创建图形

image

6.4 主机使用模板

image

6.5 查看最新数据、图形

image

image

6.6 php-fpm挂了报警

[root@web-7 /etc/zabbix/zabbix_agentd.d]#systemctl stop php-fpm

image

标签:status,processes,php,zabbix,PHPFILE,Zabbix,监控,PHP,listen
From: https://www.cnblogs.com/chunjeh/p/17748267.html

相关文章

  • PHP内核的学习--创建PHP扩展
    开始看PHP内核也有一段时间了,现在开始边学边总结,今天就总结一下如何创建自己的PHP扩展。我的环境如下:系统:Ubuntu14.04php版本:5.5.19参考摘录:用C/C++扩展你的PHPPHP取得成功的一个主要原因之一是它拥有大量的可用扩展。web开发者无论有何种需求,这种需求最有可能在PHP发行包里......
  • PHP生成word的三种方式
    最近工作遇到关于生成word的问题现在总结一下生成word的三种方法。btw:好像在博客园发表博客只要是标题带PHP的貌似点击量都不是很高(哥哥我标题还是带上PHP了),不知道为什么,估计博客园上net技术大牛比较多吧,如果把java,.net,php比作程序员的女友,那么java是Oracle门下的大家闺秀,.net微......
  • PHP7 常用的魔术方法整理
    php7魔术方法有哪些?魔术方法是一种特殊的方法,当对对象执行某些操作时会覆盖PHP的默认操作。PHP保留所有以 __ 开头的方法名称。因此,除非覆盖PHP的行为,否则不建议使用此类方法名称。php7魔术方法有:__constract:在实例化一个类时,触发__destruct:在一个实例对象被销毁的......
  • 详解PHP反射API
    反射API的部分类使用反射API这些类,可以获得在运行时访问对象、函数和脚本中的扩展的信息。通过这些信息可以用来分析类或者构建框架。类描    述Reflection为类的摘要信息提供静态函数export()ReflectionClass类信息和工具ReflectionMethod类方法信......
  • Zabbix监控Nginx的七个链接状态
    一、监控nginx链接数状态status#1.开启status页面功能cat>/etc/nginx/conf.d/status.conf<<'EOF'server{listen80;server_namelocalhost;location/nginx_status{stub_statuson;access_logoff;}}EOF#2.访问测试[ro......
  • Lnton羚通算法算力云平台视频监控分析安全帽穿戴识别 安全帽识别预警系统
    Lnton羚通的算法算力云平台有以下显著特点:高性能、高可靠性、高可扩展性和低成本。用户可以通过该云平台获取高效、强大的算法计算服务,快速而灵活地运行各种复杂的计算模型和算法。该平台广泛涵盖机器学习、人工智能、大数据分析和图像识别等领域。此外,云平台还提供丰富的算法库和......
  • 烟花爆竹厂如何做到0风险0爆炸事故?AI+视频监控技术给出答案
    由于烟花爆竹具有易燃易爆风险,稍有不慎就会发生严重事故,而烟花爆竹厂区作为大量烟花爆竹存放地点,厂区面积大、工作人员杂乱,甚至有很多厂区原料存放不当,给日常的安全管理带来极大的压力,利用信息化手段结合传统视频监管就可大力提升烟花爆竹厂区的安全监管效率。方案实现1、远程监控......
  • 新基建智慧铁路:高铁沿线综合视频监控及风险智能预警管理方案
    一、方案背景铁路沿线安全环境直接关系铁路运输安全畅通。随着我国铁路特别是高速铁路运营里程不断增加,改善铁路沿线安全环境对保障铁路高质量发展和人民群众生命财产安全的作用更加突出。为了保障高铁的安全运营,高铁对安防尤其是视频监控的需求不断增多,同时也提出了更多先进性......
  • Zabbix配置钉钉告警
    一、创建群聊机器人1.添加群聊机器人2.设置机器人信息3.记录webhook地址机器人文档https://open.dingtalk.com/document/org/application-types用户可以向这个webhook地址发起post请求,提交数据,也就是等于给钉钉发消息了,注意字符集编码4.测试webhook地址#提交json类......
  • Lnton羚通视频分析算法开发平台监控区域自动识别人员闯入行为 危险区域闯入算法预警系
    Lnton羚通的算法算力云平台是一款卓越的解决方案,具备出众的特点。它提供高性能、高可靠性、高可扩展性和低成本的优势,使用户能够高效地执行复杂计算任务。此外,该平台还提供广泛的算法库和工具,并支持用户上传和部署自定义算法,以增强平台的灵活性和个性化能力。危险区域闯入识别预警......