千家信息网

Elasticsearch+Fluentd+Kafka怎么搭建分布式日志系统

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这期内容当中小编将会给大家带来有关Elasticsearch+Fluentd+Kafka怎么搭建分布式日志系统,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。前言由于
千家信息网最后更新 2026年11月02日Elasticsearch+Fluentd+Kafka怎么搭建分布式日志系统

这期内容当中小编将会给大家带来有关Elasticsearch+Fluentd+Kafka怎么搭建分布式日志系统,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

前言

由于logstash内存占用较大,灵活性相对没那么好,ELK正在被EFK逐步替代.其中本文所讲的EFK是Elasticsearch+Fluentd+Kfka,实际上K应该是Kibana用于日志的展示,这一块不做演示,本文只讲述数据的采集流程.

前提

  1. docker

  2. docker-compose

  3. apache kafka服务

架构

数据采集流程

数据的产生使用cadvisor采集容器的监控数据并将数据传输到Kafka.

数据的传输链路是这样: Cadvospr->Kafka->Fluentd->elasticsearch

每一个服务都可以横向扩展,添加服务到日志系统中.

配置文件

docker-compose.yml

version: "3.7"

services: elasticsearch: image: elasticsearch:7.5.1 environment: - discovery.type=single-node #使用单机模式启动 ports: - 9200:9200 cadvisor: image: google/cadvisor command: -storage_driver=kafka -storage_driver_kafka_broker_list=192.168.1.60:9092(kafka服务IP:PORT) -storage_driver_kafka_topic=kafeidou depends_on: - elasticsearch fluentd: image: lypgcs/fluentd-es-kafka:v1.3.2 volumes: - ./:/etc/fluent - /var/log/fluentd:/var/log/fluentd

其中:

  1. cadvisor产生的数据会传输到192.168.1.60这台机器的kafka服务,topic为kafeidou

  2. elasticsearch指定为单机模式启动(discovery.type=single-node环境变量),单机模式启动是为了方便实验整体效果

fluent.conf

#
# type http
# port 8888
#


@type kafka
brokers 192.168.1.60:9092
format json

topic kafeidou




@type copy

#
# @type stdout
#



@type elasticsearch
host 192.168.1.60
port 9200
logstash_format true
#target_index_key machine_name
logstash_prefix kafeidou
logstash_dateformat %Y.%m.%d

flush_interval 10s


其中:

  1. type为copy的插件是为了能够将fluentd接收到的数据复制一份,是为了方便调试,将数据打印在控制台或者存储到文件中,这个配置文件默认关闭了,只提供必要的es输出插件.
    需要时可以将@type stdout这一块打开,调试是否接收到数据.

  2. 输入源也配置了一个http的输入配置,默认关闭,也是用于调试,往fluentd放入数据.
    可以在linux上执行下面这条命令:

    curl -i -X POST -d 'json={"action":"write","user":"kafeidou"}' http://localhost:8888/mytag
  3. target_index_key参数,这个参数是将数据中的某个字段对应的值作为es的索引,例如这个配置文件用的是machine_name这个字段内的值作为es的索引.

开始部署

在包含docker-compose.yml文件和fluent.conf文件的目录下执行:
docker-compose up -d

在查看所有容器都正常工作之后可以查看一下elasticsearch是否生成了预期中的数据作为验证,这里使用查看es的索引是否有生成以及数据数量来验证:

-bash: -: 未找到命令
[root@master kafka]# curl http://192.168.1.60:9200/_cat/indices?v
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open 55a4a25feff6 Fz_5v3suRSasX_Olsp-4tA 1 1 1 0 4kb 4kb

也可以直接在浏览器输入http://192.168.1.60:9200/_cat/indices?v查看结果,会更方便.

可以看到我这里是用了machine_name这个字段作为索引值,查询的结果是生成了一个叫55a4a25feff6的索引数据,生成了1条数据(docs.count)

到目前为止kafka->fluentd->es这样一个日志收集流程就搭建完成了.

当然了,架构不是固定的.也可以使用fluentd->kafka->es这样的方式进行收集数据.这里不做演示了,无非是修改一下fluentd.conf配置文件,将es和kafka相关的配置做一下对应的位置调换就可以了.

鼓励多看官方文档,在github或fluentd官网上都可以查找到fluentd-es插件和fluentd-kafka插件.

上述就是小编为大家分享的Elasticsearch+Fluentd+Kafka怎么搭建分布式日志系统了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

数据 文件 配置 日志 索引 服务 插件 生成 系统 单机 字段 模式 流程 传输 输入 分布式 内容 参数 命令 容器 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海睿民互联网科技有限公司 中关村互联网 科技集团 科技创新与互联网经济 互联网与科技发展 互联网最新的科技有限公司 金融科技创新监管互联网金融 深圳科技互联网 以房互联网科技 互联网金融科技平台 广西拼得多互联网科技有限公司 老年人脱离互联网科技的作文 云创客互联网科技公司 随着互联网科技发展 成都铂石互联网科技做什么的 杭州壁岐互联网科技有限公司 元气玛特互联网科技公司是外包吗 互联网金融科技元年 世界互联网科技成果奖 江苏互联网智能科技产品出厂价 北京瑞云互联网科技有限公司 新华互联网科技校企合作 汉立互联网科技有限公司联系电话 互联网科技公司需要的职位 科技互联网的估值 阿里互联网科技公司 深圳市罗太互联网科技有限公司 爱医互联网络科技 陕西九四连强互联网科技有限公司 青岛易易互联网科技 株洲百竞科技的互联网营销顾问
0