zabbix4.4监控案例之Nginx监控

  • A+
所属分类:网络技术

前面我们介绍了如何使用zabbix监控Web站点、今天我们来讲讲如何使用zabbix针对Nginx进行监控。zabbix自带Apache监控,但没有Nginx监控,所以需要针对Nginx进行自定义。但是不同着急、Nginx自身有一个stub_status模块已经把我们需要的所有信息已经统计完成了、我们只需要直接去获取就可以了。

注:在配置之前我们要先确认一下Nginx是否已经安装了http_stub_status_module模块、如果没有安装的小伙伴请自行百度安装、这里就不再详细介绍了。

 

Nginx监控项

Nginx监控项有如下这些:

  • Active Connections 当前活动连接数,其中也包括了等待状态的连接
  • accepts 接收到的连接数
  • handled 已经处理完的连接数,该数字一般和accepts一致,如果不一致那么说明Nginx出错了
  • requests 总共处理的请求数,一个连接可以有多个请求,所以该值比accpets要大
  • Reading 正在读取请求头信息的连接数
  • Writing 正在发送响应报文的连接数
  • Waiting 处于闲置状态,等待客户端发送请求的连接数

 

创建监控脚本

在创建监控脚本之前、我们需要提前去配置Nginx的Stub_Nginx模块。Nginx的配置内容如下、如果需要针对某一个虚拟主机进行监控、可以在该server下面添加对用的location即可,添加完成之后重启Nginx:

server {
        listen 80;
        server_name localhost;
        location ^/
        {
                rewrite /  /status permanent;
        }

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

 

然后我们可以在本机通过curl http://127.0.0.1/nginx_status命令拿到stub_nginx的active_connections、server、accepts、handled、requests、reading、writing、waiting等状态;这里active_connections并发数量是我们最关心的参数:

zabbix4.4监控案例之Nginx监控

 

配置完Nginx以后、我们需要通过自定义的脚本把Nginx的状态收集起来发送给zabbix。我们去zabbix的脚本目录下面创建一个nginx_status.sh文件、并插入如下内容(该脚本内容来自百度):

#!/bin/bash
#active    当前活动的客户端连接数,包括waiting连接数
#accepts    已接受的客户端连接数
#handled    已处理的连接总数
#requests  客户端请求的总数
#reading  正在读取请求头的当前连接数
#writing  将响应写回客户端的当前连接数
#waiting  等待请求空闲客户端的当前连接数

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

 

创建完成以后我们通过 bash nginx_status.sh active 命令验证一下、该脚本是否能获取到我们需要的参数、如下:

zabbix4.4监控案例之Nginx监控

 

验证完成以后我们就可以去zabbix_agentd客户端里面配置启动脚本了。这里特别需要注意的是 UnsafeUserParameters=1 必须配置(这里配置的目的是启动自定义本功能),UserParameter配置内容如下:

UserParameter=nginx_status[*],/usr/local/zabbix/alertscripts/nginx_status.sh $1

zabbix4.4监控案例之Nginx监控

然后我们重启zabbix_agentd客户端、通过zabbix_get命令验证所有配置是否正常,如果正常我们就可以拿到我们需要的参数了、如下图:

/usr/local/zabbix/bin/zabbix_get -s 127.0.0.1 -p 10050 -k 'nginx_status[requests]'

zabbix4.4监控案例之Nginx监控

 

创建监控模板

脚本验证成功以后我们就可以去创建监控模板了、我们去配置-模板里面创建 Nginx Status 模板,然后配置-主机-所有模板里面找到刚才创建的 Nginx Status 模板点击右上角创建监控项。

zabbix4.4监控案例之Nginx监控

zabbix4.4监控案例之Nginx监控

 

这里我们创建对应的Nginx监控项,例如 Nginx Active 监控项,类型选择Zabbix客户端;键值选择 nginx.status[active];信息类型为数字[无正负];更新时间1m(可以自定义),填写完成之后点击添加(其他的几个监控项请自行添加、这里就不再详细介绍了、过程都是一样的、参数不一样而已)。

注:其他的监控项键值分别是:nginx.status[accepts];nginx.status[active Connections];nginx.status[accepts];nginx.status[requests ];nginx.status[writing ];nginx.status[waiting ];nginx.status[handled]。

zabbix4.4监控案例之Nginx监控

zabbix4.4监控案例之Nginx监控

 

然后我们可以为Nginx Status监控模板添加一个图形、点击图形添加名称为Nginx Status的图形、监控项就选择我们上面刚才创建的监控项:

zabbix4.4监控案例之Nginx监控

注:这里可以同步添加触发器、为Nginx的监控提供触发器功能(请小伙伴们自行百度、比如我们当并发数量超过20以后就出发告警等)

 

应用监控模板

模板创建完成以后我们去找到对应的主机(这里必须是上面配置的Zabbix Server主机,如果选择其他主机、则Zabbix不会生效)应用该模板:

zabbix4.4监控案例之Nginx监控

 

好了、到这里zabbix4.4监控案例之Nginx监控的所有配置都已经完成了、下面我们可以去仪表板添加监控图表啦。后面我们将继续介绍、如何通过zabbix监控MySQL数据库。

zabbix4.4监控案例之Nginx监控

 

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: