Filebeat+Kafka+Logstash+ElasticSearch+Kibana 日志采集方案

前言  

  Elastic Stack 提供 Beats 和 Logstash 套件来采集任何来源、任何格式的数据。其实Beats 和 Logstash的功能差不多,都能够与 Elasticsearch 产生协同作用,而且

logstash比filebeat功能更强大一点,2个都使用是因为:Beats 是一个轻量级的采集器,支持从边缘机器向 Logstash 和 Elasticsearch 发送数据。考虑到 Logstash 占用系

统资源较多,我们采用 Filebeat 来作为我们的日志采集器。并且这里采用kafka作为传输方式是为了避免堵塞和丢失,以实现日志的实时更新。

介绍

  1.Filebeat:filebat是一个用于转发和集中日志数据的轻量级shipper。作为代理安装在服务器上,filebeat监视指定的日志文件或位置,收集日志事件,并将它们转发给ElasticSearchlogstash进行索引。

  2.Logstash:Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到存储库。

  3.ElasticSearch:Elasticsearch 是基于 JSON 的分布式搜索和分析引擎,专为实现水平扩展、高可靠性和管理便捷性而设计。

  4.Kibana:Kibana 能够以图表的形式呈现数据,并且具有可扩展的用户界面,供您全方位配置和管理 Elastic Stack。

Elastic Stack架构

软件环境

  Ubuntu 18.04.1

  

  Elastic Stack官网:https://www.elastic.co/

kafka、Zookeeper安装

  kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。  

  ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用

提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

注:安装kafka时会发现它需要安装Zookeeper的。kafka的官方文档有说明。zookeeper是为了解决分布式一致性问题的工具,kafka使用ZooKeeper用于管理、协调代理。当Kafka系统中新增了代理或某个代理失效时,Zookeeper服务将通知生产者和消费者。生产者与消费者据此开始与其他代理协调工作。

Zookeeper单机安装配置:

Step 1:下载压缩包并解压

1 >wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
2 >tar -zxvf  zookeeper-3.4.13.tar.gz
3 >cd zookeeper-3.4.13

Step 2:修改配置文件

先复制模板配置文件,并重命名,然后里面存放数据的路径dataDir可以自己定义

1 >cp -rf conf/zoo_sample.cfg conf/zoo.cfg
2 >vim zoo.cfg

Step 3:启动服务

1 >./bin/zkServer.sh start
2
3 >./bin/zkServer.sh status

先启动,系统会默认加载zoo.cfg配置,然后使用 zkServer.sh status 查看服务状态

kafka安装配置:

根据官网教程开始安装(复制的官网教程):

Step 1: Download the code

1  > wget http://mirror.apache-kr.org/kafka/2.1.0/kafka_2.11-2.1.0.tgz
2  > tar -xzf kafka_2.11-2.1.0.tgz
3  > cd kafka_2.11-2.1.0/

Step 2: Start the server

Kafka uses ZooKeeper so you need to first start a ZooKeeper server if you don‘t already have one. You can use the convenience script packaged with kafka to get a quick-and-dirty single-node ZooKeeper instance.(由于我自己安装的Zookeeper,所以这一步可以省略)

1 > ./bin/zookeeper-server-start.sh config/zookeeper.properties
2 [2019-01-23 15:01:37,495] INFO Reading configuration from: config/zookeeper.properties (org.apache.zookeeper.server.quorum.QuorumPeerConfig)
3 ...

Now start the Kafka server:

首先可以先修改一下配置文件server.propertise

 1 # master
 2 broker.id=0
 3 listeners=PLAINTEXT://9092
 4 advertised.listeners=PLAINTEXT://localhost:9092
 5 num.network.threads=3
 6 num.io.threads=8
 7 socket.send.buffer.bytes=102400
 8 socket.receive.buffer.bytes=102400
 9 socket.request.max.bytes=104857600
10 log.dirs=/tmp/kafka-logs
11 num.partitions=5
12 num.recovery.threads.per.data.dir=1
13 offsets.topic.replication.factor=1
14 transaction.state.log.replication.factor=1
15 transaction.state.log.min.isr=1
16 log.retention.hours=168
17 log.segment.bytes=1073741824
18 log.retention.check.interval.ms=300000
19 # 连接
20 zookeeper.connect=localhost:2181
21 zookeeper.connection.timeout.ms=6000
22 group.initial.rebalance.delay.ms=0
23 # 可删除topic
24 delete.topic.enable=true
1 > ./bin/kafka-server-start.sh config/server.properties
2 [2019-01-23 15:01:47,028] INFO Verifying properties (kafka.utils.VerifiableProperties)
3 [2019-01-23 15:01:47,051] INFO Property socket.send.buffer.bytes is overridden to 1048576 (kafka.utils.VerifiableProperties)
4 ...

到这里服务就启动成功了。

查看java进程pid也可以发现kafka

Step 3: Create a topic

