nginx内置了一个status状态的功能,通过配置可以看到nginx的运行情况,status显示的内容包括当前连接数,处于活动状态的连接数,已经处理的请求数等等,可以利用这个功能编写zabbix监控nginx的脚本。

一、agent端配置

1.编辑nginx配置文件,开启status功能

[root@stau66 ~]# vim /usr/local/nginx/conf/nginx.conf

 location / {

            root   html;

            index  index.php index.html index.htm;

        }

 

        #nginx status

        location /status {

            stub_status on;

            access_log off;

            allow 192.168.10.0/24;

            allow 127.0.0.1;

            deny all;

        }

        #error_page  404              /404.html;

 

        # redirect server error pages to the static page /50x.html

        #

        error_page   500 502 503 504  /50x.html;

1.1 nginx状态解释

Active connections  Nginx正处理的活动链接数个数;重要

server              Nginx启动到现在共处理了多少个连接。

accepts             Nginx启动到现在共成功创建几次握手。

handled requests    Nginx总共处理了几次请求。

Reading             Nginx读取到客户端的 Header 信息数。

Writing             Nginx返回给客户端的 Header 信息数。

Waiting             Nginx已经处理完正在等候下一次请求指令的驻留链接,开启。

Keep-alive的情况下,Waiting这个值等于active-(reading + writing)。

请求丢失数=(握手数-连接数)可以看出,本次状态显示没有丢失请求。

2.安装zabbix的agent端

2.1上传zabbix源码包

[root@stau66 ~]# ls

anaconda-ks.cfg  zabbix-3.4.3.tar.gz

2.2 解压

[root@stau66 ~]# tar -xvzf zabbix-3.4.3.tar.gz -C /usr/local/src

2.3 创建用户

[root@stau66 zabbix-3.4.3]# useradd -M -s /sbin/nologin zabbix

2.4 编译和安装

[root@stau66 zabbix-3.4.3]# ./configure --prefix=/usr/local/zabbix --enable-agent &&make install

2.5复制并编辑开机启动脚本

[root@stau66 zabbix-3.4.3]# cp misc/init.d/fedora/core5/zabbix_agentd /etc/init.d

[root@stau66 zabbix-3.4.3]# vim /etc/init.d/zabbix_agentd

ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_agentd" #修改此行

2.6配置agentd的配置文件

[root@stau66 ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf

Server=192.168.10.63    #zabbix server 地址,可以多个,用“,”隔开ServerActive=192.168.10.63  #主动检查的意思,主动检查主机的数据发送给 Zabbix server ServerHostname=stau66.top

UnsafeUserParameters=1

Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf  #此行需要修改和打开

2.7编写nginx监控脚本,内容如下

[root@stau66 ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/nginx_monit.sh

#/bin/bash

#Description:Automated monitoring nginx performance and process status scripts

NGINX_PORT=80

NGINX_COMMAND=$1

nginx_ping(){

/sbin/pidof nginx |wc -l

}

nginx_active(){

/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk '/Active/ {print $NF}'

}

nginx_reading(){

/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk '/Reading/ {print $2}'

}

nginx_writing(){

/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk '/Writing/ {print $4}'

}

nginx_waiting(){

/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk '/Waiting/ {print $6}'

}

nginx_accepts(){

/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk 'NR==3 {print $1}'

}

nginx_handled(){

/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk 'NR==3 {print $2}'

}

nginx_requests(){

/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk 'NR==3 {print $3}'

}

case $NGINX_COMMAND in

ping)

nginx_ping

;;

active)

nginx_active

;;

reading)

nginx_reading

;;

writing)

nginx_writing

;;

waiting)

nginx_waiting

;;

accepts)

nginx_accepts

;;

handled)

nginx_handled

;;

requests)

nginx_requests

;;

*)

echo $"USAGE:$0 {ping|active|reading|writing|waiting|accepts|handled|requests}"

esac

2.8 给脚本添加执行权限

[root@stau66 ~]# chmod +x /usr/local/zabbix/etc/zabbix_agentd.conf.d/nginx_monit.sh

2.9编辑agent端监控nginx状态配置文件,内容如下

[root@stau66 ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_znginx.conf

#

# This is a sample zabbix_agentd config file.

# Put it to /etc/zabbix_agentd.conf.d or otherwise integrate into agent config.

# Edit to your needs.

#

UserParameter=status[*],/bin/bash /usr/local/zabbix/etc/zabbix_agentd.conf.d/nginx_monit.sh \$1

2.10 重启动服务

[root@stau66 ~]# systemctl enable zabbix_agentd

zabbix_agentd.service is not a native service, redirecting to /sbin/chkconfig.

Executing /sbin/chkconfig zabbix_agentd on

[root@stau66 ~]# systemctl restart zabbix_agentd

[root@stau66 ~]# systemctl reload nginx

二、服务端配置

1)server端验证是否能获取agent端的key值

[root@stau63 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.10.66 -k status[active]

1

2)添加模板

模版名称:Template Nginx Web Status Monitor

可见的名称:NGINX STATUS MONITOR

3)定义应用集

名称:NGINX_STATUS

4)定义监控项:这里我只写了一个,其它类似添加

创建监控项要注意命名方式,能够见名知意,最关键的是键值 ,这里的键值一定要和agent端的配置文件中定义的键值一致

名称:Nginx_Status_Ping

键值:status[ping]

