ELK日志收集部署简单说明

本文介绍了ELK(Elasticsearch, Logstash, Kibana)日志收集系统的部署流程,包括Filebeat从服务器收集日志并发送到Kafka,Logstash消费Kafka数据并处理后存储至Elasticsearch,Kibana则用于数据的可视化展示。系统架构涉及Filebeat、Kafka、Logstash、Elasticsearch和Kibana的详细配置,适合对ELK有兴趣的读者参考。" 1341546,160113,NetBPM安装指南,"['数据库管理', '软件安装', 'Web服务器', '.NET框架', 'SQL Server']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在项目中用到了ELK进行日志收集。本文简单梳理一下ELK部署流程,因为资源限制和技术水平有限,参考了很多其它博客(也用了其中一些图),仅供参考。

 

一、系统总体架构

 

  1. 构件说明

 

Filebeat:轻量级数据收集引擎,可以高效地从服务器收集数据并将数据推送到指定的输出上。支持多种输入数据源和输出方式。

 

Kafka:数据缓冲队列。有效地防止系统因为负荷过大而崩溃。

 

Logstash:数据收集处理引擎。支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储以供后续使用。

 

Elasticsearch :分布式搜索引擎。具有高可伸缩、高可靠、易管理等特点。可以用于全文检索、结构化检索和分析,并能将这三者结合起来。

 

Kibana :可视化化平台。它能够搜索、展示存储在 Elasticsearch 中索引数据。使用它可以很方便的用图表、表格、地图展示和分析数据。

 

  1. 系统运行流程

 

Filebeat将会在每一个需要进行日志收集的服务上部署,我们将设置输入源为日志文件,同时作为生产者将内容输出到kafka中,logstash作为消费者从kafka中取出日志数据并进行处理后输出到elasticsearch以供检索,kibana以可视化的方式允许我们向elasticsearch发出查询请求,elasticsearch根据请求搜索出数据返回给kibana展示给我们。

 

 

二、系统搭建说明

     1.资源说明

       

        Filebeat: 6.2.4,Kafka: 2.11-1,Logstash: 6.2.4,Elasticsearch: 6.2.4,Kibana: 6.2.4

预装CentOS7的服务器3台假定命名为os1,os2,os3,预装CentOS7且部署了系统微服务的服务器若干。

注意:以下组件运行几乎都需要java1.8以上环境支持,请自行安装配置。

2.filebeat部署

 

在部署了系统微服务的每一台服务器上均需安装filebeat,下载对应版本以及平台的压缩包,解压后进入文件目录可以看到。

 

其中filebeat.yml即是我们需要修改的配置文件。基于filebeat的作用,显然我们最需要配置的就是输入和输出,即从哪里搜集文件和把文件送到哪。

 

 

如图所示,我们将输入类型设置为日志,配置enabled为true以允许这种输入方式,paths即为我们需要收集的文件路径,此处路径应当参照统一日志记录模块中日志的存放位置进行配置。

 

 

如图所示,我们将输出方向配置为kafka,hosts即是我们配置的kafka服务集群ip地址,每一个kafka服务地址放在双引号中,不同地址之间以引号隔开。具体地址配置请和kafka配置统一。

Topic指明该filebeat输出消息的主题(或者说类别)。Topic是kafka中的概念,通过不同的topic,我们可以给消息(日志)进行分类。本系统将采用微服务名称作为topic,即将不同的微服务产生日志分为不同类别。

 

配置完成后使用安装目录下 /bin/filebeat –c filebeat.yml 启动filebeat。

 

注意:filebeat.yml中可能有默认存在的输入或输出配置,请将其余输入或输出配置注释掉,只留下我们需要的一个输入和一个输出配置,不然会引出冲突报错。

 

系统topic命名:

     Api网关:service-gateway

     认证服务:service-authentication

     基础数据服务:service-base-data

     用户和权限服务:service-user-permission

     试卷服务:service-paper

     考试服务:service-exam

     其他待定

 

