2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > ELK+FileBeat日志分析系统

ELK+FileBeat日志分析系统

时间:2018-09-12 21:44:40

相关推荐

ELK+FileBeat日志分析系统

日志分析系统重新构建了一下,选定的技术方案是ELK,也就是ElasticSearch, LogStash,Kibana。另外加了Filebeat和Kafka

.06.28

这两天稍微清闲一些,就趁机重新构建了日志分析系统。没有写代码,全部使用成熟的技术方案来做数据采集,至于后期如何使用这些数据,还在考虑中,先收集吧。

整体的解决方案如下图所示:

其中,日志采集工具使用FileBeat,传输工具使用Kafka,数据整理工具使用LogStash集群,数据存储工具使用ES。当然,这个系统是可以简化的,比如说简化为Filebeat+ElasticSearch,FileBeat+LogStash+ElasticSearch,在不考虑数据Filter和数据处理能力的情况下,这两种方案都可以。但是建立这个平台的初衷是要支持整个网站的所有日志,于是就增加了Kafka,保证数据处理能力。

FileBeat采集数据之后传输给Kafka消息队列,然后LogStash采集消息队列中的数据,作过滤处理,最后将数据传输给ES。FileBeat采集数据时就是Json化的,这个日志采集工具相当轻量级,对系统资源的消耗很少。而LogStash的优点则是有丰富的Filter插件,用于对数据作粗处理。Kafka和ES的优点就不用说了。为了保证系统稳定性,这里所有的组件都使用集群形式。kafka集群使用三台虚拟机,LogStash集群使用两台虚拟机,而ElasticSearch集群使用两台虚拟机。下面来分别说一下各个组件的安装和配置。

FileBeat

FileBeat 是用来替代LogStash-Forwarding的一个组件,是一个轻量级的日志采集器,相比于LogStash-Forwarding日志采集器,Filebeat对系统资源的占用低很多。我这里用到的服务器是Windows,当然也可以放在Linux机器上,配置方法一致。

首先要下载filebeat,下载地址为:https://www.elastic.co/downloads/beats/filebeat#ga-release。这里把安装和使用步骤写的很清楚,我就不赘述了,简单来说就是下载,修改配置文件,启动,观察。所以,请看图:

我用的版本是5.2.2,整个安装目录如下图所示:

其中filebeat.yml表示配置文件,filebeat.template.json表示数据输出的json格式。配置文件详情如下:

filebeat.prospectors:- input_type: log# Paths that should be crawled and fetched. Glob based paths.paths: - D:\Log\Error\*#类型和编码encoding: GB2312document_type: Error# 跨行读取multiline.pattern: '^[0-2][0-9]:[0-5][0-9]:[0-5][0-9]'multiline.negate: truemultiline.match: after- input_type: log# Paths that should be crawled and fetched. Glob based paths.paths:- D:\Log\Info*encoding: GB2312document_type: Infomultiline.pattern: '^[0-2][0-9]:[0-5][0-9]:[0-5][0-9]'multiline.negate: truemultiline.match: after#-------------------------- Elasticsearch output ------------------------------#output.elasticsearch:# Array of hosts to connect to.# hosts: ["localhost:9200"]# Optional protocol and basic auth credentials.#protocol: "https"#username: "elastic"#password: "changeme"#----------------------------- Logstash output --------------------------------output.logstash:# Logstash的host地址,这里给两个假的hosts: ["106.205.10.138:5044","106.205.10.139:5044"]

这份配置文件中,定义了两种类型的日志,分别是Error和Info。日志输出可以是ES,可以使LogStash也可以是Kafka,不过由于Kafka运维还没开过来,我先临时写入到了LogStash中。

配置文件写完之后,就可以启动FileBeat了,Linux下的启动没啥好说的,./filebeat即可。而Windows下的安装有点繁琐,需要使用powershell来执行脚本。打开CMD窗口,具体的安装代码如下:

PowerShell.exe -ExecutionPolicy UnRestricted -File .\install-service-filebeat.ps1

具体执行如下图:

安装之后,在服务窗口下启动,或者是在CMD窗口执行net start filebeat即可。

LogStash

LogStash 的主要功能是对FileBeat采集到的粗数据作过滤,然后将过滤之后的数据写入到ES中。如果不需要对数据过滤,可以直接从FileBeat或者Kafka将数据写入ES。不过为了实现日志时间解析、冗余字段滤除等功能,这里还是选择增加LogStash的使用。LogStash的安装配置过程如下。

首先是下载安装包,我这里使用的版本是2.4.0,在Linux主机上执行;

wget https://download.elastic.co/logstash/logstash/logstash-2.4.0.tar.gzsudo tar -zxf logstash-2.4.0.tar.gz -C /usr/local/cd /usr/local/logstash-2.4.0sudo vim simple.conf

这段代码就是下载安装包、解压安装包、创建配置文件的过程。创建simple.conf之后,我在其中做的配置如下:

input{beats{codec => plain{charset => "UTF-8"}port => "5044"}}filter{mutate{remove_field => "@version"remove_field => "offset"remove_field => "input_type"remove_field => "beat"remove_field => "tags" }ruby{code => "event.timestamp.time.localtime"}}output{elasticsearch{codec => plain{charset => "UTF-8"}hosts => ["106.205.10.138", "106.205.10.139"]}}

其中input选择将filebeat的数据源作为接入数据,通过output将数据推送到ES中,filter中过滤掉冗余字段。而 code => “event.timestamp.time.localtime” 则表示将时间戳从UTC时间改到本地时间,这里是东八区,所以加了八小时。

配置完成之后,启动LogStash,执行代码如下;

bin/logstash -f simple.conf

此时就完成了logstash的安装和配置。

ElasticSearch

最后再来说一下ES的安装和配置,这个在前面一篇文章里写的很清楚了,安装配置过程参见:/index.php/archives/26/

尾声

SO, 到这里,整个安装配置过程结束,看一下效果先:

这是测试数据采集两天之后的状态。后续的数据分析在此基础上进行,可能用Kibana,也可能自己开发,确定的时候会继续写出来。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。