简介:

如何使用 Zabbix 监控 Nginx 状态 ?

1、获取 Nginx 状态( HTTP Stub Status )

shell > /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.8.
built by gcc 4.4. (Red Hat 4.4.-) (GCC)
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_static_module

## 查看编译时有没有加入状态监控模块,如果没有需要单独加载

2、配置 nginx.conf

shell > vim /usr/local/nginx/conf/nginx.conf

    location ~ /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
allow 121.142.111.210;
deny all;
}

## 在虚拟主机 server {} 中加入上面配置,也可以单独定义一个专门用于监控的虚拟主机。
## deny all , 拒绝除 allow 中的主机之外所有主机访问此 URL ,实现过程中如果遇到 403 ,有可能是你把自己测试的机器拒绝了!

3、Nginx 监控项解释

shell > curl http://127.0.0.1/nginx_status
Active connections:
server accepts handled requests Reading: Writing: Waiting:

## Active connections: 对后端发起的活动连接数
## Server accepts handled requests: Nginx 总共处理了 1 个连接,成功创建了 1 次握手(没有失败次数),总共处理了 1 个请求
## Reading: Nginx 读取到客户端的 Header 信息数
## Writing: Nginx 返回给客户端的 Header 信息数
## Waiting: 开启 keep-alive 的情况下,这个值等于 active - ( reading + writing ), 意思是 Nginx 已经处理完成,正在等待下一次请求指令的驻留连接
## 在访问效率很高,请求很快被处理完毕的情况下,Waiting 数比较多是正常的。如果 reading + writing 数较多,则说明并发访问量很大,正在处理过程中

4、编写脚本获取上面的 key 值

shell > vim /script/nginx_status.sh

#!/bin/bash

case $ in
active)
curl -s http://127.0.0.1/nginx_status | awk '/Active/ {print $3}' ;;
accepts)
curl -s http://127.0.0.1/nginx_status | awk 'NR==3 {print $1}' ;;
handled)
curl -s http://127.0.0.1/nginx_status | awk 'NR==3 {print $2}' ;;
requests)
curl -s http://127.0.0.1/nginx_status | awk 'NR==3 {print $3}' ;;
reading)
curl -s http://127.0.0.1/nginx_status | awk '/Reading/ {print $2}' ;;
writing)
curl -s http://127.0.0.1/nginx_status | awk '/Writing/ {print $4}' ;;
waiting)
curl -s http://127.0.0.1/nginx_status | awk '/Waiting/ {print $6}' ;;
*)
echo "Usage: $0 { active | accepts | handled | requests | reading | writing | waiting }" ;;
esac

## 脚本使用 curl 结合 awk 来获取 key 的值。
## -s 静默模式,如果不加 -s 参数,则获取到的结果是不正确的。

shell > chmod a+x /script/nginx_status.sh

5、添加自定义 key 配置文件

shell > vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/nginx_status.conf
## Nginx_status
UserParameter=nginx.active,/script/nginx_status.sh active
UserParameter=nginx.accepts,/script/nginx_status.sh accepts
UserParameter=nginx.handled,/script/nginx_status.sh handled
UserParameter=nginx.requests,/script/nginx_status.sh requests
UserParameter=nginx.reading,/script/nginx_status.sh reading
UserParameter=nginx.writing,/script/nginx_status.sh writing
UserParameter=nginx.waiting,/script/nginx_status.sh waiting

## 也可以直接加到 /usr/local/zabbix/etc/zabbix_agentd.conf 末尾

shell > vim /usr/local/zabbix/etc/zabbix_agentd.conf

Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf

UnsafeUserParameters=1 # 允许自定义 Key

## 添加上面配置

5、重启 Zabbix_agentd

shell > service zabbix_agentd restart

## 注意,上面全部操作都是在被监控端

6、Zabbix 服务端测试能否拿到 Key

shell > /usr/local/zabbix/bin/zabbix_get -s 123.57.79.52 -k nginx.active

## 可以获取到 key 的值,说明配置没有问题了
## 被监控端记得要开启 10050 端口

7、Zabbix 监控 Nginx 状态

