zoukankan      html  css  js  c++  java
  • zabbix添加nginx监控

    zabbix默认自带了很多有用的监控模板,通常对主机运行状态使用默认的模板就可以了,有时候我们需要根据实际情况自定义一些监控信息。本文记录一下zabbix监控nginx服务的配置过程。捋一捋思路,整个配置过程大致如下:

    1,确定监控内容
    2,编写agent端的监控脚本
    3,配置agentd.conf文件,定义监控脚本key
    4,zabbix服务端使用zabbix_get 测试获取数据
    5,登录zabbix web配置台;

    1. 确定监控内容

    思考一下nginx有哪些信息可以监控,nginx内置了一个status状态的功能,通过配置可以看到nginx的运行情况,status显示的内容包括当前连接数,处于活动状态的连接数,已经处理的请求数等等,关于status状态页的配置在nginx启用status状态页文章有介绍,这里不再多说。

    2. 编写agent端监控脚本

    通过脚本获取status页面信息的关键值,zabbix server通过这些关键值才能生成数据图像,获取status的关键值脚本如下:

    #! /bin/bash
    #date: 2018-05-04
    # Description:zabbix监控nginx性能以及进程状态
    # Note:此脚本需要配置在被监控端,否则ping检测将会得到不符合预期的结果
    
    HOST="gudaoyufu.com"
    PORT="80"
    
    # 检测nginx进程是否存在
    function ping {
        /sbin/pidof nginx | wc -l
    }
    # 检测nginx性能
    function active {
        /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
    }
    function reading {
        /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
    }
    function writing {
        /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
    }
    function waiting {
        /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
    }
    function accepts {
        /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
    }
    function handled {
        /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
    }
    function requests {
        /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
    }
    # 执行function
    $1
    
    脚本写完先在本地测试一下
    [root@web ~]# sh /home/scripts/ngx_status.sh active
    2
    

    3. 配置zabbixd.conf,定义监控脚本key

    要使用脚本监控需要将zabbixd.conf文件中的
    UnsafeUserParameters=1 开启
    在脚本中添加定义以下各项的键值

    UserParameter=nginx.status[*],/home/scripts/ngx_status.sh $1
    

    配置好后重启zabbix-agent

    service zabbix-agent restart
    

    4. zabbix服务端使用zabbix_get 测试获取数据

    [root@centos ~]# zabbix_get -s 45.76.195.97 -k nginx.status[active]
    3
    

    服务端测试正常后就可以在web界面配置监控了,zabbix配置都是通过界面配置,要熟练配置监控,要了解zabbix的每个组件的功能及各个组件之间的关系,否则看着一堆菜单选项会无从下手。
    zabbix的配置流程大致如下:

    创建主机组 -》添加主机 -》 创建监控模板 -》 创建应用集 -》创建监控项 -》 创建图像—》创建触发器 -》 创建事件 -》创建处理动作 -》 创建用户组与用户 -》创建告警方式

    由于前面已经创建了主机组和主机,这里从配置模板开始,我们可以通过配置监控模板的方式,让所有相同的监控需求的主机都统一调用这个监控模板,这样就不用一个一个地添加监控项了。
    这篇文章只做 创建监控模板 -》 创建应用集 -》创建监控项 -》 创建图像 这三项的步奏,监控告警的内容以后再做。

    5. 登录zabbix web配置台

    下面开始页面配置
    创建模板
    定义模板信息,在创建模板的过程当中,就可以把该模板添加到指定的主机组或者主机中 返回模板页已经看到创建的模板已经生成,这时创建的模板是空模板,要在这个模板中创建应用集,监控项等,点击下图中的应用集就可以直接创建。

    创建应用集我理解为只是给整个模板组中的一部分监控项模板分类,一个模板组中可以创建不同类别的监控项,创建应用集只是起一个名字,从上图中的应用集进入后创建好应用集然后就可以在应用集中创建监控项了,见下图

    创建监控项

    创建监控项要注意命名方式,能够见名知意,最关键的是 键值 ,这里的键值一点要和agent端的配置文件中定义的键值一致

    在监控脚本中,一共定义了7个监控项,所以这里的监控项页要创建7个,重复上面的步奏,创建脚本中相应的监控项

    监控项创建好后就可以创建图像了

    创建图像

    创建图像在选择要显示的图像的监控项时可以选择多个监控项,这样就可以在一个图像中显示多个数据的线图

    图像创建完成以后就可以在看到创建的监控模板已经在工作了,在 最新数据 中可以看到创建的模板信息

    进入主机查看,创建的应用集已经在主机的应用集中,因为在刚开始创建模板时已经把模板加到该主机中了

    最后看看效果图吧

    看到创建的图像模板已经出图像了,创建图像模板时定义了4个监控项,所以这里有4个线图。

  • 相关阅读:
    PHP调用WCF提供的方法
    关于git报 warning: LF will be replaced by CRLF in README.md.的警告的解决办法
    vue中引入mui报Uncaught TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them的错误
    微信小程序报Cannot read property 'setData' of undefined的错误
    Vue那些事儿之用visual stuido code编写vue报的错误Elements in iteration expect to have 'v-bind:key' directives.
    关于xampp中无法启动mysql,Attempting to start MySQL service...的解决办法!!
    PHP的环境搭建
    新手PHP连接MySQL数据库出问题(Warning: mysqli_connect(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: YES))
    手机号码、获得当前时间,下拉框,填写限制
    团队作业(五):冲刺总结
  • 原文地址:https://www.cnblogs.com/anay/p/8994290.html
Copyright © 2011-2022 走看看