日志平台- Logstash篇

Posted 微创智云

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了日志平台- Logstash篇相关的知识,希望对你有一定的参考价值。

一、前言

Logstash 是一个开源的数据收集引擎,它具有备实时数据传输能力。它可以统一过滤来自不同源的数据,并按照开发者的制定的规范输出到目的地。

顾名思义,Logstash 收集数据对象就是日志文件。由于日志文件来源多(如:系统日志、服务器 日志等),且内容杂乱,不便于人类进行观察。因此,我们可以使用 Logstash 对日志文件进行收集和统一过滤,变成可读性高的内容,方便开发者或运维人员观察,从而有效的分析系统/项目运行的性能,做好监控和预警的准备工作等。

二、安装

logstash-2.1.1.tar.gz 

tar -zxvf logstash-2.1.1.tar.gz -C /usr

三、组成结构

ogstash 通过管道进行运作,管道有两个必需的元素,输入和输出,还有一个可选的元素,过滤器。

输入插件从数据源获取数据,过滤器插件根据用户指定的数据格式修改数据,输出插件则将数据写入到目的地。如下图:



四、Logstash时区8小时问题

时区问题的解释 

    很多中国用户经常提一个问题:为什么 @timestamp 比我们早了 8 个小时?怎么修改成北京时间?

    其实,Elasticsearch 内部,对时间类型字段,是统一采用 UTC 时间,存成 long 长整形数据的!对日志统一采用 UTC 时间存储,是国际安全/运维界的一个通识——欧美公司的服务器普遍广泛分布在多个时区里——不像中国,地域横跨五个时区却只用北京时间。 

    对于页面查看,ELK 的解决方案是在 Kibana 上,读取浏览器的当前时区,然后在页面上转换时间内容的显示。 

    所以,建议大家接受这种设定。否则,即便你用 .getLocalTime 修改,也还要面临在 Kibana 上反过去修改,以及 Elasticsearch 原有的 ["now-1h" TO"now"] 这种方便的搜索语句无法正常使用的尴尬。 

     

logstash-2.3.2\vendor\bundle\jruby\1.9\gems\logstash-core-event-2.3.2-java\lib\logstash  63

UTC =org.joda.time.DateTimeZone.forID("UTC")

修改为:

UTC =org.joda.time.DateTimeZone.getDefault(:)

次方法无效

 

比较合理的解决方式:

通过配置logstashfilter处理

filter最后添加

ruby { code=> "event.set('@timestamp', event.timestamp.time.localtime +8*60*60)" }

使用命令测试:logstash  agent -f../conf/app.conf

 


以上是关于日志平台- Logstash篇的主要内容,如果未能解决你的问题,请参考以下文章

搭建ELK日志分析平台(下)—— 搭建kibana和logstash服务器

Artery平台的Logstash日志

企业运维之 ELK日志分析平台(Logstash)

企业运维之 ELK日志分析平台(Logstash)

Elasticsearch + Logstash + Filebeat + Kibana搭建ELK日志分析平台(官方推荐的BEATS架构)

Spring Boot教程第22篇:整合elk,搭建实时日志平台