项目环境:

操作系统 主机名 IP地址
Centos7.6 x86_64 zabbix-server 192.168.1.18
Centos7.6 x86_64 zabbix-client 192.168.1.20

在zabbix-servre安装配置完好的前提下,进行如下操作

配置操作如下:

1. 客户端安装nginx软件

[root@Zabbix-Agent ~]# yum -y install nginx

2. 编辑主配置文件server标签下添加一个location

[root@Zabbix-Agent ~]# vim /etc/nginx/nginx.conf
location /nginx_status {
    stub_status on;
    access_log off;
    allow 127.0.0.1;
    deny all;
    }

3. 启动nginx服务

[root@Zabbix-Agent ~]# systemctl start nginx
[root@Zabbix-Agent ~]# systemctl enable nginx

4. 本地访问Nginx Status

[root@Zabbix-Agent ~]# curl -s http://127.0.0.1/nginx_status
Active connections: 1 
server accepts handled requests
 1 1 1 
Reading: 0 Writing: 1 Waiting: 0 

 
 
Nginx状态解释:
Active connections Nginx正处理的活动链接数1个
server Nginx启动到现在共处理了1个连接。
accepts Nginx启动到现在共成功创建1次握手。 
handled requests Nginx总共处理了1次请求。
Reading Nginx读取到客户端的 Header 信息数。
Writing Nginx返回给客户端的 Header 信息数。
Waiting Nginx已经处理完正在等候下一次请求指令的驻留链接,开启。

 
Keepalive的情况下,这个值等于active-(reading + writing)。
请求丢失数=(握手数-连接数)可以看出,本次状态显示没有丢失请求。

5. 编写nginx_status脚本

[root@Zabbix-Agent ~]# mkdir -p /server/scripts/
[root@Zabbix-Agent ~]# vim /server/scripts/zabbix_status.sh

#!/bin/bash
############################################################
# $Name:         nginx_status.sh
# $Version:      V1.1
# $Function:     Nginx_Status
# $Author:       Happy峰
# $organization: blog.chenjiangfeng.com
# $Create Date:  2019-05-23
# $Description:  Monitor Nginx Service Status
############################################################
#!/bin/bash

NGINX_HOST=127.0.0.1
NGINX_PORT=80  #如果端口不同仅需要修改脚本即可,否则修改xml很麻烦
NGINX_URI=/nginx_status
NGINX_COMMAND=$1

nginx_active(){
    /usr/bin/curl -s "http://${NGINX_HOST}:${NGINX_PORT}${NGINX_URI}" |awk '/Active/ {print $NF}'
}

nginx_reading(){
    /usr/bin/curl -s "http://${NGINX_HOST}:${NGINX_PORT}${NGINX_URI}" |awk '/Reading/ {print $2}'
}

nginx_writing(){
    /usr/bin/curl -s "http://${NGINX_HOST}:${NGINX_PORT}${NGINX_URI}" |awk '/Writing/ {print $4}'
       }

nginx_waiting(){
    /usr/bin/curl -s "http://${NGINX_HOST}:${NGINX_PORT}${NGINX_URI}" |awk '/Waiting/ {print $6}'
       }

nginx_accepts(){
    /usr/bin/curl -s "http://${NGINX_HOST}:${NGINX_PORT}${NGINX_URI}" |awk 'NR==3 {print $1}'
       }

nginx_handled(){
    /usr/bin/curl -s "http://${NGINX_HOST}:${NGINX_PORT}${NGINX_URI}" |awk 'NR==3 {print $2}'
       }

nginx_requests(){
    /usr/bin/curl -s "http://${NGINX_HOST}:${NGINX_PORT}${NGINX_URI}" |awk 'NR==3 {print $3}'
       }


  case $NGINX_COMMAND in
    active)
        nginx_active;
        ;;
    reading)
        nginx_reading;
        ;;
    writing)
        nginx_writing;
        ;;
    waiting)
        nginx_waiting;
        ;;
    accepts)
        nginx_accepts;
        ;;
    handled)
        nginx_handled;
        ;;
    requests)
        nginx_requests;
        ;;
          *)
echo $"USAGE:$0 {active|reading|writing|waiting|accepts|handled|requests}"
esac

6. 给脚本授予执行权限

[root@Zabbix-Agent ~]# chmod a+x /server/scripts/zabbix_status.sh

7. zabbix-agent端本地测试脚本是否能获取到数据

[root@Zabbix-Agent ~]# sh /server/scripts/zabbix_status.sh active
1
[root@Zabbix-Agent ~]# sh /server/scripts/zabbix_status.sh reading
0
[root@Zabbix-Agent ~]# sh /server/scripts/zabbix_status.sh writing
1
[root@Zabbix-Agent ~]# sh /server/scripts/zabbix_status.sh waiting
0
[root@Zabbix-Agent ~]# sh /server/scripts/zabbix_status.sh accepts
15
[root@Zabbix-Agent ~]# sh /server/scripts/zabbix_status.sh handled
16
[root@Zabbix-Agent ~]# sh /server/scripts/zabbix_status.sh requests
17
[root@Zabbix-Agent ~]# sh/server/scripts/zabbix_status.sh nginx
USAGE/etc/zabbix/scripts/zabbix_status.sh {active|reading|writing|waiting|accepts|handled|requests}

