黑帽联盟

 找回密码
 会员注册
查看: 2290|回复: 0
打印 上一主题 下一主题

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

[复制链接]

852

主题

38

听众

3173

积分

白金VIP

Rank: 8Rank: 8

  • TA的每日心情
    开心
    2024-3-7 12:52
  • 签到天数: 1538 天

    [LV.Master]伴坛终老

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


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

    2.PHP-FPM工作模式通常与Nginx结合使用,修改php-fpm.conf(找到自己的php-fpm.conf存放路径)
    • [root@linux-node1 ~]# 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
    • [root@linux-node4 conf.d]# curl http://127.0.0.1/php_status
    访问结果,如图:
    11.png
    • #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脚本(如果端口不一致,只需要修改脚本端口即可)
    1. #!/bin/bash
    2. ############################################################
    3. # $Name: php_status.sh
    4. # $Version: v1.0
    5. # $Function: Nginx and Php Status
    6. # $Author: dingwei
    7. # $organization: 127.0.0.1
    8. # $Create Date: 2017-03-24
    9. # $Description: Monitor Nginx and Php Service Status
    10. ############################################################
    11. PHPFPM_COMMAND=$1
    12. PHPFPM_PORT=80 #根据监听不同端口进行调整

    13. start_since(){
    14. result=`/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^start since:/ {print $NF}'`
    15. echo $result
    16. }
    17. accepted_conn(){
    18. result=`/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^accepted conn:/ {print $NF}'`
    19. echo $result
    20. }
    21. listen_queue(){
    22. result=`/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^listen queue:/ {print $NF}'`
    23. echo $result
    24. }
    25. max_listen_queue(){
    26. result=`/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^max listen queue:/ {print $NF}'`
    27. echo $result
    28. }
    29. listen_queue_len(){
    30. result=`/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^listen queue len:/ {print $NF}'`
    31. echo $result
    32. }
    33. idle_processes(){
    34. result=`/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^idle processes:/ {print $NF}'`
    35. echo $result
    36. }
    37. active_processes(){
    38. result=`usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^active processes:/ {print $NF}'`
    39. echo $result
    40. }
    41. total_processes(){
    42. result=`/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^total processes:/ {print $NF}'`
    43. echo $result
    44. }
    45. max_active_processes(){
    46. result=`/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^max active processes:/ {print $NF}'`
    47. echo $result
    48. }
    49. max_children_reached(){
    50. result=`/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^max children reached:/ {print $NF}'`
    51. echo $result
    52. }
    53. slow_requests(){
    54. result=`/usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^slow requests:/ {print $NF}'`
    55. echo $result
    56. }
    57. case $PHPFPM_COMMAND in
    58. start_since)
    59. start_since;
    60. ;;
    61. accepted_conn)
    62. accepted_conn;
    63. ;;
    64. listen_queue)
    65. listen_queue;
    66. ;;
    67. max_listen_queue)
    68. max_listen_queue;
    69. ;;
    70. listen_queue_len)
    71. listen_queue_len;
    72. ;;
    73. idle_processes)
    74. idle_processes;
    75. ;;
    76. active_processes)
    77. active_processes;
    78. ;;
    79. total_processes)
    80. total_processes;
    81. ;;
    82. max_active_processes)
    83. max_active_processes;
    84. ;;
    85. max_children_reached)
    86. max_children_reached;
    87. ;;
    88. slow_requests)
    89. slow_requests;
    90. ;;
    91. *)
    92. 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}"
    93. esac
    复制代码

    5.   给脚本添加执行权限
    • [root@linux-node1 scripts]# 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来获取值
    • [root@linux-node1 zabbix_agentd.d]# zabbix_get -s 192.168.90.11 -k php.status[accepted_conn]
    • 45


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


    以下是我的实战测试结果图:

    把php-fpm服务给停了
    php服务监控

    把php-fpm服务给启动起来
    php性能监控



  • 帖子永久地址: 

    黑帽联盟 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与黑帽联盟享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和黑帽联盟的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、黑帽联盟管理员和版主有权不事先通知发贴者而删除本文

    勿忘初心,方得始终!
    您需要登录后才可以回帖 登录 | 会员注册

    发布主题 !fastreply! 收藏帖子 返回列表 搜索
    回顶部