zoukankan      html  css  js  c++  java
  • zabbix自定义监控nginx

    nginx配置ngx_status

    1.编译安装时带上--with-http_stub_status_module参数

    2.vi nginx.conf

    location ~* ^/ngx_status
        {
            stub_status on;
            access_log off;
            #allow 127.0.0.1;
            #deny all;
        }

    3.检测nginx状态配置

    #curl 127.0.0.1/ngx_status
    
    Active connections: 1 
    server accepts handled requests request_time
     235587 235587 1393175 83746941
    Reading: 0 Writing: 1 Waiting: 0 

    编写zabbix客户端脚本

    vi /usr/local/zabbix-agent/shell/nginx_check.sh

    #!/bin/bash
    
    HOST="127.0.0.1"
    PORT="80"
    # 检测nginx进程是否存在
    function ping {
        /sbin/pidof nginx | wc -l 
    }
    
    # 检测nginx性能
    function active {
        /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
    }
    function reading {
        /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
    }
    function writing {
        /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
    }
    function waiting {
        /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
    }
    function accepts {
        /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
    }
    function handled {
        /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
    }
    function requests {
        /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
    }
    # 执行function
    $1

    这里用./nginx_check.sh ping测试

    shell脚本报错:bash: ./nginx_check.sh: /bin/bash^M: bad interpreter: No such file or directory

    原因是nginx_check.sh是在windows下编辑然后上传到linux系统里执行的。.sh文件的格式为dos格式。而linux只能执行格式为unix格式的脚本。

    解决:用dos2unix命令修改

    #dos2unix xxx.sh

    再用./nginx_check.sh ping测试,通过

    配置自定义UserParameter加入zabbix客户端zabbix_agentd.conf

    为什么要自定义KEY

    有时候我们想让被监控端执行一个zabbix没有预定义的检测,zabbix的用户自定义参数功能提供了这个方法。我们可以在客户端配置文件zabbix_angentd.conf里面配置UserParameter.

    语法:UserParameter=key,command

    用户自定义参数包含一个key和一个命令,key必须整个系统唯一,配置好之后,重启客户端。

    这里我们vi zabbix_agentd.conf,加入:

    UserParameter=nginx.status[*],/usr/local/zabbix-agent/shell/nginx_check.sh  $1

    nginx.status[*]这些key将由zabbix agent执行后面的shell脚本返回,最大可以返回512KB的数据。

    然后需要重启zabbix_agentd.

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

    zabbix_get 是 zabbix 服务端的一个命令,用于检测 agent 端的配置是否正确,可以很方便地知道 key 是否能正常获取到数据,在测试自定义监控的时候特别有用

    [root@xxxx ~]# zabbix_get -h
    Zabbix get v2.2.17 (revision 65977) (27 February 2017)
    
    usage: zabbix_get [-hV] -s <host name or IP> [-p <port>] [-I <IP address>] -k <key>
    
    Options:
      -s --host <host name or IP>          Specify host name or IP address of a host  # agent 端的 ip
      -p --port <port number>              Specify port number of agent running on the host. Default is 10050  #agent 监听的端口   默认是10050
      -I --source-address <IP address>     Specify source IP address    # 如果server 端有多个网卡 可以指定通过哪个网卡进行数据获取
    
      -k --key <key of metric>             Specify key of item to retrieve value for    # 执行的参数,即key
    
      -h --help                            Give this help
      -V --version                         Display version number
    
    # 例子
    Example: zabbix_get -s 127.0.0.1 -p 10050 -k "system.cpu.load[all,avg1]"

    在服务端测试:

    zabbix操作后台导入nginx模板

    配置--模板--导入

    给该主机添加nginx的自定义监控模板

    完成后查看图形

  • 相关阅读:
    SharePoint开发
    SharePoint开发
    win32-如何识别哪个静态控件被点击
    win32
    win32-创建透明的图片按钮
    读取位图文件
    python--获得特定程序的屏幕截图并保存为文件
    win32--GetFileAttributes
    谈一下交换值之后并不能返回预料的结果
    链表--insert
  • 原文地址:https://www.cnblogs.com/xulan0922/p/9504873.html
Copyright © 2011-2022 走看看