zabbix监控nginx

标签: zabbix

1.在需要监控的nginx客户端操作

一.如果没有nginx的话,安装nginx

可以直接yum安装,也可以源码包编译安装。
yum安装需要先配置一个nginx的yum仓库,因为centos7的
yum源并没有包含nginx包。

#nginx仓库
cd /etc/yum.repos.d

vim nginx.repo
#写入
[nginx]
name=name repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

#yum 安装nginx
yum install -y nginx

二.编辑nginx配置文件:

vim /etc/nginx/conf.d/default.conf

在里面添加nginx自带的状态模块:

 location /nginx_status
    {
        stub_status on;   //开启状态检测
        access_log off;   //不要写入访问日志
        allow 127.0.0.1;    //只允许本机去访问状态
        deny all;   //除了allow,拒绝所有
    }

在这里插入图片描述
检查nginx配置是否有错,没错的话启动:

nginx -t
systemctl start nginx

用命令行的形式检测nginx状态模块是否被加载:

curl 127.0.0.1/nginx_status

在这里插入图片描述
状态参数说明:
Active Connections:当前活动连接数,其中也包括了等待状态的连接
accepts:接收到的连接数
handled:已经处理完的连接数,该数字一般和accepts一致,如果不一致说明nginx出错了。
requests:总共处理的请求数,一个连接可以有多少个请求,所以该值可以比accepts大。
Reading:正在读取请求头信息的连接数。
Writing:正在发送响应报文的连接数。
Waiting:处于闲置状态,等待客户端发送请求的连接数。
nginx状态数会随着nginx重启清零。

三.编写一个监控nginx状态脚本,获取到状态信息:

cd /usr/local/sbin/
vim ngx_status.sh
#!/bin/bash
url="http://127.0.0.1/nginx_status"
curl=/usr/bin/curl

#检测nginx进程是否开启
function ping {
        /sbin/pidof nginx | wc -l
}

#检测nginx状态信息
function active {
        $curl $url 2>/dev/null | grep 'Active' | awk '{print $NF}'
}
function reading {
        $curl $url 2>/dev/null | grep 'Reading' | awk '{print $2}'
}
function writing {
        $curl $url 2>/dev/null | grep 'Writing' | awk '{print $4}'
}
function waiting {
        $curl $url 2>/dev/null | grep 'Waiting' | awk '{print $6}'
}
function accepts {
        $curl $url 2>/dev/null | awk NR==3 | awk '{print $1}'
}
function handled {
        $curl $url 2>/dev/null | awk NR==3 | awk '{print $2}'
}
function requests {
        $curl $url 2>/dev/null | awk NR==3 | awk '{print $3}'
}
$1
#给nginx监控加权限
chmod +x ngx_status.sh

#运行脚本

#检测是否开启
./ngx_status.sh ping
1   //开启返回1,否为0

#检测连接数active
./ngx_status.sh active

四.把zabbix_agent和nginx监控脚本关联起来

编辑zabbix_agent配置文件:

vim /etc/zabbix/zabbix_agentd.conf
#找到UserParamete=那行,再下面添加
UserParameter=nginx.status[*],/usr/local/sbin/ngx_status.sh $1

UserParameter是zabbix自定义监控脚本的一个选项,如果有多个可以写多行。
nginx.status[*]:这个参数是在zabbix里面自定义nginx_status.sh脚本的名字,方括号里面表示脚本有参数,就是$1。

2.在zabbix-server端操作

在zabbix-agent已经和监控脚本关联起来了,在server端测试有没有生效:

zabbix_get -s 192.168.247.170 -k 'nginx.status[accepts]'
// -s 源主机,就是zabbix-agent主机
//-k 后面接zabbix定义的监控脚本名字,方括号里参数

在这里插入图片描述
测试可以检测之后,最终还得以zabbix-web的形式呈现出来。

进入zabbixweb页面
在这里插入图片描述
我之前已经把nginx所在的服务器监控起来了,但是只是监控了服务器本身的一些系统参数,并没有监控应用。此次实验也是在这个基础上的(懒得在弄一次,相关的笔记我还没有写,可能等一下补充 可以在博客里找一下)。
如果手动把监控项添加进来的话,比较麻烦,需要一项项添加。所以我把这些监控项弄到了一个模板里面,然后在添加模板就简单多了。
模板下载链接:

https://pan.baidu.com/s/1PU9HzprLy7v0EU9IHbFv9g
导入模板到zabbix-web:
在这里插入图片描述
在这里插入图片描述
导入成功后,查看模块,模块名叫Template App NGINX
在这里插入图片描述
在主机中添加这个模块:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

版权声明:本文为qq_37369726原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_37369726/article/details/103383468