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"
}

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

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. CentOS7设置启动模式问题

    参考地址 https://www.linuxidc.com/Linux/2015-12/126356.htm

  2. 阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第2节 匿名对象_6-匿名对象的说明

    没有名字的对象,叫做匿名对象 新建一个Person类 把赵又廷赋值交给匿名对象Person里面的成员变量name 想调用里面的ShowName的话 还需要再定义一个匿名对象. 第三个对象是一个全新的. ...

  3. 阶段1 语言基础+高级_1-3-Java语言高级_03-常用API第二部分_第4节 System类_3_System类的常用方法

    复制数组

  4. SpringMvc @ModelAttribute 的用法

    参考:Spring 3.x 企业应用开发实战   第15章:SpringMvc  页码:532 ModelAttribute 从字面上解释就是模型的属性. 对于MVC框架来说是模型数据是最重要的,因为 ...

  5. git --> 工作使用流程

    [git]------git开发过程中的使用流程------[WangQi]   001.创建仓库 002.新建项目 003.初始化仓库  这一步不需要做 git init : 文件夹中会多出一个隐藏 ...

  6. Ubuntu解决Nvidia驱动缺失导致的HDMI无法输出问题

    朋友的电脑是联想Y7000,因为Nvidia驱动的问题几次头疼脑大.这次是出现了HDMI在Windows 10下输出正常,而Ubuntu系统下无法输出. 原因分析 如果通过HDMI去连接显示器以后会发 ...

  7. [Python3 填坑] 003 关键字?保留字?预留字?

    目录 1. print( 坑的信息 ) 2. 开始填坑 2.1 问题的由来 2.2 网上搜索 2.3 结论 2.4 后记 1. print( 坑的信息 ) 挖坑时间:2019/01/04 明细 坑的编 ...

  8. Win10不能远程其他远程计算机的解决办法

    Win10不能远程其他远程计算机的解决办法   转自: https://blog.csdn.net/qq_38197830/article/details/69488236 首先打开控制面板——> ...

  9. [常用类]String 类

    String 字符串是常量,一旦被赋值,就不能被更改. String str = “abc”: // "abc" 可以堪称是一个字符串对象 str = “def“: // 当把 & ...

  10. LLVM思想与功能综述

    llvm似乎还有一个奇怪的优化方法:llvm(low level virtual machine)本身就是一种抽象的.虚拟的计算机架构,其特性介于RISC和CISC之间,llvm会先将代码编译为llv ...