Zabbix 监控 Nginx 状态

如何使用 Zabbix 监控 Nginx 状态 ?

1、获取 Nginx 状态( HTTP Stub Status )

shell > /usr/local/nginx/sbin/nginx -V nginx version: nginx/1.8.0 built by gcc 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC) configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_static_module

## 查看编译时有没有加入状态监控模块,如果没有需要单独加载

2、配置 nginx.conf

shell > vim /usr/local/nginx/conf/nginx.conf location ~ /nginx_status { stub_status on; access_log off; allow 127.0.0.1; allow 121.142.111.210; deny all; }

## 在虚拟主机 server {} 中加入上面配置,也可以单独定义一个专门用于监控的虚拟主机。
## deny all , 拒绝除 allow 中的主机之外所有主机访问此 URL ,实现过程中如果遇到 403 ,有可能是你把自己测试的机器拒绝了!

3、Nginx 监控项解释

shell > curl http://127.0.0.1/nginx_status Active connections: 1 server accepts handled requests 1 1 1 Reading: 0 Writing: 1 Waiting: 0

## Active connections: 对后端发起的活动连接数
## Server accepts handled requests: Nginx 总共处理了 1 个连接,成功创建了 1 次握手(没有失败次数),总共处理了 1 个请求
## Reading: Nginx 读取到客户端的 Header 信息数
## Writing: Nginx 返回给客户端的 Header 信息数
## Waiting: 开启 keep-alive 的情况下,这个值等于 active - ( reading + writing ), 意思是 Nginx 已经处理完成,正在等待下一次请求指令的驻留连接
## 在访问效率很高,请求很快被处理完毕的情况下,Waiting 数比较多是正常的。如果 reading + writing 数较多,则说明并发访问量很大,正在处理过程中

4、编写脚本获取上面的 key 值

shell > vim /script/nginx_status.sh #!/bin/bash case $1 in active) curl -s http://127.0.0.1/nginx_status | awk '/Active/ {print $3}' ;; accepts) curl -s http://127.0.0.1/nginx_status | awk 'NR==3 {print $1}' ;; handled) curl -s http://127.0.0.1/nginx_status | awk 'NR==3 {print $2}' ;; requests) curl -s http://127.0.0.1/nginx_status | awk 'NR==3 {print $3}' ;; reading) curl -s http://127.0.0.1/nginx_status | awk '/Reading/ {print $2}' ;; writing) curl -s http://127.0.0.1/nginx_status | awk '/Writing/ {print $4}' ;; waiting) curl -s http://127.0.0.1/nginx_status | awk '/Waiting/ {print $6}' ;; *) echo "Usage: $0 { active | accepts | handled | requests | reading | writing | waiting }" ;; esac

## 脚本使用 curl 结合 awk 来获取 key 的值。
## -s 静默模式,如果不加 -s 参数,则获取到的结果是不正确的。

shell > chmod a+x /script/nginx_status.sh

5、添加自定义 key 配置文件

shell > vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/nginx_status.conf ## Nginx_status UserParameter=nginx.active,/script/nginx_status.sh active UserParameter=nginx.accepts,/script/nginx_status.sh accepts UserParameter=nginx.handled,/script/nginx_status.sh handled UserParameter=nginx.requests,/script/nginx_status.sh requests UserParameter=nginx.reading,/script/nginx_status.sh reading UserParameter=nginx.writing,/script/nginx_status.sh writing UserParameter=nginx.waiting,/script/nginx_status.sh waiting

## 也可以直接加到 /usr/local/zabbix/etc/zabbix_agentd.conf 末尾

shell > vim /usr/local/zabbix/etc/zabbix_agentd.conf Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf UnsafeUserParameters=1 # 允许自定义 Key

## 添加上面配置

5、重启 Zabbix_agentd

shell > service zabbix_agentd restart

## 注意,上面全部操作都是在被监控端

6、Zabbix 服务端测试能否拿到 Key

shell > /usr/local/zabbix/bin/zabbix_get -s 123.57.79.52 -k nginx.active 1

## 可以获取到 key 的值,说明配置没有问题了
## 被监控端记得要开启 10050 端口

7、Zabbix 监控 Nginx 状态

## 接下来就是在 web 界面,创建模板、添加监控项了

> 创建模板

## 一起跟着我点点点 Configuration -> Templates -> Create template

Template name : Template App Nginx Service

Groups In groups : Templates

Update

> 创建应用分组

## 现在又回到了模板页,跟我一起点 Template App Nginx Service 模板后面的 Applications -> Create application

Name : Nginx status

Update

> 创建监控项

## 现在的位置是 Template App Nginx Service 模板中的 Applications 页面,跟我一起点击刚创建的 Nginx status 后面的 Items -> Create item

Name : nginx active     ## 监控项名称

Type : Zabbix agent    ## 监控类型,默认被动模式

Key : nginx.active       ## 由于是自定义 Key ,所以要自己写上去。如果使用自带的 Key ,点击 Select 选择就可以了

Type of information : Numeric( unsiqned )     ## 数据在进行类型转化之后存入数据库

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/f2f06bf569efd0e2ca2d1d2a1e63fad9.html