## 接下来就是在 web 界面,创建模板、添加监控项了

> 创建模板

## 一起跟着我点点点 Configuration -> Templates -> Create template

Template name : Template App Nginx Service

Groups In groups : Templates

Update

> 创建应用分组

## 现在又回到了模板页,跟我一起点 Template App Nginx Service 模板后面的 Applications -> Create application

Name : Nginx status

Update

> 创建监控项

## 现在的位置是 Template App Nginx Service 模板中的 Applications 页面,跟我一起点击刚创建的 Nginx status 后面的 Items -> Create item

Name : nginx active     ## 监控项名称

Type : Zabbix agent    ## 监控类型,默认被动模式

Key : nginx.active       ## 由于是自定义 Key ,所以要自己写上去。如果使用自带的 Key ,点击 Select 选择就可以了

Type of information : Numeric( unsiqned )     ## 数据在进行类型转化之后存入数据库

Numeric( unsiqned ) : 64 位无符号整数
    Numeric( float ) : 浮点数类型
    Character :  字符串类型数据,限制为 255B
    Log : 日志文件,必须使用的 Key 为 log[]
    Text : 文本,不限制大小

Data type : Decimal     ## 数据类型用于存储 Items 中 Key 所获取的数值值,存储在不同的表中,如:history 、history_str 等表

Boolean : 在数据存储时将原本的值替换为 0 或 1,TRUE 存储为 1 ,FALSE 存储为 0 ,所有的值都区分大小写( 任何非零都为 TRUE ,0 为 FALSE )
    Octal : 八进制数的数值格式
    Decimal : 十进制数的数值格式
    Hexadecimal : 十六进制数的数值格式

## Zabbix 自动执行数据类型的格式转换

Units : 留空                                ## 单位符号,Zabbix 会自动处理接收到的数据,并且把数据转换为需要显示的格式

Use custom multiplier : 不勾选     ## 如果开启,所接收到的数据会被乘以整数或浮点数。该选项用于单位换算,KB 、MBps 换为 B 、Bps 等

Update interval( in sec ) : 30      ## 间隔多长时间通过 Items 收集数据,单位 秒

Flexible intervals :                 ## 用于设置不同时间段收集数据的间隔不同,如果设置,则此时间段按这个间隔,其余的按上面参数的间隔

New flexible interval Interval( in sec ) : 50 Period 1-7,00:00-24:00 Add :     ## 通过这里来添加一个新的时间段

History storage period( in days ) : 90     ## 历史数据保留时间

Trend storage period( in days ) : 365     ## 趋势数据保留时间

Store value : As is     ## 数据存储时的类型

As is : 无预处理

Delta( speed per second ) : 显示每秒速率的值( 例如网卡流量 )

Delta( simple change ) : 显示本次数值与上次数值的差值

Show value : As is                  ## 无预处理( 数据显示时的类型,值映射:将接收到的值映射为一个状态,不改变原值,只改变显示结果,例如将 1 映射为 Nginx service states )

New application : 留空             ## 创建一个新的应用分组

Applications : Nginx status     ## 选择一个已有的应用分组

Populates host inventory field : None     ## 将此 Item 分配给某个资产管理组

Description : 留空                                ## 对 Item 的描述信息

Enabled : 勾选                                    ## 开启此 Item

Add

## 分别定义 active | accepts | handled | requests | reading | writing | waiting 即可

8、将模板应用到主机

> 如果没有主机,跟着我点点点 Configuration -> Hosts -> Create host

Host name : 123.121.211.52     ## 被监控端 IP( 这里要写被监控端 zabbix_agentd.conf 文件中 Hostname 的值 )

Visible name : Shuma_1           ## 定义一个别名( 要显示的名字 )

Groups In groups : Shuma        ## 选择加入到一个主机组中

New group : 留空                      ## 自定义一个主机分组

Agent interfaces :                    ## 接口协议

IP address : 123.121.211.52    ## 被监控端的 IP

DNS name : 留空                      ## 监控主机能够解析的名称

Connect to : IP                        ## 选择什么方式

Port : 10050                           ## 被监控端要开放此端口