3.kafka部署

    考虑到系统的稳定和效率,我们不能只部署单个kafka服务,考虑部署kafka集群,集群含有三个kafka服务分别部署在os1,os2,os3上。

 

     在os1上下载相应软件包,解压后进入安装目录如图示。

    在config目录下存放kafka的配置文件,kafka采用zookeeper来管理集群下的服务,所以我们打开config目录下的zookeeper.properties进行配置。

 

 

   配置中server.n即是服务器的数量,这里配置的就是kafka服务所部署在的服务器地址。在配置集群时zookeeper需要知道每个服务的id,否则会报错。我们需要在dataDir指定的目录下创建一个myid文件,在文件中写入一个代表id的数字,这里写入1。

 

    打开config目录下的server.properties配置Kafka服务。

    Port即为kafka服务所监听端口,host.name即是本服务器的ip地址,broker.id用于唯一标识集群中的kafka服务,这里将默认的0修改为1以于myid对应。Zookeeper.connect即是Kafka服务与zookeeper集群的连接,我们将端口设置为2181。

 

    到此一台服务器上基本配置结束。我们将它拷贝到os2和os3上,对应的,在os2和os3上创建相应的myid并写入2和3,以及在server.properties中修改broker.id分别为2和3。

 

    在每台服务器依次使用

bin/zookeeper-server-start.sh –daemon config/zookeeper.properties

 

bin/kafka-server-start.sh –daemon config/server.properties

命令启动zookeeper集群和kafka服务。

 

关于topic的进一步说明。在kafka中,一个topic可以拥有多个分区,每个分区可以理解为一个消息队列,分区会均匀分布在不同kafka服务上,使得同一个topic的消息可以并行处理,并且避免了某一个kafka服务过于拥挤。除此之外,我们还可以设置主题的备份数量,备份数量不能超过broker的数量,备份的机制是以一个服务为leader,其他剩余的备份为follow,在leader正常服务时,follow只进行数据拷贝以同步。当leader不能提供服务时,就从follow中选一个成为新的leader继续服务,可见这提供了系统的健壮性。分区和备份均可以在创建时进行设置,初步考虑为系统每个topic建立6个分区和3个备份。关于创建topic的命令请参考kafka的资料。

 

注意:在kafka服务中服务器ip地址+9092端口即为filebeat配置的输出方向以及logstash的输入方向。

4.logstash部署

       采用rpm的方式安装logstash。安装完成后在/etc目录下会创建出logstash目录,进入该目录,在该目录用vim命令创建logstash.conf配置文件。

 

        Logstash基于管道的理念,有一个输入流和对应的输出流,我们只需要配置输入流入口和输出流的出口即可。在本系统中输入流入口即是kafka服务的输出,输出流出口即是elasticsearch服务集群的地址集合。基础结构如下图所示。

           

        在input下我们指定输入为kafka服务,其中topics即是我们感兴趣的topic集合,类似于消息订阅,只有写入这个集合的topic logstash才会接收。Bootstrap_servers即是kafka服务的地址,我们部署了kafka集群,所以这里应当用中括号包围和逗号隔开分别书写每个kafka服务的ip地址+9092端口号。

 

        在output下我们指定输出到elasticsearch,hosts即是elasticsearch地址,同样本系统将部署3个elasticsearch服务组成集群,这里应该填上所有服务地址。Index指的是生成的输出内容的索引格式。这个是我们最后查询这条内容的一个依据。

 

        配置完成后找到并进入logstash安装目录。使用

bin/logstash –f /etc/logstash/logstash.conf

读取配置文件后启动logstash。

 

5.elasticsearch部署

     同样采用rpm方式进行安装。配置/etc/elasticsearch/elasticsearch.yml

在os1上依图示进行配置。集群主机名如果不写ip地址的话,需要在/etc/hosts文件里配置相应的映射。配置完后拷贝到os2和os3上,只需修改node.name为es2和es3即可。

采用图示方式正常启动所有服务。Elasticsearch集群就可以工作了。

 

注意:此处的elasticsearch服务的ip地址就是logstash output配置中应该填的hosts。

 

6.kibana部署

同样采用rpm安装。找到安装目录。编辑config下的kibana.yml进行配置。

 

 

基本只需配置elasticsearch.url即可。该配置项可以书写多个,一个对应一个es服务地址。

elasticsearch.url: “es1ip”

elasticsearch.url: “es2ip”

elasticsearch.url:  “es3ip”

 

    结束后使用图示命令启动kibana服务。之后即可在浏览器访问部署的ip地址+5601端口访问kibana页面。我们在filebeat部署的地方指定位置放入新的.log文件或改变内容,即可在kibana上查看到。

       

       

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值