• zabbix监控nginx


    一、准备环境

    主机 名称
    192.168.200.113 agent.zabbix.com

    1、关闭防火墙和安全机制

    [root@agent ~]# systemctl stop firewalld
    [root@agent ~]# setenforce 0
    [root@agent ~]# iptables -F

    二、安装nginx(已有自己组合的包,直接安装)

    1、安装

    [root@agent ~]# rpm -ivh nginx-1.15.9-1.x86_64.rpm 
    准备中...                          ################################# [100%]
    正在升级/安装...
       1:nginx-1.15.9-1                   ################################# [100%]
    
    [root@agent
    ~]# nginx -V nginx version: nginx/1.15.9 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) built with OpenSSL 1.0.2k-fips 26 Jan 2017 TLS SNI support enabled configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module

    2、修改配置文件

    [root@agent ~]# vim /usr/local/nginx/conf/nginx.conf
    server {
            listen       80;
            server_name  localhost;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            location / {
                root   html;
    
                index  index.html index.htm;
                    #stub_status on;
                    #access_log off;
            }
            location /status {
               stub_status on;
               access_log off;
            }
            #error_page  404        
    [root@agent ~]# killall -HUP nginx  //平滑重启

    3、网页测试

     4、编写zabbix监控nginx的脚本

    [root@agent ~]# vim /usr/local/zabbix/scripts/nginx-check.sh
    #!/bin/bash
    
    
    ###########################
    
    
    #zabbix monitoring script
    
    
    #
    
    
    # nginx:
    
    
    # - anything available via nginx stub-status module
    
    
    #
    
    
    ##################################
    
    
    # Contact:
    
    
    # vincent.viallet@gmail.com
    
    
    # Zabbix requested parameter
    
    
    ZBX_REQ_DATA="$1"
    
    
    ZBX_REQ_DATA_URL="$2"
    
    
    # Nginx defaults
    
    
    NGINX_STATUS_DEFAULT_URL="192.168.200.113/status" #(这里写网站的域名)
    
    
    WGET_BIN="/usr/bin/wget"
    
    
    #
    
    
    # Error handling:
    
    
    # - need to be displayable in Zabbix (avoid NOT_SUPPORTED)
    
    
    # - items need to be of type "float" (allow negative + float)
    
    
    #
    
    
    ERROR_NO_ACCESS_FILE="-0.9900"
    
    
    ERROR_NO_ACCESS="-0.9901"
    
    
    ERROR_WRONG_PARAM="-0.9902"
    
    
    ERROR_DATA="-0.9903" # either can not connect / bad host / bad port
    
    
    # Handle host and port if non-default
    
    
    if [ ! -z "$ZBX_REQ_DATA_URL" ]; then
    
    
    URL="$ZBX_REQ_DATA_URL"
    
    
    else
    
    
    URL="$NGINX_STATUS_DEFAULT_URL"
    
    
    fi# save the nginx stats in a variable for future parsing
    
    
    NGINX_STATS=$($WGET_BIN -q $URL -O - 2> /dev/null)
    
    
    # error during retrieve
    
    
    if [ $? -ne 0 -o -z "$NGINX_STATS" ]; then
    
    
    echo $ERROR_DATA
    
    
    exit 1
    
    
    fi
    
    
    #
    
    
    # Extract data from nginx stats
    
    
    #
    
    
    case $ZBX_REQ_DATA in
    
    
    active_connections) echo "$NGINX_STATS" | head -1 | cut -f3 -d' ';;
    
    
    accepted_connections) echo "$NGINX_STATS" | grep -Ev '[a-zA-Z]' | cut -f2 -d' ';;
    
    
    handled_connections) echo "$NGINX_STATS" | grep -Ev '[a-zA-Z]' | cut -f3 -d' ';;
    
    
    handled_requests) echo "$NGINX_STATS" | grep -Ev '[a-zA-Z]' | cut -f4 -d' ';;
    
    
    reading) echo "$NGINX_STATS" | tail -1 | cut -f2 -d' ';;
    
    
    writing) echo "$NGINX_STATS" | tail -1 | cut -f4 -d' ';;
    
    
    waiting) echo "$NGINX_STATS" | tail -1 | cut -f6 -d' ';;
    
    
    *) echo $ERROR_WRONG_PARAM; exit 1;;
    
    
    esac
    
    
    exit 0
    
    
    [root@agent ~]# chmod +x /usr/local/zabbix/scripts/nginx-check.sh

    5、配置agent.conf文件

    [root@agent ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
    PidFile=/tmp/zabbix_agentd.pid
    Server=192.168.200.112
    ServerActive=192.168.200.112
    Hostname=agent.zabbix.com
    LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
    Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
    UnsafeUserParameters=1
    UserParameter=mysql.version,mysql -V
    UserParameter=mysql.status[*],/usr/local/zabbix/etc/chk_mysql.sh $1
    UserParameter=mysql.ping,mysqladmin -uroot -p123123 -P3306 -h192.168.200.113  ping | grep -c alive
    
    UnsafeUserParameters=1 
    UserParameter=nginx[*],/usr/local/zabbix/scripts/nginx-check.sh "$1"

    6、重新启动

    [root@agent ~]# /etc/init.d/zabbix_agentd restart
    Zabbix agent terminated.
    Zabbix agent started.
    [root@agent ~]# netstat -anpt | grep 10050
    tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      27812/zabbix_agentd 

    7、server端(192.168.200.112)测试获取数据

    在获取数据之前server端必须安装wget

    [root@agent ~]# yum -y install wget

    agent端访问

    [root@server ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.200.113 -p 10050 -k "nginx[reading]"
    0
    
    [root@server ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.200.113 -p 10050 -k "nginx[writing]"
    1

    三、创建监控测试

     

     选择模板文件导入,导入后就可以使用了

                    

     

     

    有图像说明成功了

     

  • 相关阅读:
    What is the difference between the ways to implement inheritance in javascript.
    understand dojo/domReady!
    Using dijit/Destroyable to build safe Components
    Session Tracking Approaches
    difference between forward and sendredirect
    What is the DD in java web application
    棋牌游戏-后端架构(1)
    成为技术领导者笔记--领导的MOI模型
    最小表示法
    SGI STL rope
  • 原文地址:https://www.cnblogs.com/tanxiaojuncom/p/11799984.html
Copyright © 2020-2023  润新知