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

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

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

2、一般解析:

  1. input {
  2. stdin {}
  3. }
  4. filter {
  5. grok {
  6. match => ["message", "%{TIMESTAMP_ISO8601:times}"]
  7. }
  8. }
  9. output {
  10. stdout {
  11. codec=>rubydebug{}
  12. }
  13. }

将我们的时间解析出来

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

3、使用data插件解析:

  1. input {
  2. stdin {}
  3. }
  4. filter {
  5. grok {
  6. match => ["message", "%{TIMESTAMP_ISO8601:times}"]
  7. }
  8. date {
  9. match => ["times", "yyyy-MM-dd HH:mm:ss,SSS"]
  10. }
  11. }
  12. output {
  13. stdout {
  14. codec=>rubydebug{}
  15. }
  16. }

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

  1. nginx access日志:"dd/MMM/yyyy:HH:mm:ss Z"
  2. nginx error日志:"yyyy/MM/dd HH:mm:ss"
  3. tomcat access日志:"dd/MMM/yyyy:HH:mm:ss Z"
  4. 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下添加参数,并移除多余字段。

  1. input {
  2. stdin {}
  3. }
  4. filter {
  5. grok {
  6. match => ["message", "%{TIMESTAMP_ISO8601:times}"]
  7. }
  8. date {
  9. match => ["times", "yyyy-MM-dd HH:mm:ss,SSS"]
  10. locale => "en"
  11. timezone => "+00:00"
  12. remove_field => "times"
  13. }
  14. }
  15. output {
  16. stdout {
  17. codec=>rubydebug{}
  18. }
  19. }

经解析

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

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

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

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

kibana使用日志时间进行排序的更多相关文章

  1. Centos6.5使用ELK(Elasticsearch + Logstash + Kibana) 搭建日志集中分析平台实践

    Centos6.5安装Logstash ELK stack 日志管理系统 概述:   日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的 ...

  2. squid日志时间转换

    squid日志时间是unix时间戳 不利于观看 python脚本进行转换 #!/usr/bin/env python #2014-6-5 pdd import re import time impor ...

  3. 解决vsftpd日志时间问题

    解决vsftpd日志时间问题 发布时间:August 29, 2008 分类:Linux <你必须承认土也是一种艺术> <Linux下查看Apache的请求数> 最近发现vsf ...

  4. Docker Java应用日志时间和容器时间不一致

    1.在docker容器和系统时间不一致是因为docker容器的原生时区为0时区,而国内系统为东八区. 2.还有容器中运行的java应用打出的日志时间和通过date -R方式获取的容器标准时间有八个小时 ...

  5. Websphere设置JVM时区解决程序、日志时间快8小时问题

    原文链接:http://www.itpub.net/thread-1204714-1-1.html 相信很多使用Websphere的朋友会经常在Windows操作系统中遇到程序时间快8小时的问题 如果 ...

  6. 解决无法修改日志时间的问题(Local time zone must be set--see zic manual page 2019 )

    故障现象 系统日志时间晚了整整8个小时,比如现在是中午12点,日志时间为凌晨4点 date命令报错(Local time zone must be set--see zic manual page) ...

  7. Oracle归档日志所在目录时间不对&&Oracle集群日志时间显示错误

    Oracle归档日志所在目录时间不对&&Oracle集群日志时间显示错误 前言 这个问题在18年的时候遇到了,基本不注意并且集群或者数据库运行正常是很难注意到的. 忘记当时怎么发现的了 ...

  8. 基于python对B站收藏夹按照视频发布时间进行排序

    基于python对B站收藏夹按照视频发布时间进行排序 前言 在最一开始,我的B站收藏一直是存放在默认收藏夹中,但是随着视频收藏的越来越多,没有分类的视频放在一起,想在众多视频中找到想要的视频非常困难, ...

  9. JAVA实现按列表中元素的时间字段排序

    JAVA代码实现按列表中元素的时间字段排序 导语: 工作中遇到一个问题,调用第三方接口返回的数据没有按时间倒序排列,测试说要加,然后在网上找到一个解决办法,这里记录一下 需求: 如下图列表,按生日进行 ...

随机推荐

  1. Python高效率遍历文件夹寻找重复文件

    前言 为什么要写这篇文章呢...主要还是业务中有个需求,遍历一个将近200w数据的文件夹,大部分还都是视频文件那种,但是这玩意用的次数还不多,做文件夹index也不是很ok,所以写了一个脚本来处理这个 ...

  2. Java8 特性详解(一) Lambda

    为什么要使用lambda表达式 从函数式接口说起 理解Functional Interface(函数式接口)是学习Java8 lambda表达式的关键所在. 函数式接口的定义其实很简单:任何接口,如果 ...

  3. Oracle数据库SQL语句的分类

    1986年10月,美国国家标准协会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言,1987年在国际标准组织的支持下成为国际标准.不过各种通行的数据库系统其实在实践过程中都对SQL规范的作了 ...

  4. ZOJ-1610 线段树+两种查询方法(弥补我线段树区间填充的短板)

    ZOJ-1610 线段树+两种查询方法(弥补我线段树区间填充的短板) 题意 题意:给一个n,代表n次操作,接下来每次操作表示把[l,r]区间的线段涂成k的颜色其中,l,r,k的范围都是0到8000 这 ...

  5. 洛谷 P2672 推销员(贪心,模拟)

    传送门 解题思路 第一种: 对于选i家,很显然,a值前i-1家的一定会选,所以只需要考虑最后一家的选法.要么是选择a值第i大的(就不管s了),要么选择剩下的中s最大的. 我们把每一家的情况(s和a)存 ...

  6. Vert.x学习第一天

    昨天看了下异步,然后就开始了Vert.x相关知识的学习. Vert.x是当下非常流行的一套全异步框架,其优势在于轻量级.高效.非常适合作为移动端后台或是企业应用. 当然对于第一天接触这个框架的人(没错 ...

  7. P2731 骑马修栅栏 (欧拉路径)

    [题目描述] John是一个与其他农民一样懒的人.他讨厌骑马,因此从来不两次经过一个栅栏.你必须编一个程序,读入栅栏网络的描述,并计算出一条修栅栏的路径,使每个栅栏都恰好被经过一次.John能从任何一 ...

  8. GooglePlay

    如何下载googlePLay的apk文件? 1.首先要知道apk的package名: 打开GooglePlay的页面,在地址栏里就会有https://play.google.com/store/app ...

  9. 【JAVA】增强for循环for(int a : arr)

    介绍 这种有冒号的for循环叫做foreach循环,foreach语句是java5的新特征之一,在遍历数组.集合方面,foreach为开发人员提供了极大的方便. foreach语句是for语句的特殊简 ...

  10. 基本SQL查询语句

    使用Emp表和Dept表完成下列练习 Emp员工表 empno ename job Mgr Hiredate Sal Comm Deptno 员工号 员工姓名 工作 上级编号 受雇日期 薪金 佣金 部 ...