5)定义图形

6)自定义触发器

a. 超过50个并发连接就执行报警

名称:Excessive number of active links in nginx

表达式:{Template NGINX Web  STATUS Monitor:status[active].last()}>50

b.NGINX服务down了执行报警

名称:Nginx down on {HOST.NAME}

表达式:{Template NGINX Web  STATUS Monitor:status[ping].last(0)}=0

7)创建主机并关联模板

8)稍等一会,等待出图

开始出图

9)配合自动发送邮件脚本验证触发器效果

[root@stau66 ~]# systemctl stop nginx

收到邮件表示搭建监控nginx脚本完成

zabbix添加nginx监控的更多相关文章

  1. Zabbix 添加端口监控链接

    zabbix 添加端口监控 连接数: zabbix  配置  添加 监控项: 其他检测 方式也是 示例: zabbix 客户端配置文件添加: 编辑 zabbix_agentd.conf  添加  端口 ...

  2. [Zabbix3.0 ]添加Nginx监控

    通过Nginx的http_stub_status_module模块提供的状态信息来监控,所以在Agent端需要配置Nginx状态获取的脚本,和添加key信息等,然后在Server端配置Nginx的监控 ...

  3. zabbix的nginx监控+邮件报警

    nginx监控    下载nginx的监控模板

  4. zabbix 自定义 nginx 监控模板

    打开zabbix首页→配置→模板→创建模板模板名称:Template App NGINXagent 需添加自定义监控项:UserParameter=nginx.status[*],/bin/bash ...

  5. 给zabbix添加percona监控模板

    简单说明一下给zabbix添加的percona的监控模板. 在percona官方网站有说明怎么安装,这里记录下步骤.首先搭建好的zabbix环境. 监控插件连接 : 链接:https://pan.ba ...

  6. zabbix添加Tomcat监控

    参靠了网上一些关于zabbix添加Tomcat的监控配置,自己整理了下: 一.服务器端配置1.找到zabbix源码存放路径 # find / -name zabbix_java #/usr/local ...

  7. Zabbix 添加 WEB 监控

    添加 WEB Monitorings Web Monitoring是用来监控web程序的,可以监控到web程序的下载速度.返回码及响应时间,还支持把一组连续的web动作作为一个整体来监控. 下面我们以 ...

  8. Zabbix 企业Nginx监控

    Zabbix监控Nginx状态 1 修改Nginx配置文件,开启Nginx监控 location /nginx_status { stub_status on; access_log off; all ...

  9. zabbix 添加jvm监控

    1. zabbix 服务端安装,监控jmx 需要--enable-java zabbix 客户端不需要 --enable-java 2.zabbix_server端安装jdk 安装jdk [root@ ...

随机推荐

  1. linux下各安装包的安装方法

    <转>linux下各安装包的安装方法   一.rpm包安装方式步骤: 1.找到相应的软件包,比如soft.version.rpm,下载到本机某个目录: 2.打开一个终端,su -成root ...

  2. Window 无法完成请求的更改,找不到引用的汇编,错误代码 0X80073701

    window 10专业版,通过“启用和关闭Window功能”进行安装IIS的部分功能的时候报错: Window 无法完成请求的更改,找不到引用的汇编,错误代码 0X80073701 备注以及尝试: ( ...

  3. Android自定义万能Canvas画布

    一.需求: 1.在自定义的画布中实现可缩放手势,摇一摇可对控件进行整理排序: 2.画布中可以添加位置设定的控件,控件可以响应点击.长按.拖动事件: 3.控件A长按事件会隐藏画布中的控件除了A之外,显示 ...

  4. js关闭浏览器

                                    不存在的 告诉策划:不好意思,这个需求实现不了. 旧版本浏览器有些支持window.close()方法,目前主流浏览器都不支持,就算让你 ...

  5. (Python基础)字符串操作

    以下是我在学习过程中用的一些常用字符串操作的相关列子和具体注释,感兴趣的可以自己动手试试看 #字符串操作 name = 'my name is keep' print(name.capitalize( ...

  6. J Hello word

    jave 学习 public class Hello { public static void main (string args []) { int i = 0; for (i = 0; i < ...

  7. Android 开发 Camera类的拍照与录像

    前言 在开发Android应用的时候,如果需要调用摄像头拍照或者录像,除了通过Intent调用系统现有相机应用进行拍照录像之外,还可以通过直接调用Camera硬件去去获取摄像头进行拍照录像的操作.本篇 ...

  8. windows快速搭建FTP工具Serv-U FTP Server

    本文介绍一个简单的FTP工具,当然windows系统自带FTP工具,但是配置方法没有第三方工具来的简单可操作性好. 此工具用于搭建FTP环境,对于需要测试FTP上传功能具有极大帮助.例如球机抓拍图片上 ...

  9. visual studio 2013 几个测试工具(Nunit 3、xUnit)

    一.Nunit 3 1.在解决方案里添加一个类库——引用——右键(如下图)) 3.搜索nunit 并安装(如图) 3.注意引入命名空间并给测试类和测试方法添加特性(如图) 4.如果测试通过则为绿色(如 ...

  10. XenApp6.5产品BUG

    外网登录报错,手机登录报错问题解决: XenApp6.5产品BUG, 在WI服务器的两个web站点中修改defalut.ica文件中添加一行,CGPAddr=即可. 路径:C:\inetpub\www ...