使用 date 插件解析字段中的日期,然后使用该日期或时间戳作为事件的 logstash 时间戳。对于排序事件和导入旧数据,日期过滤器尤其重要。如果您在事件中没有得到正确的日期,那么稍后搜索它们可能会出现问题。

如果时间戳尚未在事件中设置,logstash 将根据第一次看到事件(在输入时)创建一个时间戳。例如,对于文件输入,时间戳设置为每次读取的时间。

本文演示如何把现有的日志数据导入到 elasticsearch 中,并用日志中的时间信息设置事件的时间戳。

拆分日志信息

比如我们的日志格式如下:

[Trace] [e1a618cf-186f-49c5-b486-111e1e5f0023] [//] [:: ]

第一个字段为 loglevel,第二个字段标识 SessionID,第三个字段是产生日志的日志,第四个字段是产生日志的时间,第三、四字段记录的是本地时间,即东八区区时(哈哈,居然不是记一个 UTC 时间戳!)。

我们先使用下面的 grok 规则切分出日志中的字段:

filter {
grok {
match => {
"message" => "\[%{LOGLEVEL:loglevel}\]\s*\[(?<SessionID>.*)\]\s*\[(?<Date>%{YEAR}/%{MONTHNUM}/%{MONTHDAY})\]\s*\[(?<Time>%{HOUR}:%{MINUTE}:%{SECOND} %{INT})\]"
}
}
}

得到 json 格式的日志记录如下(Grok Debugger 的输出):

{
"loglevel": [
[
"Trace"
]
],
"SessionID": [
[
"e1a618cf-186f-49c5-b486-111e1e5f0023"
]
],
"Date": [
[
"2019/03/25"
]
],
"Time": [
[
"23:47:20 618"
]
]
}

合并日期和时间字段

把分散的两个字段合并为时间戳字段,并移除 Date 和 Time 字段:

filter {
mutate {
add_field => { "Datetime" => "%{Date} %{Time}" }
}
mutate {
remove_field => ["Date"]
}
mutate {
remove_field => ["Time"]
}
}

拼出来的 DateTime 字段中的内容格式为:

"2019/03/25 23:47:20 618"

为事件设置时间戳

下面使用 date 插件解析字段中的日期,然后使用该日期或时间戳作为事件的 logstash 时间戳:

filter {
mutate {
add_field => { "logtime" => "%{Datetime}" }
}
date {
timezone => "Asia/Chongqing"
match => ["logtime", "yyyy/MM/dd HH:mm:ss SSS"]
target => "@timestamp"
remove_field => [ "logtime" ]
}
}

这里使用了一个临时字段 logtime 来保存时间戳,原因是 date 插件会把该字段的类型转换为 date,使用一个临时的字段就不会影响到 Datetime 字段的类型(这也是自定义 @timestamp 时的常用手法)。
注意上面的 timezone 配置,如果日志中的信息是以 UTC 格式保存的,就不需要指定时区。但是笔者处理的日志中,时间信息保存的是东八区的区时,因此需要指定时区信息,date 插件才能把它转换为 UTC 时间。
下图是该记录导入后在 Kibana 中显示的情况,可以看到日期信息和时间戳是一致的:

参考:
Date filter plugin

Logstash filter 插件之 date的更多相关文章

  1. Logstash filter 插件之 grok

    本文简单介绍一下 Logstash 的过滤插件 grok. Grok 的主要功能 Grok 是 Logstash 最重要的插件.它可以解析任意文本并把它结构化.因此 Grok 是将非结构化的日志数据解 ...

  2. logstash过滤器插件filter详解及实例

    1.logstash过滤器插件filter 1.1.grok正则捕获 grok是一个十分强大的logstash filter插件,他可以通过正则解析任意文本,将非结构化日志数据弄成结构化和方便查询的结 ...

  3. ElasticSearch7.3学习(三十二)----logstash三大插件(input、filter、output)及其综合示例

    1. Logstash输入插件 1.1 input介绍 logstash支持很多数据源,比如说file,http,jdbc,s3等等 图片上面只是一少部分.详情见网址:https://www.elas ...

  4. Logstash filter 的使用

    原文地址:http://techlog.cn/article/list/10182917 概述 logstash 之所以强大和流行,与其丰富的过滤器插件是分不开的 过滤器提供的并不单单是过滤的功能,还 ...

  5. logstash之Filter插件

    Logstash之所以强悍的主要原因是filter插件:通过过滤器的各种组合可以得到我们想要的结构化数据 1:grok正则表达式 grok**正则表达式是logstash非常重要的一个环节**:可以通 ...

  6. logstash常用插件解析

    官方地址:https://www.elastic.co/guide/en/logstash-versioned-plugins/current/index.html 配置文件写法: # 日志导入inp ...

  7. 日志分析平台ELK之日志收集器logstash常用插件配置

    前文我们了解了logstash的工作流程以及基本的收集日志相关配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13761906.html:今天我们来了解下l ...

  8. logstash filter 处理json

    根据输入的json字段,分别建立索引.循环生成注册log和登录log保存到testlog文件中,结果如下: {"method":"register"," ...

  9. Logstash的插件

    Logstash的插件: input插件: File:从指定的文件中读取事件流: 使用FileWatch(Ruby Gem库)监听文件的变化. .sincedb:记录了每个被监听的文件的inode, ...

随机推荐

  1. 【Java Web开发学习】Spring MVC 拦截器HandlerInterceptor

    [Java Web开发学习]Spring MVC 拦截器HandlerInterceptor 转载:https://www.cnblogs.com/yangchongxing/p/9324119.ht ...

  2. 14个Java并发容器,你用过几个?

    作者:acupt 前言 不考虑多线程并发的情况下,容器类一般使用ArrayList.HashMap等线程不安全的类,效率更高.在并发场景下,常会用到ConcurrentHashMap.ArrayBlo ...

  3. Django序列化时间报错

    一.前言 当利用models模块从数据库获取数据时,当获的取数据序列化时,如果获取的数据中有关于时间类型的字段,则会报错,错误如下: TypeError: datetime.datetime(2018 ...

  4. jsonp跨域 封装通用方法

    jsonp跨域 封装通用方法 //用法如下 jsonp({ url:"https://www.xxxx.com", params:{wd:'b'}, callback:'show' ...

  5. ACM-ICPC 2018 南京赛区网络预赛 L. Magical Girl Haze (分层dijkstra)

    There are NN cities in the country, and MMdirectional roads from uu to v(1\le u, v\le n)v(1≤u,v≤n). ...

  6. django查询中模糊的知识点,filter(blog=blog),filter(username=username).first()--这两者只需一招让你分清QuerySet对象,和用户字典对象

    只需一招让你分清QuerySet对象,和用户字典对象 article_list = models.Article.objects.filter(blog=blog) user_obj = models ...

  7. 两个变量值交换的方法总结(js,python)

    方法一: 临时变量法 <script> var num1 = 10; var num2 = 20; var temp;//定义临时变量 temp = num1; num1 = num2; ...

  8. JVM 学习笔记二 :JVM内存区域

    一.内存分配概述

  9. pip install pyspider失败的解决办法

    td{ width:10000px } 报错 下载pycurl库 地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pycurl 选择对应的python版本 ...

  10. 深入理解 Spring Cloud 核心组件与底层原理

    一.Spring Cloud核心组件:Eureka Netflix Eureka Eureka详解 1.服务提供者 2.服务消费者 3.服务注册中心 二.Spring Cloud核心组件:Ribbon ...