简介:

如何使用 Zabbix 监控 Nginx 状态 ?

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

[root@localhost ~]# /apps/product/nginx/sbin/nginx -V
nginx version: nginx/1.8.
built by gcc 4.4. (Red Hat 4.4.-) (GCC)
built with OpenSSL 1.0.1e-fips Feb
TLS SNI support enabled
configure arguments: --prefix=/apps/product/nginx --with-http_stub_status_module --with-http_realip_module --with-http_ssl_module --with-file-aio --with-pcre #查看编译时有没有加入状态监控模块,如果没有需要单独加载

2、配置 nginx.conf

[root@localhost ~]# vim /apps/product/nginx/conf/nginx.conf

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

3、Nginx 监控项解释

[root@localhost ~]# curl http://127.0.0.1/nginx_status
Active connections:
server accepts handled requests Reading: Writing: Waiting:

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

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

[root@localhost ~]# 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 参数,则获取到的结果是不正确的。

[root@localhost ~]# chmod a+x /script/nginx_status.sh 

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

[root@localhost ~]# vim /etc/zabbix/zabbix_agentd.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

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

[root@localhost ~]# vim /etc/zabbix/zabbix_agentd.conf

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

UnsafeUserParameters=1 # 允许自定义 Key

# 添加上面配置

5、重启 Zabbix_agentd

[root@localhost ~]# /etc/init.d/zabbix-agent restart

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

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

[root@localhost ~]# /usr/local/zabbix/bin/zabbix_get -s 10.10.100.24 -k nginx.active   

[root@localhost ~]# /usr/local/zabbix/bin/zabbix_get -s 10.10.100.24 -k nginx.requests

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

7、Zabbix 监控 Nginx 状态

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

1.)创建模板

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

Template name : Template App Nginx Service

Groups In groups : Templates

Update

2.) 创建应用分组

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

Name : Nginx status

Update

3.) 创建监控项

#现在的位置是 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 ) :  位无符号整数
Numeric( float ) : 浮点数类型
Character : 字符串类型数据,限制为 255B
Log : 日志文件,必须使用的 Key 为 log[]
Text : 文本,不限制大小 Data type : Decimal # 数据类型用于存储 Items 中 Key 所获取的数值值,存储在不同的表中,如:history 、history_str 等表 Boolean : 在数据存储时将原本的值替换为 或 ,TRUE 存储为 ,FALSE 存储为 ,所有的值都区分大小写( 任何非零都为 TRUE , 为 FALSE )
Octal : 八进制数的数值格式
Decimal : 十进制数的数值格式
Hexadecimal : 十六进制数的数值格式 ## Zabbix 自动执行数据类型的格式转换 Units : 留空 ## 单位符号,Zabbix 会自动处理接收到的数据,并且把数据转换为需要显示的格式 Use custom multiplier : 不勾选 ## 如果开启,所接收到的数据会被乘以整数或浮点数。该选项用于单位换算,KB 、MBps 换为 B 、Bps 等 Update interval( in sec ) : ## 间隔多长时间通过 Items 收集数据,单位 秒 Flexible intervals : ## 用于设置不同时间段收集数据的间隔不同,如果设置,则此时间段按这个间隔,其余的按上面参数的间隔 New flexible interval Interval( in sec ) : Period -,:-: Add : ## 通过这里来添加一个新的时间段 History storage period( in days ) : ## 历史数据保留时间 Trend storage period( in days ) : ## 趋势数据保留时间 Store value : As is ## 数据存储时的类型 As is : 无预处理 Delta( speed per second ) : 显示每秒速率的值( 例如网卡流量 ) Delta( simple change ) : 显示本次数值与上次数值的差值 Show value : As is ## 无预处理( 数据显示时的类型,值映射:将接收到的值映射为一个状态,不改变原值,只改变显示结果,例如将 映射为 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、将模板应用到主机

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

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

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

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

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

Agent interfaces : ## 接口协议

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

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

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

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

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

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

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

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

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

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

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

9.) 看一下劳动成果咯

1.> 跟着我点点点 Configuration --> Hosts

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

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

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

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

10、给主机添加一个 Graph(图表)

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

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

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

Name : Nginx status     ## 图表名称

width :                  ## 宽度

height :                 ## 高度

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 将之前的 个 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 就可以查看各监控图表了.

参考文档:

http://www.cnblogs.com/wangxiaoqiangs/archive/2016/04/20/5412111.html

Zabbix 监控 Nginx(四)的更多相关文章

  1. Zabbix应用四:Zabbix监控Nginx

    利用Zabbix监控Nginx 一.准备nginx监控模版: 1.1.下载nginx监控模版:  点此下载 1.2.导入模版: Zabbix管理页面,选择'配置'->'模版'->'导入': ...

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

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

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

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

  4. Zabbix 监控 Nginx 状态

    简介: 如何使用 Zabbix 监控 Nginx 状态 ? 1.获取 Nginx 状态( HTTP Stub Status ) shell > /usr/local/nginx/sbin/ngi ...

  5. 使用zabbix监控nginx

    在zabbix agentd客户端上,查看nginx是否加载了--with-http_stub_status_module.因为zabbix监控nginx是根据 nginx的Stub Status模块 ...

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

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

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

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

  8. zabbix监控nginx的性能

    1.nginx配置 需要使用zabbix监控nginx,首先nginx需要配置ngx_status,在nginx的配置文件中加入红框中的配置,然后重启nginx如下图所示: location /ngx ...

  9. zabbix监控nginx进程

    确认nginx有没有安装模块 然后在主站点下添加(二级站点) location /NginxStatus { stub_status on; access_log off; allow 127.0.0 ...

随机推荐

  1. 漫谈c++11 Thread库之使写多线程程序

    c++11中最重要的特性之一就是对多线程的支持了,然而<c++ primer>5th却没有这部分内容的介绍,着实人有点遗憾.在网上了解到了一些关于thread库的内容.这是几个比较不错的学 ...

  2. MMORPG大型游戏设计与开发(服务器 AI 基础接口)

    一个模块都往往需要统一的接口支持,特别是对于非常大型的模块,基础结构的统一性非常重要,它往往决定了其扩展对象的通用性.昨天说了AI的基本概述以及组成,作为与场景模块中核心一样重要的地位,基础部分的设计 ...

  3. 第一次打开Lightroom时的基本设置

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/5 ...

  4. Log4j

    [1]从零开始 a). 新建Java Project>>新建package>>新建java类: b). import jar包(一个就够),这里我用的是log4j-1.2.14 ...

  5. 深入浅出SQL笔记1–数据和表

    1.数据库的概念及组成 数据库是保存表和其他相关SQL结构的容器. 数据库是由各种各样的表构成的,一个数据库里面的表总是存在相互联系的关系. 数据库内的信息组成了表,表示由行和列构成的,行是一组能够描 ...

  6. hbase-site.xml中HBASE_CLASSPATH 的设置

    http://www.dataguru.cn/thread-95064-1-1.html

  7. css 实现未知图片垂直居中

    1.demo html部分 <div class="demo">      <a href="#"><img src=" ...

  8. 1264: [AHOI2006]基因匹配Match

    1264: [AHOI2006]基因匹配Match Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 982  Solved: 635[Submit][S ...

  9. Clone Graph leetcode java(DFS and BFS 基础)

    题目: Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors. ...

  10. ionic配置 问题小记

    1.用命令ionic start myApp tabs新建项目时,在最后面提示ionic\cli.js报错的问题(具体问题描述忘记了) 安装 node-inspector 即可 ,使用命令 cnpm ...