Let‘s create a topic named "test" with a single partition and only one replica:

1 > ./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

if you want delete a topic:

1 >./bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic test

We can now see that topic if we run the list topic command:

1 > ./bin/kafka-topics.sh --list --zookeeper localhost:2181
2 test

Alternatively, instead of manually creating topics you can also configure your brokers to auto-create topics when a non-existent topic is published to.

在上一次配置的日子目录(server.properties里配置的log.dirs)上可以看到,已经存在了该主题的日志信息文件了,由于server.properties里面配置的num.partitions=1(默认的分区数,一个topic默认1个分区数所以只有一个文件夹

要查看topic详细信息的话:

1  >bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test

Step 4: Star a producer(创建发布者)

1 > ./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test

Step 5: Start a consumer(创建订阅者)

1 > ./bin/kafka-console-consumer.sh --bootstrap-server localhost:2181 --topic test --from-beginning

创建好后,可以在发布者端发送消息进行测试,我们这里的发布者是filebeat,订阅者是logstash,可以不用配置。

Filebeat安装配置

  beat是一个轻量级的数据传输者,它有好几种分类,这里暂时只用到Filebeat

  Filebeat的处理流程基本分为3部分:Input、Filter、Output。

 开始安装

  1.官网下载 :filebeat-6.5.4-linux-x86_64.tar.gz,复制到LINUX服务器,然后解压( tar -xzvf filebeat-6.5.4-linux-x86_64.tar.gz)

  2.进入filebeat-6.5.4-linux-x86_64文件夹,修改filebeat.yml,filebeat默认是将数据传输到elasticsearch,需要修改为kafka

这里放一个filebeat详细配置参考:https://www.cnblogs.com/kuku0223/p/8316922.html

配置完成后启动filebeat:

1 > sudo ./filebeat -e -c filebeat.yml

ELK(elasticsearch+logstash+kibana 6.5.4)配置

elasticsearch安装配置

  Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。

  顺带提一下Elasticsearch的数据结构:FST(Finite StateTransducers),其特点高度重复利用数据前缀和后缀存储数据,能很大层度上压缩数据。

elasticsearch安装配置:

  从官网上下载软件:https://www.elastic.co/cn/downloads/elasticsearch

  解压之后,修改config/elasticsearch.yml配置文件,配置一下ip和端口号:

1 [email protected]:~$ cd /home/tools/elk/elasticsearch-6.5.4/
2 [email protected]:/home/tools/elk/elasticsearch-6.5.4$ vim config/elasticsearch.yml

然后启动命令:

1 [email protected]:/home/tools/elk/elasticsearch-6.5.4$ ./bin/elasticsearch

然后浏览器打开端口(http://192.168.80.15:9200/),出现如下信息说明启动成功

kibana安装配置

  通过 Kibana,能够对 Elasticsearch 中的数据进行可视化并在 Elastic Stack 进行操作.

kibana安装配置:

  首先下载软件,然后解压,修改配置文件config/kibana.yml,再启动就行,与elasticsearch类似。

 

1 [email protected]:/home/tools/elk/kibana-6.5.4-linux-x86_64$ vim config/kibana.yml

1 [email protected]:/home/tools/elk/kibana-6.5.4-linux-x86_64$ ./bin/kibana

logstash安装配置

  Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到存储库中。

  安装过程依然是下载压缩包,解压后修改配置文件,再启动。

  进入config文件夹,我们可以修改原有的logstash-sample.conf,或者自己新建一个(这里选择自己新建一个logstash-skyworth.conf)。

  

  修改配置文件:

input{
   kafka{
    bootstrap_servers => ["192.168.80.15:9092"]
        client_id => "test"
        group_id => "test"
        auto_offset_reset => "latest" //从最新的偏移量开始消费
        consumer_threads => 5
        decorate_events => true //此属性会将当前topic、offset、group、partition等信息也带到message中
        topics => ["test"]
        type => "skyworth"
  }
}
filter {
        if ([message]== "")
        {
            drop {}
        }
}
output {
  if [type] == "skyworth"{
        elasticsearch {
        hosts => ["192.168.80.15:9200"]                  # ElasticSearch的地址加端口
        index => "skyworth-log-%{+YYYYMMdd}"            # ElasticSearch的保存文档的index名称,
    }
  }
}

启动命令:

1 >./bin/logstash -f config/logstash-skyworth.conf

 总结

  业务流程偷了张图如下:

  注:有的人会在filebeat和kafka之间再加一层前置的logstash用于格式化日志,目前我也没明白为什么要那样做。

原文地址:https://www.cnblogs.com/willpan-z/p/10307967.html

时间: 2024-10-03 19:35:41

Filebeat+Kafka+Logstash+ElasticSearch+Kibana 日志采集方案的相关文章

logstash+elasticsearch +kibana 日志管理系统

Logstash是一个完全开源的工具,他可以对你的日志进行收集.分析,并将其存储供以后使用(如,搜索),您可以使用它.说到搜索,logstash带有一个web界面,搜索和展示所有日志.kibana 也是一个开源和免费的工具,他可以帮助您汇总.分析和搜索重要数据日志并提供友好的web界面.他可以为 Logstash 和 ElasticSearch 提供的日志分析的 Web 界面. 目的就是为了运维.研发很方便的进行日志的查询.Kibana一个免费的web壳:Logstash集成各种收集日志插件,还

logstash+elasticsearch+kibana日志收集

一. 环境准备 角色 SERVER IP logstash agent 10.1.11.31 logstash agent 10.1.11.35 logstash agent 10.1.11.36 logstash central 10.1.11.13 elasticsearch  10.1.11.13 redis 10.1.11.13 kibana 10.1.11.13 架构图如下: 整个流程如下: 1) 远程节点的logstash agent收集本地日志后发送到远程redis的list队列

Logstash+Elasticsearch+Kibana日志服务器搭建

官网https://www.elastic.co 软件版本: Logstash 2.2.0 All Plugins Elasticsearch 2.2.0 Kibana 4.4.0 说明:此环境变Centos6.5 64位,单机做测试,具体配置从简. 1.Logstash安装配置 解压到/usr/local/logstash-2.2.0/ Logstash配置文件: vim /usr/local/logstash-2.2.0/etc/agent.conf input {     file {  

【转载】使用logstash+elasticsearch+kibana快速搭建日志平台

原文链接:http://www.cnblogs.com/buzzlight/p/logstash_elasticsearch_kibana_log.html 日志的分析和监控在系统开发中占非常重要的地位,系统越复杂,日志的分析和监控就越重要,常见的需求有: 根据关键字查询日志详情 监控系统的运行状况 统计分析,比如接口的调用次数.执行时间.成功率等 异常数据自动触发消息通知 基于日志的数据挖掘 很多团队在日志方面可能遇到的一些问题有: 开发人员不能登录线上服务器查看详细日志,经过运维周转费时费力

使用Nginx和Logstash以及kafka来实现网站日志采集的详细步骤和过程

使用Nginx和Logstash以及kafka来实现网站日志采集的详细步骤和过程 环境介绍: linux虚拟机3台,主机名分别为hadoop01.hadoop02和hadoop03; 在这3台虚拟机上分别部署了3个Zookeeper,这里Zookeeper的具体安装步骤不做介绍; 在这3台虚拟机上分别部署了3个kafka,这里kafka的具体安装步骤也不做介绍; 我们在hadoop02这台机器上安装一个Logstash,其安装过程非常简单,解压既可使用; ====================

使用logstash+elasticsearch+kibana快速搭建日志平台

日志的分析和监控在系统开发中占非常重要的地位,系统越复杂,日志的分析和监控就越重要,常见的需求有: 根据关键字查询日志详情 监控系统的运行状况 统计分析,比如接口的调用次数.执行时间.成功率等 异常数据自动触发消息通知 基于日志的数据挖掘 很多团队在日志方面可能遇到的一些问题有: 开发人员不能登录线上服务器查看详细日志,经过运维周转费时费力 日志数据分散在多个系统,难以查找 日志数据量大,查询速度慢 一个调用会涉及多个系统,难以在这些系统的日志中快速定位数据 数据不够实时 常见的一些重量级的开源

Logstash+Elasticsearch+Kibana 联合使用搭建日志分析系统(Windows系统)

最近在做日志分析这块儿,要使用 Logstash+Elasticsearch+Kibana 实现日志的导入.过滤及可视化管理,官方文档写的不够详细,网上的文章大多要么是针对Linux系统的用法,要么就是抄袭别人的配置大都没法运行.费了很大劲才搞定了这仨东西,写一篇用法心得,废话不多说,进入主题. 首先,你的电脑上要装Java 的JDK环境,要使用  Logstash+Elasticsearch+Kibana,需要下载这三个软件和一些必要的插件,列表如下 : 1.Java JDK (最新版Logs

ELK+Filebeat+Kafka+ZooKeeper 构建海量日志分析平台(转)

参考:http://www.tuicool.com/articles/R77fieA 我在做ELK日志平台开始之初选择为ELK+Redis直接构建,在采集nginx日志时一切正常,当我采集我司业务报文日志类后,logstash会报大量的redis connect timeout.换成redis cluster后也是同样的情况后,就考虑对消息中间件进行替换重新选型,经过各种刷文档,决定选用kafka来替换redis.根据网上找的一篇参考文档中的架构图如下: 注:由于环境有限,在对该架构图中的ela

(原)logstash-forwarder + logstash + elasticsearch + kibana

[logstash-forwarder + logstash + elasticsearch + kibana]------------------------------------------------------------------------------------------------------------------------------------------------摘要:logstash-forwarder搜集日志,汇总给logstash,然后输出到elastic