一.采集流程

filebeat 连接到了kafka就是不推送 filebeat kafka版本_java

二. 组件介绍

Filebeat

Filebeat是一个使用Golang实现的轻量级的日志传输工具,它的可靠性很强,可以保证日志 At least once 的上报,同时也考虑了日志搜集中的各类问题,例如日志断点续读、文件名更改、日志 Truncated 等。Filebeat 内置了常用的 Output 组件, 例如 kafka、ElasticSearch、redis 等,出于调试考虑,也可以输出到 console 和 file 。

其实上述架构中的Logstash也具有日志采集的功能,但是Logstash是运行在JVM上的,因此性能和资源占用会相对Filebeat来说较大

Kafka

Kafka是一个快速、可扩展的、高吞吐、可容错的分布式发布订阅消息系统。Kafka具有高吞吐量、内置分区、支持数据副本和容错的特性,适合在大规模消息处理场景中使用。其能够支撑海量数据的数据传递。在离线和实时的消息处理业务系统中,Kafka都有广泛的应用。Kafka在保证了较高的处理速度的同时,又能保证数据处理的低延迟和数据的零丢失。

Logstash

Logstash是一个功能强大的工具,可与各种部署集成。它提供了大量插件,可以解析、丰富、转换和缓冲来自各种来源的数据。

ElasticSearch

Elaticsearch,简称为ES,是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。ES也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

Kibana

Kibana 是一个免费且开放的用户界面,能够让您对 Elasticsearch 数据进行可视化,并让您在 Elastic Stack 中进行导航。您可以进行各种操作,从跟踪查询负载,到理解请求如何流经您的整个应用,都能轻松完成。

三.环境搭建

版本如下:

filebeat 连接到了kafka就是不推送 filebeat kafka版本_kafka_02

  • 配置filebeat,新建my_filebeat.yml
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/messages
 
output.kafka:
    enabled: true
    hosts: ["localhost:9092"]
    topic: "demo-topic"

启动命令:

./filebeat -e -c my_filebeat.yml -d "publish"
  • 配置kafka
./bin/zookeeper-server-start.sh ./config/zookeeper.properties			        #必须首先启动zookeeper
./bin/kafka-server-start.sh ./config/server.properties						#用另一个终端来启动kafka
  • kafka的端口号为:9092 zookeeper的端口号为:2181
  • 保持kafka开启的状态下来创建一个名叫demo-topic的主题(topic):
./bin/kafka-topics.sh  --zookeeper localhost:2181 --create --topic demo-topic --partitions 1 --replication-factor 1     #创建一个名为demo-topic的主题
./bin/kafka-topics.sh --list --zookeeper localhost:2181
  • 配置logstash,config下新建:first_pipeline.conf
input {
  kafka {
    bootstrap_servers => "localshot:9092"
    topics => "demo-topic"
    group_id => "test"
  }
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "test_index"
    #user => "elastic"
    #password => "changeme"
  }
}

启动命令:

./bin/logstash -f ./config/first_pipeline.conf --config.reload.automatic --path.data=/data/logstash
  • 配置elasticsearch
  • chown -R esroot:esroot elasticsearch-8.3.3
  • su esroot
  • 修改elasticsearch.yml文件
network.host: 0.0.0.0
http.port: 9200
xpack.security.enabled: false

# 添加行
ingest.geoip.downloader.enabled: false
  • 启动:./elasticsearch -d
  • 配置kibana
  • 修改kibana.yml
server.port: 5601
server.host: "0.0.0.0"
  • 启动kibana:./kibana