Nginx监控请求statuscode纳入PMS

2019-11-08  本文已影响0人  laod_wh

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
上一篇 下一篇

猜你喜欢

热点阅读