zabbix监控nginx状态页面

系统 IP 安装的服务
Redhat8 server 192.168.235.135 zabbix-server zabbix-agentd
CentOS8 agent 192.168.235.160 nginx zabbix-agentd
[root@wxy ~]# hostnamectl set-hostname zabbix
[root@wxy ~]# bash
[root@zabbix ~]# 
[root@localhost ~]# hostnamectl set-hostname nginx
[root@localhost ~]# bash
[root@nginx ~]# 

两边关闭防火墙和selinux
[root@zabbix ~]# systemctl disable --now firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
ot@nginx ~]# setenforce 0
setenforce: SELinux is disabled

zabbix监控nginx状态页面_第1张图片

[root@nginx ~]# nginx -V
nginx version: nginx/1.20.1
built by gcc 8.5.0 20210514 (Red Hat 8.5.0-3) (GCC) 
built with OpenSSL 1.1.1k  FIPS 25 Mar 2021
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-debug --with-http_ssl_module --with-http_realip_module --with-http_image_filter_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_stub_status_module --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log

// --with-http_stub_status_module 就是状态页面的模块,启用它

[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf
 43         location / {
 44             root   html;
 45             index  index.html index.htm;
 46         }
 47         location /status {    // 添加
 48             stub_status;      // 添加
 49         }       //  添加
 
//重新加载
[root@nginx ~]# nginx -s reload

zabbix监控nginx状态页面_第2张图片
状态页面信息详解:

状态码 表示的意义
Active connections 2 当前所有处于打开状态的连接数
accepts 总共处理了多少个连接
handled 成功创建多少握手
requests 总共处理了多少个请求
Reading nginx读取到客户端的Header信息数,表示正处于接收请求状态的连接数
Writing nginx返回给客户端的Header信息数,表示请求已经接收完成, 且正处于处理请求或发送响应的过程中的连接数
Waiting 开启keep-alive的情况下,这个值等于active - (reading + writing), 意思就是Nginx已处理完正在等候下一次请求指令的驻留连接

在nginx端编写脚本来监控nginx端的状态页面,我使用脚本监控的是Waiting的值

[root@nginx ~]# mkdir /scripts
[root@nginx ~]# cd /scripts/
[root@nginx scripts]# ls
[root@nginx scripts]# touch status.sh
[root@nginx scripts]# vim status.sh 
[root@nginx scripts]# cat status.sh 
#!/bin/bash

status=$(curl -s 192.168.235.160/status |awk 'NR==4'|awk -F: {'print $4'})

if [ $status -ge 1 ];then     //如果驻留连接大于等于1就触发报警
    echo "1"
else
    echo "0"
fi

[root@nginx scripts]# chmod +x status.sh 


修改nginx端的 zabbix_agtend.conf 配置文件

Server=192.168.235.135
ServerActive=192.168.235.135
Hostname=YvWwWVjM

322  UnsafeUserParameters=1    //取消注释,把默认的0改成1
524 # ListenBacklog=
525 UserParameter=status,/scripts/status.sh   

//重启
[root@nginx etc]# pkill zabbix_agentd 
[root@nginx etc]# zabbix_agentd 
[root@nginx etc]# ss -antl
State      Recv-Q     Send-Q         Local Address:Port          Peer Address:Port    Process     
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                    [::]:*                   
[root@nginx etc]# 

server端测试是否有问题

[root@zabbix ~]#  zabbix_get -s 192.168.235.160 -k status   
0

web界面配置

创建主机
zabbix监控nginx状态页面_第3张图片
zabbix监控nginx状态页面_第4张图片
zabbix监控nginx状态页面_第5张图片
创建监控
zabbix监控nginx状态页面_第6张图片
zabbix监控nginx状态页面_第7张图片
创建触发器
zabbix监控nginx状态页面_第8张图片
zabbix监控nginx状态页面_第9张图片
触发
zabbix监控nginx状态页面_第10张图片

zabbix监控nginx状态页面_第11张图片

你可能感兴趣的:(Linux自动化,笔记,nginx,运维)