zabbix监控nginx状态页面
环境说明
系统 | 服务 | ip | 主机名 |
centos7 | zabbix | 192.168.47.140 | zabbix_server |
redhat8 | nginx zabbix_agentd | 192.168.47.115 | nginx |
一、zabbix服务配置
请参考这里
[root@zabbix_server ~]# ss -anlt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:10050 *:*
LISTEN 0 128 *:10051 *:*
LISTEN 0 128 127.0.0.1:9000 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 80 :::3306 :::*
LISTEN 0 128 :::80 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
二、nginx服务配置
[root@nginx ~]# ss -anlt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
[root@nginx ~]# systemctl status nginx
● nginx.service - nginx
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2021-10-28 13:59:35 CST; 4h 12min ago
Process: 986 ExecStart=/usr/local/nginx/sbin/nginx (code=exited, status=0/SUCCESS)
Main PID: 1006 (nginx)
Tasks: 2 (limit: 11300)
Memory: 8.3M
CGroup: /system.slice/nginx.service
├─ 1006 nginx: master process /usr/local/nginx/sbin/nginx
└─282928 nginx: worker process
10月 28 13:59:35 localhost.localdomain systemd[1]: Starting nginx...
10月 28 13:59:35 localhost.localdomain systemd[1]: Started nginx.
三、nginx主机端的zabbix_agentd配置
复制资源包
[root@zabbix_server ~]# cd /usr/src/
[root@zabbix_server src]# ls
apr-1.7.0 apr-util-1.6.1 httpd-2.4.49 libzip-1.3.2 libzip-1.3.2.tar.gz php-7.4.25 php-8.0.10 zabbix-5.4.4 zabbix-5.4.4.tar.gz
[root@zabbix_server src]# scp zabbix-5.4.4.tar.gz root@192.168.47.115:/usr/src/
root@192.168.47.115's password:
zabbix-5.4.4.tar.gz 100% 23MB 74.7MB/s 00:00
安装服务
[root@nginx ~]# yum -y install vim wget gcc gcc-c++ make pcre-devel openssl openssl-devel
[root@nginx src]# useradd -r -M -s /sbin/nologin zabbix
[root@nginx ~]# cd /usr/src/
[root@nginx src]# ls
debug echo-nginx-module-master echo-nginx-module-master.tar kernels nginx-1.21.3 zabbix-5.4.4.tar.gz
[root@nginx src]# tar xf zabbix-5.4.4.tar.gz
[root@nginx src]# cd zabbix-5.4.4
[root@nginx zabbix-5.4.4]# ./configure --enable-agent
[root@nginx zabbix-5.4.4]# make install
配置服务
[root@nginx zabbix-5.4.4]# vim /usr/local/etc/zabbix_agentd.conf
Server=192.168.47.140 #113行
ServerActive=192.168.47.140 #154行
Hostname=tanjie #165行 (唯一性)也可以用生产环境建议使用随机生成的字符串
启动服务
[root@nginx ~]# zabbix_agentd
[root@nginx ~]# ss -anlt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 0.0.0.0:10050 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
四、zabbix_server端添加监控主机
五、nginx主机配置
开启状态页面
[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf
location /status {
stub_status on; #on开启 off关闭
allow 192.168.47.0/24; #应许47网段的主机访问
deny all; #剩下的拒绝
root html;
index index.html;
[root@nginx ~]# nginx -s reload
[root@nginx ~]# curl 192.168.47.115/status
Active connections: 1
server accepts handled requests
68 68 155
Reading: 0 Writing: 1 Waiting: 0
状态页面信息详解:
状态码 | 表示的意义 |
Active connections 1 | 当前所有处于打开状态的连接数 |
accepts | 总共处理了多少个连接 |
handled | 成功创建多少握手 |
requests | 总共处理了多少个请求 |
Reading | nginx读取到客户端的Header信息数,表示正处于接收请求状态的连接数 |
Writing | nginx返回给客户端的Header信息数,表示请求已经接收完成,且正处于处理请求或发送响应的过程中的连接数 |
Waiting | 开启keep-alive的情况下,这个值等于active - (reading + writing),意思就是Nginx已处理完正在等候下一次请求指令的驻留连接 |
配置脚本
#创建存放脚本目录
[root@nginx ~]# mkdir /scripts
[root@nginx ~]# cd /scripts
#监控Reading值脚本
[root@nginx scripts]# vim check_nginx_Reading.sh
[root@nginx scripts]# cat check_nginx_Reading.sh
#!/bin/bash
curl -s http://192.168.47.115/status|awk 'NR==4 {print $2}'
#监控Writing值脚本
[root@nginx scripts]# vim check_nginx_Writing.sh
[root@nginx scripts]# cat check_nginx_Writing.sh
#!/bin/bash
curl -s http://192.168.47.115/status|awk 'NR==4 {print $4}'
#监控Waiting值脚本
[root@nginx scripts]# vim check_nginx_Waiting.sh
[root@nginx scripts]# cat check_nginx_Waiting.sh
#!/bin/bash
curl -s http://192.168.47.115/status|awk 'NR==4 {print $6}'
#给权限,修改属主
[root@nginx scripts]# chmod +x check_nginx_Reading.sh check_nginx_Waiting.sh check_nginx_Writing.sh
[root@nginx scripts]# chown zabbix.zabbix check_nginx_Reading.sh check_nginx_Waiting.sh check_nginx_Writing.sh
[root@nginx scripts]# ll
总用量 12
-rwxr-xr-x. 1 zabbix zabbix 72 10月 29 03:10 check_nginx_Reading.sh
-rwxr-xr-x. 1 zabbix zabbix 72 10月 29 03:08 check_nginx_Waiting.sh
-rwxr-xr-x. 1 zabbix zabbix 72 10月 29 03:11 check_nginx_Writing.sh
#测试
[root@nginx scripts]# ./check_nginx_Reading.sh
0
[root@nginx scripts]# ./check_nginx_Waiting.sh
0
[root@nginx scripts]# ./check_nginx_Writing.sh
1
#取消这322一行的注释并把0修改为1表示启用
[root@nginx ~]# vim /usr/local/etc/zabbix_agentd.conf
UnsafeUserParameters=1
#在zabbix配置文件的最后面添加
[root@nginx ~]# vim /usr/local/etc/zabbix_agentd.conf
UserParameter=check_nginx_Reading[*],/scripts/check_nginx_Reading.sh $1
UserParameter=check_nginx_Waiting[*],/scripts/check_nginx_Waiting.sh $1
UserParameter=check_nginx_Writing[*],/scripts/check_nginx_Writing.sh $1
#重启
[root@nginx ~]# pkill zabbix
[root@nginx ~]# zabbix_agentd
六、zabbix_server配置
测试脚本是否可以访问
[root@zabbix_server ~]# zabbix_get -s 192.168.47.115 -k check_nginx_Reading
0
[root@zabbix_server ~]# zabbix_get -s 192.168.47.115 -k check_nginx_Writing
1
[root@zabbix_server ~]# zabbix_get -s 192.168.47.115 -k check_nginx_Waiting
0
添加监控项
其余两个值的监控项添加如下
例如
添加触发器
Reading数值大的原因:请求较多,处理不过来
Writing数值大的原因:对端处理能力低、网络慢
Waiting数值大的原因:说明他没干事
Waiting数值小的原因:说明他处于饱和状态