zabbix监控nginx

标签: zabbix

zabbix版本是3.4

nginx版本是1.12.2

研究了好久,终于成功了,作为一个初学者记录下

首先我是拿yum直接装的nginx和nginx所以目录都在/etc/下,nginx个人喜欢用备用模板(自己这么叫)

首先yum安装完就直接cp /etc/nginx/nginx.conf.default  /etc/nginx/nginx.conf了(nginx和zabbix怎么安装可以看我的zabbix安装文章)

 

       #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

location = /nginx_status {                         #在这里开启查看nginx状态并允许IP访问
                              stub_status on;      #复制的多只是想让大家看清location我放的位置
                              access_log  off;
                              allow 127.0.0.1;
                              allow 192.168.1.211; #(zabbix服务器的IP地址,一般是内网地址)
                              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;
        location = /50x.html {
            root   html;
        }

添加完成后,重新加载nginx

[[email protected] ~]# nginx -s reload

 

然后访问下看下状态 

[[email protected] ~]# curl 127.0.0.1/nginx_status
Active connections: 1 
server accepts handled requests
 307 307 338 
Reading: 0 Writing: 1 Waiting: 0

active connections – 活跃的连接数量
server accepts handled requests — 总共处理了10942个连接 , 成功创建10942次握手, 总共处理了10942个请求
reading — 读取客户端的连接数.
writing — 响应数据到客户端的数量
waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading+writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接.

 

然后编辑脚本,我把脚本放在了vim /etc/zabbix/scripts/nginx_status.sh 大家根据自己需要创建文件夹放置吧

别忘记给脚本加执行权限 chmod 755 /etc/zabbix/scripts/nginx_status.sh

前方高能   不知道什么原因我再网上找的就是下面的脚本 /usr/bin/curl http://$HOST:$PORT/nginx_status后面加  之后取值取不出来,我把去掉就可以,大家知道原因的欢迎给我讲解,下面的网上的,我自己也写了一个参照网上的也可以用,也附在后面吧,用case写的

#!/bin/bash
HOST="127.0.0.1"
PORT="80"

function ping {
    /sbin/pidof nginx | wc -l
}

function active {
    /usr/bin/curl http://$HOST:$PORT/nginx_status 2>/dev/null | grep 'Active' | awk '{print $NF}'
}
function reading {
    /usr/bin/curl http://$HOST:$PORT/nginx_status 2>/dev/null | grep 'Reading' | awk '{print $2}'
}
function writing {
    /usr/bin/curl http://$HOST:$PORT/nginx_status 2>/dev/null | grep 'Writing' | awk '{print $4}'
}
function waiting {
    /usr/bin/curl http://$HOST:$PORT/nginx_status 2>/dev/null | grep 'Waiting' | awk '{print $6}'
}
function accepts {
    /usr/bin/curl http://$HOST:$PORT//nginx_status 2>/dev/null | awk NR==3 | awk '{print $1}'
}
function handled {
    /usr/bin/curl http://$HOST:$PORT/nginx_status 2>/dev/null | awk NR==3 | awk '{print $2}'
}
function requests {
    /usr/bin/curl http://$HOST:$PORT/nginx_status 2>/dev/null | awk NR==3 | awk '{print $3}'
}
$1

 

 

自己用case写的,测试了也是可以用的

#!/bin/bash
HOST='127.0.0.1'
PORT=80
case $1 in
   "ping")
    /sbin/pidof nginx | wc -l
    ;;
    "active")
    curl http://$HOST:$PORT/nginx_status 2>/dev/null | grep 'Active' | awk '{print $NF}'
    ;;
    "reading")
    curl http://$HOST:$PORT/nginx_status 2>/dev/null | grep 'Reading' | awk '{print $2}'
    ;;
    "writing")
    curl http://$HOST:$PORT/nginx_status 2>/dev/null | grep 'Writing' | awk '{print $4}'
    ;;
    "waiting")
    curl http://$HOST:$PORT/nginx_status 2>/dev/null | grep 'Waiting' | awk '{print $6}'
    ;;
    "accepts")
    curl http://$HOST:$PORT//nginx_status 2>/dev/null | awk NR==3 | awk '{print $1}'
    ;;
    "handled")
    curl http://$HOST:$PORT/nginx_status 2>/dev/null | awk NR==3 | awk '{print $2}'
    ;;
    "requests")
    curl http://$HOST:$PORT/nginx_status 2>/dev/null | awk NR==3 | awk '{print $3}'
    ;;
esac

 

取个值看看吧

[[email protected] ~]# sh /etc/zabbix/scripts/nginx_status.sh active
1


下面是我自己用case写的也是可以取值,大家任选其一

[[email protected] ~]# sh /etc/zabbix/scripts/a.sh  active
1

 

还有的就是zabbix_agent的配置大家看下,要不然一会在zabbix_server会有问题

附上我的

