EFLK 与 EFK 日志系统对比及搭建流程

一、EFLK 与 EFK 的区别

1. 基本组成

  • EFK:Elasticsearch + Fluentd + Kibana
  • EFLK:Elasticsearch + Filebeat + Logstash + Kibana

2. 核心差异

特性EFKEFLK
日志收集器FluentdFilebeat + Logstash
资源消耗较高(Ruby实现)较低(Go实现Filebeat)
处理能力内置强大过滤和路由功能需要结合Logstash进行复杂处理
扩展性插件丰富但依赖Ruby生态更轻量级,易于扩展
适用场景复杂日志处理场景大规模日志收集场景

二、EFK 搭建流程

1. 环境准备

  • 至少3台服务器(可单机测试)
  • 安装Docker和Docker Compose
  • 建议配置:4核CPU,8GB内存,100GB存储

2. 安装步骤

使用Docker Compose部署

version: '3'

services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0
    environment:
      - discovery.type=single-node
      - ES_JAVA_OPTS=-Xms1g -Xmx1g
    ports:
      - "9200:9200"
    volumes:
      - es_data:/usr/share/elasticsearch/data

  kibana:
    image: docker.elastic.co/kibana/kibana:7.14.0
    ports:
      - "5601:5601"
    depends_on:
      - elasticsearch

  fluentd:
    image: fluent/fluentd:v1.14-1
    ports:
      - "24224:24224"
      - "24224:24224/udp"
    volumes:
      - ./fluentd.conf:/fluentd/etc/fluent.conf
    depends_on:
      - elasticsearch

volumes:
  es_data:
Fluentd 配置文件 (fluentd.conf)
<source>
  @type forward
  port 24224
  bind 0.0.0.0
</source>

<match *.*>
  @type elasticsearch
  host elasticsearch
  port 9200
  index_name fluentd-${tag}-%Y%m%d
  type_name fluentd
  <buffer>
    @type file
    path /fluentd/log/buffer
  </buffer>
</match>
启动服务
docker-compose up -d

3. 验证安装

  • Elasticsearch: curl http://localhost:9200
  • Kibana: 访问 http://localhost:5601
  • 发送测试日志: echo '{"message":"test"}' | nc localhost 24224

三、EFLK 搭建流程

1. 环境准备

同EFK,额外需要安装Filebeat

2. 安装步骤

Docker Compose 文件
version: '3'

services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0
    environment:
      - discovery.type=single-node
      - ES_JAVA_OPTS=-Xms1g -Xmx1g
    ports:
      - "9200:9200"
    volumes:
      - es_data:/usr/share/elasticsearch/data

  kibana:
    image: docker.elastic.co/kibana/kibana:7.14.0
    ports:
      - "5601:5601"
    depends_on:
      - elasticsearch

  logstash:
    image: docker.elastic.co/logstash/logstash:7.14.0
    ports:
      - "5044:5044"
    volumes:
      - ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf
    depends_on:
      - elasticsearch

  filebeat:
    image: docker.elastic.co/beats/filebeat:7.14.0
    volumes:
      - ./filebeat.yml:/usr/share/filebeat/filebeat.yml
      - /var/log:/var/log:ro
    depends_on:
      - logstash

volumes:
  es_data:
Logstash 配置文件 (logstash.conf)
input {
  beats {
    port => 5044
  }
}

filter {
  grok {
    match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:loglevel} %{GREEDYDATA:message}" }
  }
}

output {
  elasticsearch {
    hosts => ["elasticsearch:9200"]
    index => "logstash-%{+YYYY.MM.dd}"
  }
}
Filebeat 配置文件 (filebeat.yml)
启动服务
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/*.log

output.logstash:
  hosts: ["logstash:5044"]
docker-compose up -d

3. 验证安装

  • 检查Elasticsearch索引: curl http://localhost:9200/_cat/indices?v
  • 在Kibana中创建索引模式
  • 查看收集到的日志数据

四、性能调优建议

EFK 调优

  1. Fluentd:

    • 调整buffer_chunk_limit和buffer_queue_limit
    • 使用多worker进程
    • 启用压缩传输
  2. Elasticsearch:

    • 合理设置分片数
    • 配置索引生命周期管理(ILM)

EFLK 调优

  1. Filebeat:

    • 配置backoff和max_backoff参数
    • 使用loadbalance选项分散负载
  2. Logstash:

    • 调整pipeline.workers和pipeline.batch.size
    • 使用持久化队列
  3. Elasticsearch:

    • 同EFK配置建议

五、选择建议

选择EFK当:

  • 需要复杂日志处理逻辑
  • 已有Ruby技术栈
  • 需要丰富的插件生态系统

选择EFLK当:

  • 处理大规模日志数据
  • 需要更轻量级的日志收集器
  • 系统资源有限
  • 需要更简单的扩展和维护

两种方案都可以很好地处理日志管理需求,具体选择应根据实际场景和技术栈决定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值