通过ngx_status实现zabbix对nginx的监控

前言:

Zabbix监控的大致流程是:

主机(主机组)->监控项->触发器->事件->动作->报警升级->媒介->通知。

术语说明:

主机/主机组(Host):ip/主机模版

监控项(Items):监控指标item是数据收集核心

触发器(Triggers):表达式,阈值,发生状态转换会产生事件

事件(Event):关注的事情

动作(Actions):事件发生后的处理方式

报警升级:发送报警或者自定义的方案

媒介(Media types):方式:email,wechat,msn

一.安装zabbix-agent端

1,下载编译

http://iweb.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Development/3.0.0alpha2/zabbix-3.0.0alpha2.tar.gz

#groupadd zabbix

#useradd -g zabbix zabbix

#./configure --prefix=/usr/local/zabbix-agent --enable-agent&&make &&make install

2,编辑配置

# vim /usr/local/zabbix-agent/etc/zabbix_agentd.conf

Server=115.29.150.215

ServerActive=115.29.150.215

Hostname=AY140404172834963f4aZ 想要通过主机名,需要添加hosts文件记录。

User=zabbix-agent

3,启动zabbix-agent

# /usr/local/zabbix-agent/sbin/zabbix_agentd  -c /usr/local/zabbix-agent/etc/zabbix_agentd.conf

# ss -ntl | grep 10050 查看端口正常

LISTEN     0      128                       *:10050                    *:*

二.添加配置主机

在配置选项中,主机,添加主机。点击模版,选择好模版,然后点添加即可。

2016050801

添加的步骤为:添加主机,添加监控项,最后添加图形。

2016050802

三.监控nginx

原理:监控nginx的原理主要是通过调用nginx自身监控模块-with-http_stub_status_module来实现的。所以需要在编译nginx的时候编译进去。

1,下载所需我模版以脚本

# git clone https://github.com/kerncai/zabbix.git

[root@ nginx]# ls

nginx_status  nginx_status.sh  nginx_status.xml  README.md

首先在nginx.conf配置文件中添加webstatus段配置。确保可以访问即可。

server {

listen       808;

server_name  115.29.150.216;

location /nginx_status {

stub_status on;

access_log off;

allow 127.0.0.1;

allow 114.116.195.147; #授权的访问ip

deny all; }

}

2016050803

[Active connections: 2 #对后端发起的活动连接数

server accepts handled requests #处理了40次连接,创建40次握手,共103请求。

40 40 103

Reading: 0 Writing: 1 Waiting: 1  # Reading:读取客户端header数,Writing:返回客户端header数,Waiting:请求完成,等待下一次连接。]

2,在zabbix-agent配置文件加入配置

# vim /usr/local/zabbix-agent/etc/zabbix_agentd.conf

#nginx

UserParameter=Active,/usr/local/zabbix-agent/bin/nginx_status.sh Active

UserParameter=Reading,/usr/local/zabbix-agent/bin/nginx_status.sh Reading

UserParameter=Writing,/usr/local/zabbix-agent/bin/nginx_status.sh Writing

UserParameter=Waiting,/usr/local/zabbix-agent/bin/nginx_status.sh Waiting

3,复制nginx_status.sh脚本并给权限

脚本内容如下:

#!/bin/bash

Active(){

wget --quiet -O - http://localhost:808/nginx_status?auto |awk 'NR==1 {print$3}'}

Reading(){

wget --quiet -O - http://localhost:808/nginx_status?auto |awk 'NR==4 {print$2}'}

Writing(){

wget --quiet -O - http://localhost:808/nginx_status?auto |awk 'NR==4 {print$4}'}

Waiting(){

wget --quiet -O - http://localhost:808/nginx_status?auto |awk 'NR==4 {print$6}'}

$1

# cp nginx_status.sh  /usr/local/zabbix-agent/bin

# chmod +x  /usr/local/zabbix-agent/bin/nginx_status.sh

# vim /usr/local/sbin/nginx_status.sh

# sed  -i s/nginx_/web/g "nginx_status.sh" 修改原脚本nginx_为目前status路径。

4,重启agents之后,尝试用agent_get测试数据。

# /usr/local/zabbix-agent/bin/zabbix_get -s  115.29.150.216   -p 10050 -k "Active"

2

5,导入zabbix模版,并把主机加入到模版中

nginx_status.xml 把模版文件导入到zabbix模版中

20160508042016050802

导入模版之后,创建新的应用集把nginx主机连接到模版上去。最后监测是否出图。

2016050805

四.总结

在整个nginx监控中,首先需要知道的是监控zabbix是通过nginx的status页面来实的,然后就是脚本和配置文件,nginx_status(在zabbix_agent配置文件中,主要就是对nginx_status的脚本对关键内容获取) nginx_status.sh(通过nginx_status页面实时数据做采集) nginx_status.xml(监控模版)。zabbix-agent和 zabbix-server目录和启动用户建议保持一致。

以上内容pdf版本下载:通过ngx_status实现zabbix对nginx的监控.pdf


发表评论

登录 后发表评论.