logstash 2.2以上版本,nginx 错误日志切割

网上nginx错误日期切分的版本各式各样,能用的没几个,踩过很多坑,特意记录下:

if [type] == "xx_app_nginx_error_log" {
        grok    {
          patterns_dir => "/etc/logstash/conf.d/patterns"
          match => { "message" => "%{NGINXERROR_1}" }
        }
        mutate {
          #避免日期报错
          gsub => ["nginxErrorDateTime","/","-"]
          rename=>["host", "nginxErrorHost"]
        }
        #切最后一段错误信息
        if [nginxErrorInfo] {        #下面有些版本的logstash使用get会报错
            ruby{
              code => "
            new_event = LogStash::Event.new(Hash[event[‘nginxErrorInfo‘].split(‘, ‘).map{|l| l.split(‘: ‘)}])
            new_event.remove(‘@timestamp‘)
            event.append(new_event)"

            }
          }      #下面这段是用了IPIP库,不用的话可以去掉
          ipip {
            source => "client"
            target =>  "ipip"
          }
          grok {
            patterns_dir => "/etc/logstash/conf.d/patterns"
            match => {"request"=>"%{NGINXERROR_REQUEST}"}

          }
          #删除以下字段,减少重复内容
          mutate{
            remove_field => [ "message","nginxErrorInfo","request"]
          }
          }

grok详细信息

NGINXERROR_1 (?<nginxErrorDateTime>\d{4}/\d{2}/\d{2}\s+\d{2}:\d{2}:\d{2})\s+\[(?<nginxErrorType>\w+)\]\s+\S+:\s+\*\d+(?<nginxErrorMsg>[^,]+), (?<nginxErrorInfo>.*)$
NGINXERROR_REQUEST "%{WORD:method} %{URIPATH:urlPath}(?:\?(?<urlParams>[^ ]+))? HTTP/%{NUMBER:httpVersion}"

输出:

 "@version": "1",
    "@timestamp": "2016-09-07T09:46:08.078Z",
    "path": "/to/path/nginx_error.log",
    "type": "xx_app_nginx_error_log",
    "nginxErrorDateTime": "2016-09-07 17:46:07",
    "nginxErrorType": "error",
    "nginxErrorMsg": " recv() failed (104: Connection reset by peer) while reading response header from upstream",
    "nginxErrorHost": "localhost",
    "client": "223.155.36.205",
    "server": "xxxxx",
    "upstream": "\"fastcgi://127.0.0.1:9000\"",
    "host": "\"localhost\"",
    "ipip": {
      "country": "中国",
      "province": "湖南",
      "city": "邵阳",
      "carrier": "电信"
    },
    "method": "GET",
    "urlPath": "/api/test.php",
    "urlParams": "action=is_remind&ajax=1&cookie=0",
    "httpVersion": "1.1"
时间: 2024-12-19 10:13:24

logstash 2.2以上版本,nginx 错误日志切割的相关文章

Nginx错误日志整理

Nginx错误日志说明 错误日志类型 类型1: upstream timed out 类型2: connect() failed 类型3: no live upstreams 类型4: upstream prematurely closed connection 类型5: 104: Connection reset by peer 类型6: client intended to send too large body 类型7: upstream sent no valid HTTP/1.0 he

Nginx的访问日志、Nginx的日志切割、Nginx静态文件不记录日志和过期时间

Nginx的访问日志 Nginx的日志切割 Nginx静态文件不记录日志和过期时间 原文地址:http://blog.51cto.com/13515599/2086909

Nginx错误日志说明

错误日志类型 类型1: upstream timed out 类型2: connect() failed 类型3: no live upstreams 类型4: upstream prematurely closed connection 类型5: 104: Connection reset by peer 类型6: client intended to send too large body 类型7: upstream sent no valid HTTP/1.0 header 详细说明 类型

Nginx 错误日志配置

错误日志可以在 nginx.conf 的全局配置(也就是main区块)中添加,也可以在不同虚拟主机配置文件中的全局配置中单独添加 语法:error_log  file  level: // error_log 是固定的关键字,file 是错误日志的存放路径,level 是日志等级 配置实例: worker_processes 1; user nobody nobody; pid /usr/local/nginx/nginx.pid;error_log logs/error.log error;

nginx错误日志error_log日志级别

在配置nginx.conf 的时候,有一项是指定错误日志的,默认情况下你不指定也没有关系,因为nginx很少有错误日志记录的.但有时出现问题时,是有必要记录一下错误日志的,方便我们排查问题.error_log 级别分为 debug, info, notice, warn, error, crit  默认为crit, 该级别在日志名后边定义格式如下:error_log  /your/path/error.log crit;  crit 记录的日志最少,而debug记录的日志最多.如果你的nginx

nginx错误日志级别

在配置nginx.conf 的时候,有一项是指定错误日志的,默认情况下你不指定也没有关系,因为nginx很少有错误日志记录的.但有时出现问题时,是有必要记录一下错误日志的,方便我们排查问题.error_log 级别分为 debug, info, notice, warn, error, crit  默认为crit, 该级别在日志名后边定义格式如下:error_log  /your/path/error.log crit;  crit 记录的日志最少,而debug记录的日志最多.如果你的nginx

shell脚本:nginx访问日志切割与打包上传

脚本功能: 日志切割类脚本,包含:nginx的访问日志.网关设备.AC设备.认证信息等等日志,都通过ftp上传到相应的服务器进行保存. --------------- #!/bin/bash # Cut and upload nginxlog # by colin # revision on 2016-02-22 ######################################## # 功能说明:该脚本运用于切割与上传nginxlog # # 更新说明: # ############

线上nginx访问日志切割脚本

1.说明 随着时间的增加,nginx 的访问日志会越来越大,下图是新部署的线上 zabbix 监控网站运行了十几天左右产生的访问日志达到213M. 所以必须进行日志分割,要求如下: 1.每天的日志单独生成一个文件 2.保留30天的访问日志 2.编写脚本 vim /usr/local/nginx/logs/nginx_log_rotate.sh #! /bin/bash logs_path="/usr/local/nginx/logs/" log_name="access.lo

nginx下日志切割的shell

#!/bin/bash mkdir  -p   /data01/nginx_log/$(date +%Y%m%d) cp   /data01/nginx_log/access.log    /data01/nginx_log/$(date +%Y%m%d)/access-$(date +%Y%m%d).log #先复制原来的正常访问日志 cat /dev/null > /data01/nginx_log/access.log #清空原来的正常访问日志 cp   /data01/nginx_log