美文网首页
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

    check_statuscode 功能介绍 本脚本通过ELK查询nginx日志统计过去一分钟所有的请求,及http...

  • 基于Nginx日志的异常监控策略

    Nginx作为所有HTTP请求的入口,是非常重要的一层。本文主要介绍如何利用 Nginx日志实时监控每个业务的请求...

  • Zabbix 监控nginx

    Nginx监控项使用nginx的statut状态来监控nginx情况,主要包括如下监控项:Active conne...

  • 接口测试返回码状态含义

    http网络请求 返回statusCode(状态码) 200、300、400、500。。。 4XXHTTP状态码表...

  • Zabbix 监控Nginx_Status模块

    Zabbix 监控Nginx服务需要通过Nginx Status模块进行监控。 一、 打开Nginx配置文件...

  • 状态码

    http网络请求 返回statusCode(状态码) 200、300、400、500。。。 201-206都表示服...

  • 2019-08-16

    请求URL浏览器返回状态码的含义(http statusCode): 如果网页自请求者上次请求后再也没有更改过,您...

  • Agent Telegraf Plugin inputs.log

    初衷 系统中使用lua扩展Nginx,实现Client请求Server的统一接入服务(鉴权,路由)。监控中心会需要...

  • 简单的ELK搭建

    1. 前言 针对nginx的访问日志需要进行一个近实时的监控,以便统计用户的访问情况,包括用户的请求IP,请求数据...

  • es实战-收集Nginx日志可视化监控

    需求场景:ES 集群通过 Nginx 做了网关代理,需要把访问 ES 集群的请求进行统计监控。使用组件:Fileb...

网友评论

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

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