[[email protected] ~]# grep -n '^[a-Z]' /etc/zabbix/zabbix_agentd.conf
13:PidFile=/var/run/zabbix/zabbix_agentd.pid
32:LogFile=/var/log/zabbix/zabbix_agentd.log
43:LogFileSize=0
57:DebugLevel=3
95:Server=192.168.1.211
138:ServerActive=192.168.1.211
149:Hostname=zabbix-server
267:Include=/etc/zabbix/zabbix_agentd.d/*.conf
286:UnsafeUserParameters=1

然后我把文件配置在/etc/zabbix/zabbix_agentd.d/nginx.conf  大家也可以直接添加在/etc/zabbix/zabbix_agentd.conf 看个人习惯吧 ,实际里面就一行,大家看好底下这一行脚本的路径一定要跟你写的路径一样

[[email protected] ~]# cat  /etc/zabbix/zabbix_agentd.d/nginx.conf 
UserParameter=nginx.status[*],/etc/zabbix/scripts/nginx_status.sh $1

 

添加完成后,重启zabbix-agent,我不会重启命令,我直接killall的

[[email protected] ~]# killall zabbix_agentd 
[[email protected] ~]# zabbix_agentd 

下面我们在zabbix-server端,通过zabbix_get来获取zabbix-agent也就是nginx server中的nginx status,如requests数值(zabbix_get如果没有需要yum安装zabbix-server端,zabbix-server端,zabbix-server端。说三遍

[[email protected] ~]# zabbix_get -s 192.168.1.134 -p 10050 -k nginx.status[requests]
520

如果取值没问题,就可以在zabbix-server上导入模板了

附赠模板 

http://www.ttlsa.com/wp-content/uploads/2015/10/zabbix_monitor_nginx_template_ttlsa_com.zip (模板来源于其他作者,模板作者http://www.ttlsa.com/zabbix/zabbix-monitor-nginx-performance/

下完模板就解压吧,解压到文件夹

要这个

然后就是导入模板

上图片

 

 

标题

 

 

 

 

至此zabbix监控nginx就完成了,初学有不对的地方欢迎大家指正!

版权声明:本文为sywj0715原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sywj0715/article/details/81704179

智能推荐

【Elasticsearch】查与部分增

前言: 最近感觉有好多事情要做,时间真是越来越珍贵啦 正文:     首先Elasticsearch(以下简称es)是一个基于Lucene的搜索服务器,顾名思义是查询方面的一个能手,但是他也是有一套自己的增删改的、相对而言用处较少,也比较简单所以简单略过啦: 为了撑得起搜索服务器的名号,es为查询提供了丰富的支持: 常用的term查询:  &nbs...

javaScript第一天(1)

01-JavaScript基础 核心知识点 javaScript书写位置 javaScript变量 javaScript数据类型 javaScript数据类型转换 javaScript运算符 今日学习目标 能够定义一个变量并完成变量的赋值 能够说出每一种具体的数据类型 能够数据类型之间的相互转化 能够掌握各种运算符的作用 序言 JavaScript发展历史(js) JavaScript是什么? J...

VS2015错误—严重性代码说明项目文件行 禁止显示状态错误 C4996 fopen(‘fscanf‘、strcmp):This function or variable may be unsafe.

在运行时碰到下列错误: 看错误输出,需要将fopen改为fopen_s; 1.最普通的解决方法,就是使用fopen_s替代, fopen_s()函数的用法:fopen_s(_Outptr_result_maybenull_ FILE ** _File, _In_z_ const char * _Filename, _In_z_ const char * _Mode); fopen()函数的用法:f...

Vuejs——前端学习日记(二)

Vuejs——前端学习日记(二) Vue列表显示 新的指令和属性 后续 通过之前对Vuejs进行简单项目的学习,让我对Vuejs有了初步的认识,接下来是进一步的了解。 Vue列表显示 与之前看到的声明的简单变量message,name相比,数据列表是一个更加复杂的数据,所以在显示方面也会有所不同。在HTML代码中,我们会用v-for指令来显示列表。 如果用之前那样的方法来显...

设计模式之适配器模式

一、适配器模式的背景 在现实生活中,经常出现两个对象因接口不兼容而不能在一起工作的实例,这时需要第三者进行适配。例如,讲中文的人同讲英文的人对话时需要一个翻译,用直流电的笔记本电脑接交流电源时需要一个电源适配器,用计算机访问照相机的 SD 内存卡时需要一个读卡器等。 在软件设计中也可能出现:需要开发的具有某种业务功能的组件在现有的组件库中已经存在,但它们与当前系统的接口规范不兼容,如果重新开发这些...

猜你喜欢

Spring 4.x遇到的连接数据库拒绝访问

使用了Spring JdbcTemplate连接数据库, 提示 ‘Access denied for user ‘lil’@’192.168.3.104’ (using password: YES)’ , 问题记录与解决 使用了两种方法连接数据库 使用Java读取properties配置文件读取数据库配置(没有使用spring...

Day80.html的基本内容 -HTML和CSS

Html和CSS Javase → C/S模式 → Client / Server Javaweb→B/S模式 → Browser / Server 1. 前端BS软件结构 2. 前端的开发流程 3. 网页的组成部分 页面组成: 内容(结构)、表现、行为。 4. HTML简介 5… 创建HTML文件 创建一个web工程(静态的web工程) 在工...

排序算法

(1)冒泡排序 (2)快速排序参考博客(快排原理) 参考博客(形象化过程) 快排原理: 在要排的数(比如数组A)中选择一个中心值key(比如A[0]),通过一趟排序将数组A分成两部分,其中以key为中心,key右边都比key大,key左边的都key小,然后对这两部分分别重复这个过程,直到整个有序。 整个快排的过程就简化为了一趟排序的过程,然后递归调用就行了。 一趟排序的方法: 1,定义i=0,j=...

如何在Windows中获取Mac地址?

Mac Address is a network address used to layer 2 network traffic. The communication is done between network nodes with the mac address. It is important part of computer networking. In this tutorial, w...

使用stm32cubemx快速生成fatfs例程

使用stm32cubemx快速生成fatfs例程 前言 1. cubemx生成过程 1.1 sdio相关配置 1.2 系统时钟树配置 1.3 fatfs配置 1.4 修改工程的栈空间 2. 修改工程代码 2.1 fatfs sd卡读写文件的流程 2.2 具体代码的实现 3.实验现象 前言 本文将介绍如何使用stm32cubemx快速生成一个stm32 sdio 接口的fatfs例程,并实现对sd卡...