社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  NGINX

原创投稿 | 使用zabbix监控nginx和php-fpm性能

马哥Linux运维 • 8 年前 • 1062 次点击  


1系统环境


1.1 软件及其版本

1.2 软件安装路径

zabbix安装在/usr/local/zabbix路径下,其相关配置文件及二进制执行程序都放置其中。
nginx安装在/usr/local/nginx下,其相关配置文件及二进制执行程序都放置其中。
php安装在/usr/local/php下,其相关配置文件及二进制执行程序都放置其中。
继续后面的操作前,请确认nginx和php-fpm的服务端口都处于监听状态。


2配置nginx的status


2.1 确认nginx的status已编译到程序包中

使用nginx -V可以查看nginx是否将模块·http_stub_status_module`编译进包中:

2.2 启用nginx的status模块

  • 修改nginx.conf文件
    一般在默认主机中增加如下location即可:

  • 查看nginx status
    nginx配置文件修改完成以后,使用nginx -t测试配置文件是否有明显逻辑及语法错误,没有问题则重载配置文件。

  • 然后使用浏览器或者curl指令查看nginx status:

2.3 nginx status数值的含义说明

php-fpm自带的有用于查询其工作状态的页面,需要进行如下 两步,以启用这一功能。


3配置php-fpm的status


3.1 启用php-fpm status页面

修改php-fpm.conf文件,去掉status页面的注释,并可以根据需要将其改名。操作如下:

3.2 查看php-fpm的status

修改完php-fpm.conf后,使用service php-fpm reload重新加载配置文件,然后在浏览器或者使用curl指令查看php-fpm的status。操作如下:

php-fpm的status可以查看汇总信息和详细信息,详细信息比汇总信息要多出每一个php-fpm进程的相关信息,同时支持多种格式输出,如xml、html和json,默认情况下分别使用如果指令即可:

Examples for summary status page:
http://example.com/status
http://example.com/status?json
http://example.com/status?html
http://example.com/status?xml
Example for detailed status page:
http://example.com/status?full
http://example.com/status?json&full
http://example.com/status?html&full
http://example.com/status?xml&full

使用何种格式查看status决定了后续使用zabbix进行监控获取status数值的方式。本文以上述curl localhost/php_fpm-status的输出为例。

3.3 php-fpm status的含义


4编写status数据提取脚本


在适当的位置,一般是/usr/local/zabbix/bin里准备脚本用于提取status里每个字段的数值。

4.1 nginx的status数值提取脚本

此脚本为/usr/local/zabbix/bin/nginx_status.sh,其内容如下:

4.2 php-fpm status数值提取脚本

php-fpm status数值提取脚本为/usr/local/zabbix/bin/php_fpm_status.sh,内容如下:


5创建zabbix_agentd的子配置文件


/usr/local/zabbix/etc/zabbix_agentd.d/中创建关联nginx status和php-fpm status的子配置文件,创建一个,或者在已有的某配置文件中增加也可以,我这里分别为它们创建配置文件,文件名可自定义,只要确保此文件夹全部内容在zabbix_agentd.conf中包含(include)了。

5.1 userparameter_nginx.conf

5.2 userparameter_php-fpm.conf

5.3 确认子配置文件被zabbix_agentd配置文件包含

确认在/usr/local/zabbix/etc/zabbix_agentd.conf中包含:Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/且没有被注释。


6重启zabbix_agentd服务


service zabbix_agentd restart 让zabbix_agentd加载新的配置文件。


7测试zabbix_get能否取到数据


在zabbix server上使用如下指令测试能否获取到nginx和php-fpm status数值。

注意:

  • zabbix_get指令在zabbix server上运行。

  • userparameter_*.conf文件位于zabbix_agentd端。

  • nginx_status.sh和php_fpm_status.sh位于zabbix_agentd端。

  • zabbix-get-s指定的ip为zabbix-agentd的监听ip。


8zabbix server上配置相应的模板


这里的模板包含对nginx status和php-fpm status要监控的itemtriggerGraphs等一系列内容。对于在zabbix server上新增要监控的内容,最好的办法就是从模板开始,然后按照顺序依次配置相应内容,无需去网上找现成的模板导入,对于系统的监控按需配置是最好的。下面是相应的操作过程。

8.1 添加nginx status监控模板


新建nginx status模板


定义nginx status模板


新建nginxApplication


定义nginx status items,这里我使用的是被动临控


增加nginx status状态码映射


nginx trigger定义


定义nginx监控视图

8.2 添加php-fpm status监控模板

php-fpm status的模板添加步骤和上述方法一样,此处不在赘述。

8.3 选择相应的主机或主机组关联上相应的模板


给主机或主机组关联模板


9实际监控效果展示


查看监控效果可以通过查看Monitoring---->Latest data,过滤出相应的主机及应用名进行查看,最新收集的各item的监控结果,凡是监控到数据的item会显示数据,出现灰色的表示没有监控到数据,需要排查原因。如下所示:


nginx的监控数据

也可以通过定义的Graphs查看监控效果:


nginx statur监控视图


10小结


zabbix中要实现对用户自定义的item的监控,大致过程如下:

  • 启用相应软件的性能统计功能

  • 编写性能统计数据提取脚本

  • 配置自定义的userparameter conf文件

  • 重启zabbix_agentd服务

  • zabbix server web上添加相应的模板

  • 给主机或主机组调用模板


好的内容离不开作者的持续付出,给他一次小小的打赏我们将获得持续不断的有料干货,⬇️美女和帅哥都会至少打赏1元哟 ⬇️⬇️💰


linux面授班开班倒计时

4天

学员限量招募
长按识别二维码,立刻联系红豆

今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/weixin/ad2EVNXc4E
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/2095
 
1062 次点击