千家信息网

怎么用Elasticsearch+Fluentd+Kafka搭建日志系统

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容介绍了"怎么用Elasticsearch+Fluentd+Kafka搭建日志系统"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧
千家信息网最后更新 2026年11月01日怎么用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.

数据的传输链路是这样: Cadvisor->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
  1. 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?vhealth status index                                uuid                   pri rep docs.count docs.deleted store.size pri.store.sizeyellow 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安全错误 数据库的锁怎样保障安全 上海挚品互联网科技有限公司 上海卓越科技互联网 顺玮阁互联网科技 天下捷融互联网科技 互联网科技公司名称 互联网金融监管科技 互联网实体化科技化 现代科技和互联网有关系吗 科技与互联网的利与弊 苏州铭阳互联网科技有限公司 成都互联网科技公司工作好不好 银川新华互联网科技学校联系电话 洛阳共同富裕互联网科技有限公司 互联网科技创新的路径 上海京穆互联网科技有限公司 东营紫格互联网科技 云鲸互联网络科技有限公司 张家口科技产业互联网平台 科技和互联网行业的特点 长沙易易互联网科技有限公司 广州万易互联网科技有限公司 深圳九邦互联网科技有限公司 科技创新互联网企业 互联网科技实习生岗位职责 成都互联网科技公司100强 互联网公司黑科技创始人 为客找房互联网科技公司怎么样 互联网营销推广黑科技 中国新注册互联网科技 广州智享互联网科技
0