7. 在zabbix-agent配置文件添加一个自定义key

[root@Zabbix-Agent ~]# vim /etc/zabbix/zabbix_agent.d/zabbix_nginx_status.conf 
UserParameter=nginx_status[*],/bin/bash /server/scripts/zabbix_status.sh "$1"

8. 重启zabbix-agent服务

[root@Zabbix-Agent ~]# systemctl restart zabbix-agent

9. zabbix server 测试agent-key是否能获取到响应值

[root@Zabbix-Server ~]# zabbix_get -s 192.168.1.20 -k nginx_status[active]
1
[root@Zabbix-Server ~]# zabbix_get -s 192.168.1.20 -k nginx_status[reading]
0
[root@Zabbix-Server ~]# zabbix_get -s 192.168.1.20 -k nginx_status[writing]
1
[root@Zabbix-Server ~]# zabbix_get -s 192.168.1.20 -k nginx_status[accepts]
30
[root@Zabbix-Server ~]# zabbix_get -s 192.168.1.20 -k nginx_status[handled]
31
[root@Zabbix-Server ~]# zabbix_get -s 192.168.1.20 -k nginx_status[requests]
32

10. zabbix-web端添加监控主机


11. 添加监控项



12. 创建一张汇总数据的图形

zabbix4.2监控nginx的更多相关文章

  1. zabbix4.2学习笔记--监控nginx

    图解一个客户端连接开源版本的Nginx情况 Accepts(接受).Handled(已处理).Requests(请求数)是一直在增加的计数器.Active(活跃).Waiting(等待).Readin ...

  2. zabbix4.2配置监控nginx服务

    1.监控原理 通过status模块监控(--with-http_stub_status_module)  2.修改nginx配置(/etc/nginx/conf.d/default.conf) 在被监 ...

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

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

  4. Zabbix 监控 Nginx(四)

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

  5. Python 监控nginx服务是否正常

    Python 监控nginx服务是否正常 #!/usr/bin/env python import os, sys, time from time import strftime while True ...

  6. 让keepalived监控NginX的状态

    经过前面的配置,如果主服务器的keepalived停止服务,从服务器会自动接管VIP对外服务:一旦主服务器的keepalived恢复,会重新接管VIP. 但这并不是我们需要的,我们需要的是当NginX ...

  7. ngxtop:在命令行实时监控 Nginx 的神器

    Nginx网站服务器在生产环境中运行的时候需要进行实时监控.实际上,诸如Nagios, Zabbix, Munin 的网络监控软件是支持 Nginx 监控的. 如果你不需要以上软件提供的综合性报告或者 ...

  8. PHP实现简单的监控nginx日志文件功能

    此功能是为了实现,定时监控nginx生成的日志数据,并将新增的数据提交到一个接口(比如大数据的接口,让大数据来进行分析) define("MAX_SHOW", 8192*5); / ...

  9. Zabbix 监控 Nginx 状态

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

随机推荐

  1. Tengine的说明

    什么是Tengine 官方帮助文档:http://tengine.taobao.org/changelog_cn.html

  2. [LeetCode] 65. Valid Number 验证数字

    Validate if a given string can be interpreted as a decimal number. Some examples:"0" => ...

  3. C/c++语言开源项目总结

    值得学习的C语言开源项目 -1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性 ...

  4. Python代码编码规范

    目录 1. Introduction 介绍 2. A Foolish Consistency is the Hobgoblin of Little Minds 尽信书,则不如无书 3. Code la ...

  5. SpringBoot系列教程之Redis集群环境配置

    之前介绍的几篇redis的博文都是基于单机的redis基础上进行演示说明的,然而在实际的生产环境中,使用redis集群的可能性应该是大于单机版的redis的,那么集群的redis如何操作呢?它的配置和 ...

  6. 华为路由器+三层交换,路由器配置DHCP,交换机中继DHCP

    LSW14:undo terminal monitorsystem-viewsysname SW1vlan batch 10 20 30 40 66interface Ethernet0/0/1por ...

  7. Windows网络命令的相关指令(1)

    1.Ipconfig 该命令可以检查网络接口配置.如果用户系统不能到达远程主机,而同一系统的其他主机可以到达,那么用该命令对这种故障进行判断是有必要的.当主机能到达远程主机但不能到达本网主机时,则表示 ...

  8. 1、Ant和分布式介绍

    { 1.Maven 简介 2.配置Maven运行环境 3.Maven项目 4.Ant和Maven项目的简单对比 5.Maven项目之间的关系 6.War类型项目的创建(tomcat插件和资源拷贝插件) ...

  9. LeetCode 8. 字符串转换整数 (atoi)(String to Integer (atoi))

    8. 字符串转换整数 (atoi) 8. String to Integer (atoi) 题目描述 LeetCode LeetCode8. String to Integer (atoi)中等 Ja ...

  10. 设置Kafka集群的方法

    1.目标 今天,在这篇Kafka文章中,我们将看到Kafka Cluster Setup.这个Kafka集群教程为我们提供了一些设置Kafka集群的简单步骤.简而言之,为了实现Kafka服务的高可用性 ...