一、前言
Logstash 是一个开源的数据收集引擎,它具有备实时数据传输能力。它可以统一过滤来自不同源的数据,并按照开发者的制定的规范输出到目的地。
顾名思义,Logstash 收集数据对象就是日志文件。由于日志文件来源多(如:系统日志、服务器 日志等),且内容杂乱,不便于人类进行观察。因此,我们可以使用 Logstash 对日志文件进行收集和统一过滤,变成可读性高的内容,方便开发者或运维人员观察,从而有效的分析系统/项目运行的性能,做好监控和预警的准备工作等。
二、安装
logstash-2.1.1.tar.gz
三、组成结构
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行
修改为:
次方法无效
比较合理的解决方式:
通过配置logstash的filter处理
在filter最后添加
使用命令测试:logstash agent -f../conf/app.conf
领取专属 10元无门槛券
私享最新 技术干货