zoukankan      html  css  js  c++  java
  • logstash 写入数据到elasticsearch 索引相差8小时解决办法

    问题说明

    Logstash用的UTC时间, logstash在按每天输出到elasticsearch时,因为时区使用utc,造成每天8:00才创建当天索引,而8:00以前数据则输出到昨天的索引

    # 使用logstash写入elasticsearch时的配置
    output {
    elasticsearch {
    id => "logstash-%{+YYYY.MM.dd}"
    }
    }
    1
    2
    3
    4
    5
    6
    logstash和elasticsearch是按照UTC时间的,kibana却是按照正常你所在的时区显示的,是因为kibana中可以配置时区信息。

    解决问题

    添加一个字段

    该字段利用logstash的fileter进行生成,由多种方式实现,新生成的字段为timestamp如下

    # ruby 插件实现
    ruby {
    code => "event.set('timestamp', event.get('@timestamp').time.localtime + 8*60*60)"
    }

    # grok 从日志正则匹配得到
    grok {
    match => {"message"=> "%{TIMESTAMP_ISO8601:timestamp}"}
    }

    # date 把日志时间重写为@timestamp
    #date {
    # match => ["message", "^[(?<timestamp>d{4}-d{2}-d{2} d{2}:d{2}:d{2}.d{3})"]
    # target => "@timestamp"
    # timezone => "+08:00"
    #}
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    用mutate插件对数据进行转换,提取想要的日期字段

    # convert转换为string类型,gsub只处理string类型的数据,在用正则匹配,最终得到想要的日期
    mutate {
    convert => ["timestamp", "string"]
    gsub => ["timestamp", "T([Ss]*?)Z", ""]
    gsub => ["timestamp", "-", "."]
    }
    1
    2
    3
    4
    5
    6
    配置output

    elasticsearch {
    hosts => ["localhost:9200"]
    index => "log-%{timestamp}"
    }
    1
    2
    3
    4
    注意:在使用grok进行正则匹配是,可以使用的方法可以参考这里
    https://github.com/logstash-plugins/logstash-patterns-core/blob/master/patterns/grok-patterns
    https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html
    grok 测试平台
    http://grokdebug.herokuapp.com/
    ————————————————
    版权声明:本文为CSDN博主「40kuai」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/u012881331/article/details/88313045

  • 相关阅读:
    20150603_Andriod 多个窗体数据回调
    onActivityResult传值的使用
    20150602_Andriod 向窗体传递参数
    20150601_Andriod 打开新窗体
    C# 添加.DLL 出错的解决方法
    c# 中crystal report输出PDF文件
    参考_Android中,如何新建一个界面,并且实现从当前界面切换到到刚才新建的(另外一个)界面
    andriod 新建 Activity_ Form (详细设置)
    sql in
    如何取得GridView被隐藏列的值
  • 原文地址:https://www.cnblogs.com/ExMan/p/11391565.html
Copyright © 2011-2022 走看看