Description : 留空                    ## 对主机的描述信息

Monitored by proxy : no proxy  ## 不使用代理

Enabled : 勾选                        ## 开启监控 ( Monitored 代表主机可用,已被监控中;Not monitored 代表主机不可用,不被监控 )

Add                                      ## 代表主机添加完成( 这里先不点的啦,一并把模板链接上 )选择当前页面中的 Templates

> 现在的位置是主机页中的模板选项卡中,跟着我点点点 Select

新页面中选择 Template App Nginx Service 之后又返回来了,点击 Add 这样就成功链接模板了

Add                                     ## 最后来一次就可以啦

9、看一下劳动成果咯

> 跟着我点点点 Configuration -> Hosts

## 你会看到刚添加的主机,它有一个 Applications ,7 个 Items ,看到链接了模板,状态为 Enabled 。

> 跟着我点点点 Monitoring -> Latest data

Hosts : Select 一下刚创建的主机,注意:它在分组里面,点击 Filter

## 现在,你有没有看到 7 个监控项,并且都获取到了数据哟

10、给主机添加一个 Graph

> 跟着我点点点 Configuration -> Hosts 之后,点击刚创建的主机后面的 Graphs 就可以创建图表了

## 我临时改变主意了,直接去模板里创建比较好,这样就不用给每台主机创建了

> 跟着我点点点 Configuration -> Templates 之后,点击刚创建的模板后面的 Graphs -> Create graph

Name : Nginx status     ## 图表名称

width : 900                 ## 宽度

height : 200                ## 高度

Graph type : Normal    ## 图表类型

Normal : 常规图表,值用线条表示

Stacked : 叠图

pie : 饼图

Exploded : 分解饼图

Show legend : 勾选                    ## 显示图表说明

Show working time : 勾选           ## 非 "工作时间" 用灰色表示,不有用于饼图跟分解饼图。

Show triggers : 勾选                  ## 触发达到阈值会用红色线条显示,不能用于饼图跟分解饼图,只有部分触发器函数支持,如 min 、max

Percentile line( left ) : 不勾选      ## 左边的 Y 轴用来显示百分比,仅对常规图表适用

Percentile line( right ) : 不勾选    ## 右边的 Y 轴用来显示百分比,仅对常规图表适用

Y axix MIN value : Calculated     ## 自动计算 Y 轴最小值

Y axis MAX value : Calculated    ## 自动计算 Y 轴最大值

Items                                     ## 点击 Add 将之前的 7 个 item 都添加到一张图中

Name : Item 的名称显示的数据

Function : 当一个 Item 存在不止一个值时,显示哪一个数据( all 全部 ,min 仅最小值 ,avg 仅平均值 ,max 仅最大值 )

Draw style : Line                ## 仅对常规图表适用,对叠图填充区域适用

        Line :画线条

Filled region : 画填充区域

Bold line : 画粗线

Dot : 画圆点

Dashed line : 画虚线

Y axis side : Left                 ## Y 轴的左侧分给元素

Colour : 每种元素代表的颜色

Add                                       ## 完成 Graph 创建,如果在主机中,可以通过第二选项卡 Preview 查看

11、查看 Graph

## 由于之前已经引用了模板,所以现在主机中自动就有了此 Graph

> 跟着我点点点 Monitoring -> Graphs

