热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:Filebeat+Kafka+Logstash+ElasticSearch+Kibana日志采集方案

本文由编程笔记#小编为大家整理,主要介绍了Filebeat+Kafka+Logstash+ElasticSearch+Kibana日志采集方案相关的知识,希望对你有一定的参考价值。
本文由编程笔记#小编为大家整理,主要介绍了Filebeat+Kafka+Logstash+ElasticSearch+Kibana 日志采集方案相关的知识,希望对你有一定的参考价值。



前言  

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

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

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


介绍

  1.Filebeatfilebat是一个用于转发和集中日志数据的轻量级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用于格式化日志,目前我也没明白为什么要那样做。

技术分享图片

 


推荐阅读
  • 优秀到卓越就差比他更快搭建elk集群架构上篇
    工作原理开源分布式搜索引擎,特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • 像跟踪分布式服务调用那样跟踪Go函数调用链 | Gopher Daily (2020.12.07) ʕ◔ϖ◔ʔ
    每日一谚:“Acacheisjustamemoryleakyouhaven’tmetyet.”—Mr.RogersGo技术专栏“改善Go语⾔编程质量的50个有效实践” ... [详细]
  • 什么是大数据lambda架构
    一、什么是Lambda架构Lambda架构由Storm的作者[NathanMarz]提出,根据维基百科的定义,Lambda架构的设计是为了在处理大规模数 ... [详细]
  • Hadoop源码解析1Hadoop工程包架构解析
    1 Hadoop中各工程包依赖简述   Google的核心竞争技术是它的计算平台。Google的大牛们用了下面5篇文章,介绍了它们的计算设施。   GoogleCluster:ht ... [详细]
  • 【转】腾讯分析系统架构解析
    TA(TencentAnalytics,腾讯分析)是一款面向第三方站长的免费网站分析系统,在数据稳定性、及时性方面广受站长好评,其秒级的实时数据更新频率也获得业界的认可。本文将从实 ... [详细]
  • ELK stack 学习记录
    ELK日志分析平台学习记录首先ELK主要指elasticsearch、logstash和kibana,三个开源软件组合而成的一套日志平台解决方案。可以将平时收集到的日志,通过前台展 ... [详细]
  • java包含,java包含哪些技术
    本文目录一览:1、java有哪几个重要的类包? ... [详细]
  • 搞懂 ELK 并不是一件特别难的事
    点击下方“民工哥技术之路”,选择“设为星标”回复“1024”获取独家整理的学习资料!本篇文章主要介绍ELK的一些框架组成,原理和实践&#x ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • ElasticSerach初探第一篇认识ES+环境搭建+简单MySQL数据同步+SpringBoot整合ES
    一、认识ElasticSearch是一个基于Lucene的开源搜索引擎,通过简单的RESTfulAPI来隐藏Lucene的复杂性。全文搜索,分析系统&# ... [详细]
  • Elasticsearch:Pinyin分词器
    Elastic的Medcl提供了一种搜索Pinyin搜索的方法。拼音搜索在很多的应用场景中都有被用到。比如在百度搜索中,我们使用拼音就可以出现汉字:对于我们中国人来说,拼音搜索也是 ... [详细]
  • 开发笔记:elasticsearchElasticsearch 7.X Scripting 脚本使用详解
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了elasticsearchElasticsearch7.XScripting脚本使用详解相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
心梦飞扬-吕
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有