`

logstash-2.3.1按日产生索引(%{+YYYY.MM.dd})产生时间比预计晚8小时问题

阅读更多
logstash-2.3.1按日产生索引(%{+YYYY.MM.dd})产生时间比预计晚8小时问题
 
由于Elasticsearch、Logstash内部,对时间类型字段,是统一采用 UTC 时间,outputs/elasticsearch中常用的 %{+YYYY.MM.dd}
这种写法必须读取 @timestamp,为了解决索引产生的时间问题,必须先解决@timestamp时区问题。结合网上资料有以下几种思路:
 
一:使用filter(目前使用)
filter{
ruby {
code => "event.timestamp.time.localtime"
}
}
filter{
ruby {
code => "event['@timestamp'] = LogStash::Timestamp.coerce(event['@timestamp'].time.localtime)"
}
}
@timestamp将采用系统当前时间
 
二:如果需要将日志文件中的日期映射成@timestamp,可以使用以下类似配置
filter{
date {
match => ["logdate", "yyyyMMddHHmmssSSS"]
locale => "cn"
timezone => "Asia/Shanghai"
}
}
其中logdate为需要被映射的字段,且数据格式是:yyyyMMddHHmmssSSS,如果无该字段或格式错误,将采用系统默认时间代替。
timezone也可以写成"+08:00",详见:http://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormat.html
如果需要删除logdate字段可以使用filter的mutate,配置如下
filter{
mutate {
remove_field => ["logdate"]
}
}
这样索引中将只保留@timestamp字段。
三:修改logstash相关配置文件
老版本(1.5之前的版本):
WithZone (org.Joda.Time.DateTimeZone::UTC)
修改为:
WithZone (org.Joda.Time.DateTimeZone.getDefault())
 
1.5以后的版本:
路径:/vendor/bundle/jruby/1.9/gems/logstash-core-(version)-java/lib/logstash/event.rb
我的例子(logstash-2.3.1):
vendor/bundle/jruby/1.9/gems/logstash-core-event-2.3.1-java/lib/logstash/timestamp.rb
63行
UTC = org.joda.time.DateTimeZone.forID(“UTC”)
修改为:
UTC = org.joda.time.DateTimeZone.getDefault()
 
解决了索引中@timestamp的问题后,依然不可以解决索引(%{+YYYY.MM.dd})产生时间比预计晚8小时问题,因为%{+YYYY.MM.dd}对应日期
在UTC时依然比时间情况晚了8小时,为了解决该问题,可以使用以下方式:
一:如果使用日期映射,最简单的方法是使日志文件中的日期+8个小时
二:使用filter
filter{
ruby {
code => "event['@timestamp'] = LogStash::Timestamp.coerce(event['@timestamp'].time.localtime + 8*60*60)"
}
}
这两种方法对于那些仅通过索引计算,且不需要通过kibana等查询展示的是可以,否则, 会出现Elasticsearch 原有的 ["now-1h" TO "now"]
这种方便的搜索语句无法正常使用的尴尬,不推荐使用。
 
三:修改配置
logstash-2.3.1/vendor/bundle/jruby/1.9/gems/logstash-core-event-2.3.1-java/lib/logstash/string_interpolation.rb
139行.withZone(org.joda.time.DateTimeZone::UTC)修改成.withZone(org.joda.time.DateTimeZone.forID('Asia/Shanghai')) 或 .withLocale(java.util.Locale::CHINA)
 
至于如何定位到string_interpolation.rb文件
1:使用filter的mutate删除@timestamp字段
filter{
mutate {
remove_field => ["@timestamp"]
}
}
2:重启配置会出现如下堆栈错误
LogStash::Error: Unable to format in string "YYYY.MM.dd", @timestamp field not found
evaluate at /home/cloud/tools/ELK/logstash-2.3.1/vendor/bundle/jruby/1.9/gems/logstash-core-event-2.3.1-java/lib/logstash/string_interpolation.rb:145
evaluate at /home/cloud/tools/ELK/logstash-2.3.1/vendor/bundle/jruby/1.9/gems/logstash-core-event-2.3.1-java/lib/logstash/string_interpolation.rb:90
collect at org/jruby/RubyArray.java:2409
evaluate at /home/cloud/tools/ELK/logstash-2.3.1/vendor/bundle/jruby/1.9/gems/logstash-core-event-2.3.1-java/lib/logstash/string_interpolation.rb:90
evaluate at /home/cloud/tools/ELK/logstash-2.3.1/vendor/bundle/jruby/1.9/gems/logstash-core-event-2.3.1-java/lib/logstash/string_interpolation.rb:27
sprintf at /home/cloud/tools/ELK/logstash-2.3.1/vendor/bundle/jruby/1.9/gems/logstash-core-event-2.3.1-java/lib/logstash/event.rb:199
event_action_params at /home/cloud/tools/ELK/logstash-2.3.1/vendor/bundle/jruby/1.9/gems/logstash-output-elasticsearch-2.5.5-java/lib/logstash/outputs/elasticsearch/common.rb:131
event_action_tuple at /home/cloud/tools/ELK/logstash-2.3.1/vendor/bundle/jruby/1.9/gems/logstash-output-elasticsearch-2.5.5-java/lib/logstash/outputs/elasticsearch/common.rb:35
multi_receive at /home/cloud/tools/ELK/logstash-2.3.1/vendor/bundle/jruby/1.9/gems/logstash-output-elasticsearch-2.5.5-java/lib/logstash/outputs/elasticsearch/common.rb:29
map at org/jruby/RubyArray.java:2414
multi_receive at /home/cloud/tools/ELK/logstash-2.3.1/vendor/bundle/jruby/1.9/gems/logstash-output-elasticsearch-2.5.5-java/lib/logstash/outputs/elasticsearch/common.rb:29
each_slice at org/jruby/RubyArray.java:1653
multi_receive at /home/cloud/tools/ELK/logstash-2.3.1/vendor/bundle/jruby/1.9/gems/logstash-output-elasticsearch-2.5.5-java/lib/logstash/outputs/elasticsearch/common.rb:28
worker_multi_receive at /home/cloud/tools/ELK/logstash-2.3.1/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.1-java/lib/logstash/output_delegator.rb:130
multi_receive at /home/cloud/tools/ELK/logstash-2.3.1/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.1-java/lib/logstash/output_delegator.rb:114
output_batch at /home/cloud/tools/ELK/logstash-2.3.1/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.1-java/lib/logstash/pipeline.rb:301
each at org/jruby/RubyHash.java:1342
output_batch at /home/cloud/tools/ELK/logstash-2.3.1/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.1-java/lib/logstash/pipeline.rb:301
worker_loop at /home/cloud/tools/ELK/logstash-2.3.1/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.1-java/lib/logstash/pipeline.rb:232
start_workers at /home/cloud/tools/ELK/logstash-2.3.1/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.1-java/lib/logstash/pipeline.rb:201
分享到:
评论

相关推荐

    logstash-2.3.1.tar.zip

    这个名为 "logstash-2.3.1.tar.zip" 的压缩包包含了Logstash的2.3.1版本,这是一个稳定且功能丰富的版本。通过解压这个文件,你可以获取到Logstash的所有源代码和执行文件,从而在你的系统上安装和运行它。 ...

    最新版linux logstash-8.10.0-linux-x86-64.tar.gz

    最新版linux logstash-8.10.0-linux-x86_64.tar.gz最新版linux logstash-8.10.0-linux-x86_64.tar.gz最新版linux logstash-8.10.0-linux-x86_64.tar.gz最新版linux logstash-8.10.0-linux-x86_64.tar.gz

    logstash-output-jdbc.zip

    logstash离线安装插件步骤: 在一个联网的虚拟机上下载好插件 ./logstash-plugin install logstash-input-jdbc 查看插件是否安装 ./logstash-plugin list 打包下载好的插件(可能会有错误;多试几次) ./...

    最新版linux logstash-8.1.1-linux-x86_64.tar.gz

    index => "syslog-%{+YYYY.MM.dd}" } } ``` 这个配置会从 `/var/log/syslog` 文件读取日志,使用 grok 过滤器解析日志格式,然后将结果发送到本地运行的 Elasticsearch 实例。 **性能优化与维护:** 1. **多线程*...

    最新版linux logstash-7.15.2-linux-x86_64.tar.gz

    index => "app_logs-%{+YYYY.MM.dd}" } } ``` 这个配置从指定的日志文件中读取数据,解析日期和日志级别,然后将结果发送到本地Elasticsearch实例。 **8. 性能优化** 随着数据量的增长,Logstash的性能优化至关...

    最新版linux logstash-8.5.0-linux-x86-64.tar.gz

    index => "app-%{+YYYY.MM.dd}" } } ``` 在这个例子中,Logstash 从指定的日志文件中读取数据,使用Grok过滤器解析日志格式,然后将处理后的数据发送到本地Elasticsearch实例的特定索引。 值得注意的是,...

    最新版linux logstash-8.8.0-linux-x86-64.tar.gz

    最新版linux logstash-8.8.0-linux-x86_64.tar.gz最新版linux logstash-8.8.0-linux-x86_64.tar.gz最新版linux logstash-8.8.0-linux-x86_64.tar.gz

    logstash-2.3.1.tar.gz

    **Logstash 概述** Logstash 是一个强大的开源日志管理和分析工具,由 Elastic 公司开发。它在 IT 环境中扮演着至关重要的角色,尤其在日志管理和大数据分析方面。作为 ELK(Elasticsearch, Logstash, Kibana)堆栈...

    最新版linux logstash-7.10.0-linux-x86_64.tar.gz

    Linux Logstash 7.10.0 是一个强大的开源数据收集和处理引擎,它属于 Elastic Stack(也称为 ELK Stack,包括 Elasticsearch、Logstash 和 Kibana)的一部分。这个版本的 Logstash 针对 Linux x86_64 架构进行了优化...

    logstash-filter-grok-4.3.0.tar.gz

    Logstash 是一个强大的数据收集、处理和转发工具,它是 Elastic Stack 的重要组成部分,用于日志管理和分析。在 Logstash 中,filter 阶段扮演着关键角色,它允许用户对输入的数据进行转换和解析,使其更适合进一步...

    最新版linux logstash-7.10.1-linux-x86_64.tar.gz

    Linux Logstash 7.10.1 是一个强大的开源数据收集、处理和转发工具,它在日志管理和大数据分析领域有着广泛的应用。Logstash 主要由三个组件组成:输入(Inputs)、过滤(Filters)和输出(Outputs)。这个版本是专...

    最新版linux logstash-7.9.3.tar.gz

    Linux Logstash是一款强大的数据收集、处理和转发工具,广泛应用于日志管理和实时数据分析场景。它作为Elastic Stack(以前称为ELK Stack)的一部分,与Elasticsearch和Kibana一起,构建了一个完整的日志分析解决...

    最新版linux logstash-8.7.0-linux-x86-64.tar.gz

    最新版linux logstash-8.7.0-linux-x86_64.tar.gz最新版linux logstash-8.7.0-linux-x86_64.tar.gz最新版linux logstash-8.7.0-linux-x86_64.tar.gz

    logstash-7.10.2-linux-x86-64.tar文件(分享给需要的同学)

    logstash-7.10.2-linux-x86_64.tar文件 logstash-7.10.2-linux-x86_64.tar文件 logstash-7.10.2-linux-x86_64.tar文件 logstash-7.10.2-linux-x86_64.tar文件 logstash-7.10.2-linux-x86_64.tar文件 logstash-7.10.2...

    logstash-input-mongodb离线包

    解压后使用,版本:logstash-input-mongodb-0.4.1 logstash离线包安装命令: Windows:logstash-plugin install file:///D:/logstash-7.5.0/logstash-input-mongodb/logstash-input-mongodb-0.4.1.zip Linux:...

    最新版linux logstash-8.5.2-linux-x86-64.tar.gz

    index => "application-%{+YYYY.MM.dd}" } } ``` 此配置从一个文件中读取日志,使用grok解析日志格式,然后将结果发送到本地Elasticsearch实例的索引。 五、使用Logstash实践 1. 监控系统日志:Logstash可以集成...

    最新版linux logstash-7.12.0-linux-x86_64.tar.gz

    Linux Logstash 7.12.0 是一个强大的开源数据收集、处理和转发工具,尤其在日志管理和分析领域有着广泛的应用。这个最新版本的软件是专为64位Linux系统设计的,提供了高效的数据流处理能力,帮助系统管理员和开发...

    最新版linux logstash-7.16.1-linux-x86_64.tar.gz

    Logstash 是一个强大的开源数据收集、转换和分发工具,广泛应用于日志管理和实时数据分析场景。这个最新的Linux版本,logstash-7.16.1-linux-x86_64.tar.gz,是专为64位Linux系统设计的,旨在提供高效的数据处理能力...

    logstash-filter-multiline-3.0.2.gem

    logstash-filter-multiline gem安装包 ,执行./logstash/bin/logstash-plugin install ./logstash/vendor/bundle/jruby/1.9/cache/logstash-filter-multiline-3.0.2.gem

    logstash-output-clickhouse-0.1.0.gem

    logstash-7.12.1 output-clickhouse 插件已经编译好了,logstash-7.12.1解压,直接logstash-plugin install logstash-output-clickhouse-0.1.0.gem 安装 懂的人,不需要过多解释,直接下载安装开干

Global site tag (gtag.js) - Google Analytics