Zabbix监控Nginx_zabbix

Zabbix监控Nginx_zabbix_02

前言

作为运维人员,我需要对Nginx的工作状态有清晰的了解,包括请求数量、已响应完成的请求数量、响应失败的请求数量,以及Nginx服务及端口监听情况是否处于运行状态等信息。当出现服务停止或大量请求响应失败时,我需要尽快获知相关情况,因此我使用了Zabbix来通过Nginx内置的运行状态模块进行一系列的监控。

Zabbix监控Nginx_监控_03

Nginx_Active:当前活跃的客户端连接数

Nginx_Reading:正在执行读操作的连接数

Nginx_Writing:正在执行写操作的连接数

Nginx_Waiting:正在等待的连接数

Nginx_Accepts:NGINX接受的客户端连接数(包括Handled+Waiting)

Nginx_Handled:成功处理的客户端连接数(包含Waiting状态连接)

Nginx_Requests:客户端请求数

一、导入官网nginx模板(官方模板不能使用情况下)
  1. 先将zabbix web端模板中Template App Nginx by Zabbix agent模板删除(先导出备份防止失败)
  2. 在官网下载​​nginx模板​​,下载时一定要和zabbix-server版本对应(我的是5.0.29)
  3. 在zabbix web端【配置】-【模板】-【导入】
二、修改配置文件,开启nginx状态

1.nginx自身的状态可以通过开启status模块来得到,如下,在zabbix-agent客户端的nginx.conf配置为文件中添加一个location:

[root@zabbix-agent2 ~]# vim /etc/nginx/nginx.conf

server {
......
#新加这个location就能得到nginx的status
#“ngx_status”与模板中{$NGINX.STUB_STATUS.PATH}宏的值一致
location /ngx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
allow 192.168.0.103; #客户端IP
deny all;
}
......
}

tips:
nginx访问控制模块:
想禁止哪个ip访问就加上deny IP,
想允许哪个ip访问就加上allow IP,
想禁止或者允许所有,则allow all或者deny all

2.重启nginx,验证nginx配置是否成功

[root@zabbix-agent2 nginx]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@zabbix-agent2 nginx]# nginx -s reload
[root@zabbix-agent2 nginx]# curl http://127.0.0.1/ngx_status
Active connections: 1
server accepts handled requests
33138 33138 22226
Reading: 0 Writing: 1 Waiting: 0

[root@zabbix-agent2 nginx]# curl http://192.168.0.103/ngx_status #本机IP
Active connections: 1
server accepts handled requests
33150 33150 22238
Reading: 0 Writing: 1 Waiting: 0

三、修改nginx模板中的宏定义
  1. 【配置】-【主机】-【宏】-【继承及主机宏】
  2. 找到​​{$NGINX.STUB_STATUS.HOST}​​后面的“localhost”修改为“192.168.0.103”
  3. 需要注意的三个参数是

{$NGINX.STUB_STATUS.HOST}:192.168.0.103
{$NGINX.STUB_STATUS.PATH}:ngx_status
{$NGINX.STUB_STATUS.PORT}:80

  1. 【更新】