专栏名称: 马哥Linux运维
马哥linux致力于linux运维培训,连续多年排名第一,订阅者可免费获得学习机会和相关Linux独家实战资料!
目录
相关文章推荐
51好读  ›  专栏  ›  马哥Linux运维

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

马哥Linux运维  · 公众号  · 运维  · 2017-05-10 09:05

正文

请到「今天看啥」查看全文



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。


8 zabbix server上配置相应的模板


这里的模板包含对nginx status和php-fpm status要监控的 item trigger Graphs 等一系列内容。对于在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天

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






请到「今天看啥」查看全文