0x01 前言

nginx作为网站服务器的重要组成部分,对它的状态进行监控是十分必要的。监控的数据还可以为后期分析提供基础,能根据数据统计nginx的性能、瓶颈等等。

0x02 nginx

既然是用zabbix监控nginx,那么需要准备zabbix服务。在这里我通过zabbix agent获取相关的数据,而nginx则需要开启stub_status。

首先配置nginx,新建一个虚拟空间并写入以下内容:

然后使用curl在服务器内访问以下地址:

如果你的服务器返还了403,请将你服务器的IP也添加到白名单中:

返还的内容的解释如下:

  • Active connections:当前活动的连接数
  • server accepts handled requests:服务器处理的连接数
    • 这里有三个数字,分别是:连接数、握手数和请求数
  • Reading:成功读取到客户端Header的数量
  • Writing:返还给客户端Header的数量
  • Waiting:如果服务器开启了keep-alive
    • 那么这个数值应该为:active – (reading + writing)

0x03 脚本

zabbix没有数据处理的能力,所以我们需要使用python脚本进行预处理。在这里我使用一个GitHub上面的项目:

把整个项目clone到本地,然后将python脚本放置到适当的位置:

然后通过以下命令测试上面的配置是否有效:

0x04 zabbix agent

现在有脚本处理nginx的数据,还得告诉zabbix该如何使用这个脚本。在以下路径中创建文件,并将脚本路径按你的实际情况进行修改:

完成后需要重新启动zabbix agent:

0x05 zabbix server

在zabbix服务器端需要导入一个模版,这也能在git项目中找到。进入模版倒入页面:

导入模版:

完成后到HOST配置界面将该模版加到配置里即可:

0x06 查看

一切正常的话,稍等片刻后在Monitoring > Graphs中查看相关图表:

0x07 结语

有了数据和图表,接下来就可以设置警告阀值和邮件提醒了。当拥有大量的数据后,还可以对服务进行相应的调整,可以根据其中的规律增减服务器和带宽等操作。

还有一个很重要的功能就是可以判断是否有DDOS攻击,结合警告提醒,能最大程度低缩短危机处理的响应时间。