美文网首页
Nginx监控请求statuscode纳入PMS

Nginx监控请求statuscode纳入PMS

作者: laod_wh | 来源:发表于2019-11-08 20:32 被阅读0次

    check_statuscode

    功能介绍

    本脚本通过ELK查询nginx日志统计过去一分钟所有的请求,及http返回码为4xx和5xx的请求个数,输出PMS所需的数据。

    使用前,需修改脚本第13行,uri参数中的ip为实际项目elk地址,如下:

    #修改ip即可,注意跟elasticsearch的配置文件保持一致
    uri = "http://192.168.105.118:9200/logstash*/_search"
    
    

    默认判断如下:

    1、输出状态,错误率((4xx+5xx)/all),所有请求个数、4xx请求个数、5xx请求个数

    python /usr/local/nagios/libexec/check_statuscode.py 
    Warning! One mintue Errorrate is: 1.88%, Count of all requests: 7351, count of 4xx: 138, count of 5xx: 0
    
    

    2、如果错误率大于0,Warning状态(报警);

    3、如果错误率大于5%,critical状态(严重报警);

    4、如果无错误,OK状态;

    各项目可以根据需要调整脚本报警状态,如果连续出现warning或critical可能需要人工介入判断处理。

    此脚本依赖python的requests库,如果默认python没有这个库,可以尝试本地安装,具体参见文档;

    https://www.sumaott.com/doc/static/pms/Python_env.html

    修改ELK输出

    ELK目前在项目上使用filebeat采集nginx日志后直接输出到elasticsearch,需要修改为经过logstash处理后再输出到elasticsearch。

    修改步骤如下:

    修改nginx主服务器的filebeat配置:

    grep -v '^$' /etc/filebeat/filebeat.yml |grep -v "^#"|grep -v "^  #"|grep -v "^    #"
    
    #修改后,结果如下所示,即注释掉原有output.elasticsearch,改为输出到logstash
    
    filebeat.prospectors:
    - input_type: log
      paths:
        - /usr/local/nginx/logs/access.log
    output.logstash:
      hosts: ["10.255.134.118:5044"]
    
    
    image

    修改ELK所在服务器,logstash配置:

    注意修改配置文件output中es地址为实际项目地址:

    cd /home/ELK/logstash/test/
    
    #删除test目录下无用配置文件
    
    vim filebeat.conf
    
    #添加如下文件内容
    input {
        beats {
            port => "5044"
        }
    }
    
    filter {
        json {
            source => "message"
            remove_field => "message"
        }
        mutate {
            remove_field => ["tags", "beat"]
        }
        date {
            match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
            target => ["datetime"]
        }
        geoip {
            source => "clientip"
        }
    }
    
    output {
        elasticsearch {
            hosts => "192.168.105.118:9200"
            index => "logstash-%{+YYYY.MM.dd}"
        }
    }
    
    

    修改完成后启动logstash,

    setsid /home/ELK/logstash/bin/logstash -f /home/ELK/logstash/test/ >/dev/null 2>&1 &
    
    

    推荐使用supervisior启动,具体启动方式见原来的ELK部署部分:https://www.sumaott.com/doc/static/elk/index.html

    修改ELK页面,添加logstash索引:

    登录kibana页面,点击management——>index pattern——>creat index pattern——>输入logstash-*——>Create保存,然后在discover里就可以看到logstash索引的数据了。 如下图所示: image

    添加监控至PMS

    将check_statuscode脚本上传至nginx服务器的/usr/local/nagios/libexec目录,赋予可执行权限:

    cd /usr/local/nagios/libexec
    chmod +x check_statuscode.py
    
    

    修改nrpe配置,最后一行添加:

    cd /usr/local/nagios/etc
    vim nrpe.cfg
    #添加到最后一行即可
    command[check_statuscode]=/usr/local/nagios/libexec/check_statuscode.py
    
    

    修改nagios服务端配置,最后添加:

    注意修改host_name字段为项目自己的主机名

    cd /usr/local/nagios/etc/objects/
    vim services.cfg
    
    #添加文件末尾,修改为对应项目自定义主机名
    define service{
            use                     local-service
            host_name               JNNGINX
            service_description     check_statuscode
            check_command           check_nrpe!check_statuscode
    }
    
    #最后重启nagios
    /etc/init.d/nagios restart
    
    
    监控效果如下: image

    相关文章

      网友评论

          本文标题:Nginx监控请求statuscode纳入PMS

          本文链接:https://www.haomeiwen.com/subject/izjzvctx.html