zabbix监控Nginx

来源:互联网 发布:软件运营工资待遇 编辑:程序博客网 时间:2024/05/16 03:51

zabbix-server和agent之前与写过部署,这里不说了

环境

centos 6.9

部署Nginx

(1)查看是否已经安装了REPC
rpm -qa | grep “REPC”
同理 查看openssl gzip wget

(2)如果没有安装则使用yum命令安装下,需要在root权限下操作

分别是

 yum install pcre* yum install openssl* yum install zlib  yum install zlib-devel yum install wget

(3)下面开始安装nginx

wget http://nginx.org/download/nginx-1.8.0.tar.gz

(4)下载好了以后,自己找个位置复制过去,然后解压。我这里是放在了/root下

cp nginx-1.8.0.tar.gz /usr/localcd /usr/localtar -zxvf nginx-1.8.0.tar.gz

(5)解压完毕,进去,安装。

cd nginx-1.8.0./configure --prefix=/usr/local/nginx-1.8.0 \--with-http_ssl_module --with-http_spdy_module \--with-http_stub_status_module --with-pcre

注意:在zabbix agentd客户端上,查看nginx是否加载了–with-http_stub_status_module。因为zabbix监控nginx是根据nginx的Stub Status模块,抓取Status模块所提供的数据。假如以前没开启,现在想启用StubStatus 模块,在编译nginx 的时候要加上参数 –with-http_stub_status_module

(6)执行这个命令

make && make install 之后进入安装目录 然后 启动 ./sbin/nginx ps -ef|grep "nginx"查看服务是否启动 有两个服务

(7)至此 安装完毕了。

修改conf/nginx.conf  来完成配置 之后 重启nginx 服务./sbin/nginx -s reload

开启nginx status

需要使用zabbix监控nginx,首先nginx需要配置ngx_status
1. 启用nginx status配置

在默认主机里面加上location或者你希望能访问到的主机里面。

# vi /usr/local/nginx-1.8.0/conf/nginx.confserver {        listen       *:80 default_server;        server_name  _;        location /ngx_status    {        stub_status on;        access_log off;        allow all;        #deny all;}

2. 重启nginx

请依照你的环境重启你的nginx

[root@web nginx-1.8.0]# pwd/usr/local/nginx-1.8.0# ./sbin/nginx

3. 打开status页面

这里写图片描述

或者

[root@web nginx-1.8.0]# curl http://127.0.0.1/ngx_statusActive connections: 1 server accepts handled requests 1221 1221 1276 Reading: 0 Writing: 1 Waiting: 0 

4. nginx status详解

active connections – 活跃的连接数量
server accepts handled requests — 总共处理了11989个连接 , 成功创建11989次握手, 总共处理了11991个请求
reading — 读取客户端的连接数.
writing — 响应数据到客户端的数量
waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading+writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接.

zabbix监控Nginx

1.在agentd上编写监控nginx的脚本,并且设置属主和属组为zabbix,赋予执行权限。

cd  /usr/local/nginx-1.8.0cat nginx_status.sh#!/bin/bashcase $1 in    active)        curl -s http://127.0.0.1:80/ngx_status | awk '/Active/ {print $3}' ;;    accepts)        curl -s http://127.0.0.1:80/ngx_status | awk 'NR==3 {print $1}' ;;    handled)        curl -s http://127.0.0.1:80/ngx_status | awk 'NR==3 {print $2}' ;;    requests)        curl -s http://127.0.0.1:80/ngx_status | awk 'NR==3 {print $3}' ;;    reading)        curl -s http://127.0.0.1:80/ngx_status | awk '/Reading/ {print $2}' ;;    writing)        curl -s http://127.0.0.1:80/ngx_status | awk '/Writing/ {print $4}' ;;    waiting)        curl -s http://127.0.0.1:80/ngx_status | awk '/Waiting/ {print $6}' ;;    *)        echo "Usage: $0 { active | accepts | handled | requests | reading | writing | waiting }" ;;esac

修改权限

chmod +x nginx_status.sh chown zabbix.zabbix nginx_status.sh[root@web nginx-1.8.0]# ll nginx_status.sh -rwxr-xr-x. 1 zabbix zabbix 767 Oct 31 03:52 nginx_status.sh

2.修改nginx服务器上zabbix客户端的zabbix_agentd.conf配置文件,然后重启zabbix agentd客户端。

# vi /etc/zabbix/zabbix_agentd.confServer=192.168.1.10        #zabbix server端的IP地址(主动模式)ServerActive=192.168.1.10  #zabbix server端的IP地址(被动模式)Hostname=web       #本机的主机名(此处的名字需要与zabbix-server端对应)UnsafeUserParameters=1  (不安全的用户参数)###下面是添加进去的UserParameter=nginx.accepts,/usr/local/nginx-1.8.0/nginx_status.sh acceptsUserParameter=nginx.handled,/usr/local/nginx-1.8.0/nginx_status.sh handledUserParameter=nginx.requests,/usr/local/nginx-1.8.0/nginx_status.sh requestsUserParameter=nginx.connections.active,/usr/local/nginx-1.8.0/nginx_status.sh activeUserParameter=nginx.connections.reading,/usr/local/nginx-1.8.0/nginx_status.sh readingUserParameter=nginx.connections.writing,/usr/local/nginx-1.8.0/nginx_status.sh writingUserParameter=nginx.connections.waiting,/usr/local/nginx-1.8.0/nginx_status.sh waiting

3.在zabbix server 端进行zabbix_get测试,取到数据了,说明没问题。

zabbix_get 这个命令没有的话可以安装

#yum install -y zabbix-get参数说明:-s --host: 指定客户端主机名或者IP-p --port:客户端端口,默认10050-I --source-address:指定源IP,写上zabbix server的ip地址即可,一般留空,服务器如果有多ip的时候,你指定一个。-k --key:你想获取的key至于使用长参数还是短的,自己选,我经常使用-s而不是-host,太长了。来个例子咯root@zabbix:~# zabbix_get -s 192.168.93.20 -p 10060 -k "nginx.connections.reading"0root@zabbix:~# zabbix_get -s 192.168.93.20 -p 10060 -k "nginx.connections.writing"1root@zabbix:~# zabbix_get -s 192.168.93.20 -p 10060 -k "nginx.connections.waiting"0root@zabbix:~# zabbix_get -s 192.168.93.20 -p 10060 -k "nginx.connections.active"1

4.zabbix中nginx status的模板

下载地址:链接: https://pan.baidu.com/s/1dFAiuRJ 密码: 6sxv

5.登陆到zabbix服务器首页,将上面的模板导入

这里写图片描述

把nginx主机链接到nginx模板中去

这里写图片描述

这里写图片描述

到此为止,实验完毕,欢迎指正

原创粉丝点击