Zabbix 监控 Nginx 状态的更多相关文章

  1. Zabbix监控Nginx状态信息

    首先要检查Nginx是否安装了 http_stub_status_module 模块,通过下面的命令可以看到编译参数.yum安装的默认会带有这个模块. [root@kafka60 ~]# /data/ ...

  2. zabbix 监控nginx状态

    1. 安装nginx,参考其它 [root@iZ2zeapnvuohe8p14289u6Z /]# vim /etc/nginx/nginx.conf # 加上下面 location /nginx_s ...

  3. Zabbix 监控 Nginx(四)

    简介: 如何使用 Zabbix 监控 Nginx 状态 ? 1.获取 Nginx 状态( HTTP Stub Status ) [root@localhost ~]# /apps/product/ng ...

  4. 使用Zabbix监控Nginx服务实战案例

    使用Zabbix监控Nginx服务实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.  一.编译安装nginx步骤详解并开启状态页 博主推荐阅读: https://www.cn ...

  5. zabbix监控nginx连接状态(转)

    zabbix监控nginx zabbix可以监控nginx的状态,关于一个服务的状态可以查看服务本身的状态(版本号.是否开启),还应该关注服务能力(例如以nginx的负载效果:连接数.请求数和句柄数) ...

  6. zabbix监控nginx+php-fpm,mysql+主从复制+高可用,tomcat,redis web状态

    zabbix监控对象区分 使用SNMP监控交换 使用IPMI监控服务器硬件 使用Agent监控服务器 使用JMX监控JAVA SNMP监控流程 交换机上开启snmp 在zabbix上添加监控(设置SN ...

  7. zabbix监控nginx

     nginx status详解 active connections – 活跃的连接数量server accepts handled requests — 总共处理了11989个连接 , 成功创建11 ...

  8. 使用zabbix监控nginx的活动连接数

    使用zabbix监控nginx的活动连接数 1.方法简述 zabbix可以自定义很多监控,只要是能通过命令获取到相关的值,就可以在zabbix的监控中增加该对象进行监控,在zabbix中,该对象称之为 ...

  9. Zabbix监控nginx性能的另外一种方式

    Zabbix监控nginx性能的另外一种方式 nginx和php-fpm一样内建了一个状态页,对于想了解nginx的状态以及监控nginx非常有用,为了后续的zabbix监控,我们需要先启用nginx ...

随机推荐

  1. The ServiceClass object does not implement the required method in the following form: OMElement sayHello(OMElement e)

    今天遇到一件诡异的事情,打好的同一个aar包,丢到测试环境tomcat,使用soapui测试,正常反馈结果. 丢到本地tomcat,使用soapui测试,始终报以下错误. <soapenv:En ...

  2. Eclipse中10个最有用的快捷键组合(转)

    Eclipse中10个最有用的快捷键组合 1. ctrl+shift+r:打开资源 这可能是所有快捷键组合中最省时间的了.这组快捷键可以让你打开你的工作区中任何一个文件,而你只需要按下文件名或mask ...

  3. Java系列: JAVA字符串格式化-String.format()的使用(zz)

    常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语言的同学应该记得C语言的sprintf()方法,两者有类似之处.format()方法有两种重 ...

  4. [CareerCup] 7.7 The Number with Only Prime Factors 只有质数因子的数字

    7.7 Design an algorithm to find the kth number such that the only prime factors are 3,5, and 7. 这道题跟 ...

  5. 如何加速MATLAB代码运行

    学习笔记 V1.0 2015/4/17 如何加速MATLAB代码运行 概述 本文源于LDPCC的MATLAB代码,即<CCSDS标准的LDPC编译码仿真>.由于代码的问题,在信息位长度很长 ...

  6. 『Asp.Net 组件』Asp.Net 服务器组件 内嵌JS:让自己的控件动起来

    代码: using System; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace ...

  7. SpringMVC实现Restful风格的WebService

    1.环境 JDK7 MyEclipse2014 tomcat8 maven 3.3.3 spring4.1.4 2.创建maven工程 使用MyEclipse创建maven工程的方式可以参考这篇博文( ...

  8. C#基础知识系列五(构造函数)

    前言 本节主要来学习下实例构造函数.私有构造函数和静态构造函数. 构造函数的作用: 1.当一个类在new实例化对象时,可调用构造函数进行初始化对象. 2.不带参数的构造函数称为“默认构造函数”. 无论 ...

  9. 每天一个linux命令(44):ifconfig命令

    许多windows非常熟悉ipconfig命令行工具,它被用来获取网络接口配置信息并对此进行修改.Linux系统拥有一个类似的工具,也就是ifconfig(interfaces config).通常需 ...

  10. Cas_个人理解

        分为三个部分: 1.Cas服务器(用于验证用户是否正确)        1.用户信息存在服务端,其它客户端应用程序修改用户信息后需要同步到服务端       2.用户信息一般存储在服务端的数据 ...