当前位置: 首页 > Linux

ELK+Filebeat搭建日志系统

时间:2023-04-06 11:34:30 Linux

也介绍了开源组件ELK日志系统的配置与管理今天也聊聊ELK+Filebeat搭建日志系统Elasticsearch分布式搜索分析引擎。具有高扩展性、高可靠性、易管理等特点。基于ApacheLucene构建,可以对大容量数据进行近实时的存储、搜索和分析操作。Logstash日志收集器。收集各种数据源,过滤、分析、格式化和存储在Elasticsearch中的数据。Kibana数据分析和可视化平台。与Elasticsearch结合使用以搜索、分析和绘制其中的数据。Filebeat是一个轻量级的开源日志文件数据收集器。Filebeat读取文件内容,发送到Logstash进行分析,然后进入Elasticsearch,或者直接发送到Elasticsearch进行集中存储和分析。架构介绍是基于ELK的使用。Logstash作为日志收集器,Elasticsearch作为日志存储,Kibana作为日志展示。粗略地描述了以下架构。架构一中之所以会有多个Logstash,是因为考虑到程序是分布式架构,每台机器都需要部署一个Logstash。如果确实是单台服务器,部署一个Logstash。如前所述,Logstash将对数据进行分析、过滤和格式化。这一系列操作消耗了服务器大量的CPU和内存资源。所以这种架构会影响到每台服务器的性能,所以没有必要不推荐。与架构一相比,架构二增加了一个MQ和Logstash。Logstash的输出和输入支持Kafka、Redis、RabbitMQ等常见的消息队列。MQ之前的Logstash只用于日志的收集和传输,不做解析和过滤。日志加入到队列中,MQ后面的Logstash会不断解析过滤,这样每个服务器不会消耗大量资源。Architecture3该架构是在Architecture2的基础上进行的简化,在实际使用过程中也可以采用。日志直接进入MQ,Logstash消费MQ数据。架构四该架构将Beats添加到日志数据源和Logstash(或Elasticsearch)中。Beats集成了各种单一用途的数据收集器。每个收集器都基于libbeat,一个用于转发数据的通用库。beat占用的系统CPU和内存几乎可以忽略不计。libbeat平台也提供了检测机制。当下游服务器负载高或网络拥塞时,自动降低发生率。下面的例子中,我们使用Filebeat来收集文件日志,其他的beats可以忽略。架构四与架构二相比,如果将部署在每台服务器上的Logstash换成对应的Beats,将会是一个更理想的架构。不管怎么说,Logstash用于日志解析和过滤的资源消耗还是比较高的,所以如果有需要,可以分布式部署Logstash,Elasticsearch的部署使用集群来加强整个日志系统。部署前需要安装JDK和Java8版本。然后正式下载对应操作系统的安装包。如果使用Docker部署,可以直接使用提供的镜像。下载包解压后,直接启动即可。logstashbin/logstash-flogstash.conf#logstash.conf是日志处理配置文件,需要自己创建。配置文件的基本格式如下:#inputinput{}#analysis,filterfilter{}#outputoutput{}startedbyElasticsearchbin/elasticsearch如果不允许root启动,新建用户:创建用户组groupaddelsearch创建用户useraddelsearch-gelsearch-pelsearch切换到root用户,修改elsearch用户组下的elsearch用户到elasticsearch文件夹(解压出来的Elasticsearch目录)权限chown-Relsearch:elsearchelasticsearch切换到elsearch用户,restartelasticsearchKibanabin/kibanaFilebeatfilebeat-e-cfilebeat.ymlfilebeat.yml关键配置,所有/var/log/.log文件日志都会输出到LogstashPort5044filebeat.prospectors:-input_type:logpaths:-/var/log/*.logoutput.logstash:hosts:["localhost:5044"]Logstash示例:配置文件内容:input{beats{port=>5044codec=>"json"}}filter{if[logtype]{mutate{replace=>{type=>"%{logtype}"}}}else{mutate{replace=>{type=>'unknow'}}}date{match=>["createTime","yyyy-MM-ddHH:mm:ss"]}}输出{elasticsearch{hosts=>["localhost:9200"]index=>"logstash-%{type}-%{+YYYY.MM.dd}"}stdout{codec=>ruby??debug}}配置文件说明:使用Filebeat作为LogstashInput(输入输出的方式有很多种,不太了解的可以先写看官方文档),Logstash监听5044端口,本例中接收到的日志格式为json。如果json中包含logtype,我们就把日志的类型设置为logtype,如果不包含,则设置为unknown,然后将日志中的createTime格式化成yyyy-MM-ddHH:mm:ss的时间格式。最后输出到elasticsearch,index是elasticsearch的索引名,我们根据不同的类型创建不同的索引。生产环境中Kibana使用效果图来源:http://beckjin.com/2017/12/10...