定位 发表于 2017-3-24 18:27:58

zabbix3.0 监控php服务器性能实战,精华篇

相关链接:zabbix3.0 监控mysql服务器性能实战,精华篇
                  图文讲解zabbix安装全过程


1.配置所有Agent(标准化目录结构)
[*]# vim /etc/zabbix/zabbix_agentd.conf #编辑配置文件引用key
[*]Include=/etc/zabbix/zabbix_agentd.d/*.conf
[*]# mkdir /etc/zabbix/scripts #存放Shell脚本

2.PHP-FPM工作模式通常与Nginx结合使用,修改php-fpm.conf(找到自己的php-fpm.conf存放路径)
[*]# vim /etc/php-fpm.d/www.conf #我php-fpm存放路径
[*]pm.status_path = /php_status
之后重启服务
service php-fpm restart

3.修改nginx.conf的配置文件,通过Nginx访问PHP-FPM状态。
[*] location ~ ^/(php_status)$ {
[*]         fastcgi_index  index.php;         
[*]         fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
[*]         include        fastcgi_params;
[*]         fastcgi_pass unix:/tmp/php-cgi.sock;
[*]}
之后重启服务
service nginx restart

4.访问测试phpfpm_status
[*]# curl http://127.0.0.1/php_status
访问结果,如图:


[*]#PHP-FPM状态解释:
[*]pool #fpm池名称,大多数为www
[*]process manager #进程管理方式dynamic或者static
[*]start time #启动日志,如果reload了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,缓慢请求的数量

4.编写php-fpm的Shell脚本(如果端口不一致,只需要修改脚本端口即可)#!/bin/bash
############################################################
# $Name: php_status.sh
# $Version: v1.0
# $Function: Nginx and Php Status
# $Author: dingwei
# $organization: 127.0.0.1
# $Create Date: 2017-03-24
# $Description: Monitor Nginx and Php Service Status
############################################################
PHPFPM_COMMAND=$1
PHPFPM_PORT=80 #根据监听不同端口进行调整

start_since(){
result=`/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^start since:/ {print $NF}'`
echo $result
}
accepted_conn(){
result=`/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^accepted conn:/ {print $NF}'`
echo $result
}
listen_queue(){
result=`/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^listen queue:/ {print $NF}'`
echo $result
}
max_listen_queue(){
result=`/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^max listen queue:/ {print $NF}'`
echo $result
}
listen_queue_len(){
result=`/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^listen queue len:/ {print $NF}'`
echo $result
}
idle_processes(){
result=`/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^idle processes:/ {print $NF}'`
echo $result
}
active_processes(){
result=`usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^active processes:/ {print $NF}'`
echo $result
}
total_processes(){
result=`/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^total processes:/ {print $NF}'`
echo $result
}
max_active_processes(){
result=`/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^max active processes:/ {print $NF}'`
echo $result
}
max_children_reached(){
result=`/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^max children reached:/ {print $NF}'`
echo $result
}
slow_requests(){
result=`/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^slow requests:/ {print $NF}'`
echo $result
}
case $PHPFPM_COMMAND 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;
;;
*)
echo $"USAGE:$0 {start_since|accepted_conn|listen_queue|max_listen_queue|listen_queue_len|idle_processes|active_processes|total_processes|max_active_processes|max_children_reached}"
esac
5.   给脚本添加执行权限
[*]# chmod +x php_status.sh

6.   改变用户和用户组:  1.   [root@linux-node1 scripts]#  chown -R zabbix.zabbix /usr/local/zabbix/php_status.sh
7.  然后在zabbix_agentd.conf文件里面添加如下内容:
UserParameter=php.curl,curl -s 127.0.0.1:80/php_status | awk '/^pool:/ {print $NF}' | wc -l
UserParameter=php.status[*],/etc/zabbix/scripts/php_status.sh $1
之后保存内容并重启zabbix_agentd服务
service zabbix_agentd restart

8.测试一定使用Zabbix_get来获取值
[*]# zabbix_get -s 192.168.90.11 -k php.status
[*]45


最后就是添加模板、添加应用、添加项目、最后针对相应的项目做触发器,就按照这个顺序来。针对这类教程我会单独给大家写出来的,敬请期待!

以下是我的实战测试结果图:
把php-fpm服务给停了


把php-fpm服务给启动起来




页: [1]
查看完整版本: zabbix3.0 监控php服务器性能实战,精华篇