• kibana使用日志时间进行排序


            kibana默认的是按照客户端的采集时间(@timestamp)进行排序,这往往不是我们所需要的,我们需要的是对日志实际时间进行排序,要解决这个问题,有很多种方法,可以在elasticsearch建立索引,不采取默认的索引模式,当然这种方法比较繁琐,需要懂得如何在elasticsearch建立索引及运用索引;今天我们主要研究的是另一种方法,通logstash的过滤插件将日志时间转换成默认@timestamp进行排序;

     1、我们要解析的时间格式是标准的java日期格式:

    2019-06-18 10:21:49,755

    2、一般解析:

    input {
        stdin {}
     }
    filter {
        grok {
            match => ["message", "%{TIMESTAMP_ISO8601:times}"]
        }
     }
    output {
        stdout {
            codec=>rubydebug{}
        }
     }

    将我们的时间解析出来

    可以发现@timestamp为我们实际的采集时间,而time才是我们所需要的日志时间。

    3、使用data插件解析:

    input {
        stdin {}
     }
    filter {
        grok {
            match => ["message", "%{TIMESTAMP_ISO8601:times}"]
        }
        date {
            match => ["times", "yyyy-MM-dd HH:mm:ss,SSS"]
        }
     }
    output {
        stdout {
            codec=>rubydebug{}
        }
     }

    这里的"yyyy-MM-dd HH:mm:ss,SSS"是时间格式,常用的格式有:

    nginx access日志:"dd/MMM/yyyy:HH:mm:ss Z"
    nginx error日志:"yyyy/MM/dd HH:mm:ss"
    tomcat access日志:"dd/MMM/yyyy:HH:mm:ss Z"
    tomcat catalina.out日志:"yyyy-MM-dd HH:mm:ss,SSS"

    date其他详细内容介绍见官网https://www.elastic.co/guide/en/logstash/6.8/plugins-filters-date.html

    通过解析可以看到已经解析出我们需要的时间,但是可以看到解析出来的时间要比实际时间少了八个小时,并且第一次解析还会有提示,大致的意思是该文件已经弃用,在低版本,是可以通过修改这个文件来修复时间,现在弃用了,只能使用配置来满足需求。具体是通过在date下添加参数,并移除多余字段。

    input {
        stdin {}
     }
    filter {
        grok {
            match => ["message", "%{TIMESTAMP_ISO8601:times}"]
        }
        date {
            match => ["times", "yyyy-MM-dd HH:mm:ss,SSS"]
            locale => "en"
            timezone => "+00:00"
            remove_field => "times"
        }
     }
    output {
        stdout {
            codec=>rubydebug{}
        }
     }

    经解析

    通过最后一次解析,达到了我们的需求;

    有时候通过上面的方法,可能也会不成功,那么可以使用下面这种方法,在解析时间时,更新@timestamp事件字段;虽然是默认更新,但是由于某些原因,并不能默认解析,需要手动添加

    date {
          match => ["times", "yyyy-MM-dd HH:mm:ss"]
          target => "@timestamp"
    }

    到此本次研究结束,可以将配置导入到生产中!

  • 相关阅读:
    TransactionScope和Enterprise Libray 3.0 Data Access Application Block
    C#之父 Anders Hejlsberg
    openSUSE Linux 10.2 多语言版
    承蒙各位朋友支持与厚爱,荣获asp.net MVP荣誉
    如何在ASP.NET 2.0中定制Expression Builders
    检查Python对象
    IronPython中使用Cecil类库指南
    MSDN Magazine 4月份asp.net文章
    Reflector 插件
    WSS v3的Form身份认证
  • 原文地址:https://www.cnblogs.com/wzxmt/p/11209829.html
Copyright © 2020-2023  润新知