docker compose elfk

ELK 7.17.18 容器化部署笔记

一、整体思路

通过 Docker Compose 编排 Elasticsearch、Logstash、Kibana 三个核心组件,实现日志采集、存储、可视化分析的基础链路;后续扩展 Filebeat 作为轻量日志采集器,对接 Docker 容器日志,最终形成 Filebeat → Logstash → Elasticsearch → Kibana的完整日志处理管道。


二、操作步骤

1. 基础环境准备

复制代码
复制代码
# 创建项目目录结构
mkdir elk && cd elk
mkdir -p logstash/pipeline

2. 编写基础 docker-compose.yml

部署单节点 ES、Logstash、Kibana,版本统一为 7.17.18,所有服务加入自定义 bridge 网络 elk:

组件 核心配置
Elasticsearch 单节点模式、JVM 堆内存 512M、映射 9200 端口
Logstash 挂载 pipeline 配置目录、暴露 5044(Beats 输入)、9600(监控)端口
Kibana 指定 ES 地址、设置中文语言、映射 5601 端口

3. 配置 Logstash 管道

编辑 logstash/pipeline/logstash.conf,初始配置示例:

复制代码
复制代码
input {
  beats {
    port => 5044
  }
}
output {
  elasticsearch {
    hosts => ["elasticsearch:9200"]
    index => "filebeat-%{+YYYY.MM.dd}"
  }
  stdout {
    codec => rubydebug
  }
}

4. 启动集群并验证状态

复制代码
复制代码
# 后台启动所有服务
docker compose up -d

# 查看服务运行状态
docker compose ps

# 查看组件日志排查问题
docker compose logs -f elasticsearch
docker compose logs -f logstash
  • 访问 http://<服务器IP>:9200验证 ES 可用性

  • 访问 http://<服务器IP>:5601进入 Kibana 控制台

5. 扩展 Filebeat 采集器

(1)更新 docker-compose.yml,新增 Filebeat 服务:
复制代码
复制代码
filebeat:
  image: elastic/filebeat:7.17.18
  container_name: filebeat
  depends_on:
    - elasticsearch
    - logstash
  volumes:
    - ./filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro
    - /var/lib/docker/containers:/var/lib/docker/containers:ro
    - /var/run/docker.sock:/var/run/docker.sock:ro
  networks:
    - elk
(2)编写 Filebeat 配置 filebeat/filebeat.yml:
复制代码
复制代码
filebeat.inputs:
- type: container
  enabled: true
  paths:
    - '/var/lib/docker/containers/*/*.log'
  processors:
    - add_docker_metadata:
        host: "unix:///var/run/docker.sock"

output.logstash:
  hosts: ["logstash:5044"]
(3)重启服务生效:
复制代码
复制代码
docker compose down && docker compose up -d

6. 结果验证

在 Kibana Stack Management → Index Management ​ 中可看到自动生成的 filebeat-*索引,说明日志链路打通。


三、相关知识点

1. 组件作用

组件 定位
Elasticsearch 分布式搜索分析引擎,负责日志存储、索引、查询
Logstash 数据处理管道,支持日志过滤、转换、路由
Kibana 可视化平台,提供索引管理、仪表盘、日志检索界面
Filebeat 轻量级日志采集器,资源占用低,适合边缘节点采集

2. 注意事项

  • 版本一致性:ELK 全栈组件版本必须完全一致,否则会出现兼容性问题

  • Compose 警告:version: '3'属于较旧语法,新版本 Docker 仍可兼容,不影响功能

  • JVM 参数:生产环境需根据机器配置调整 ES_JAVA_OPTS和 Logstash 堆内存,避免 OOM

  • 权限问题:挂载宿主机目录时需注意文件读写权限,必要时调整目录属主

  • 索引模板:7.x 版本后推荐使用「可组合索引模板」,旧版模板仅兼容保留

3. 常见报错说明

  • Logstash 提示 UseConcMarkSweepGC deprecated:JDK 9+ 已废弃该垃圾回收器,属于镜像内置配置警告,不影响运行

  • ES 提示 COMPAT locale provider will be removed:语言包兼容警告,无功能影响

  • 无日志上报:优先检查 Filebeat 配置中路径是否正确、Logstash 5044 端口是否监听正常

相关推荐
XiaoMaqqqq5 小时前
市面上正规的IP驱动产业新场景新工具哪家强
运维·python·网络协议·tcp/ip
huainingning6 小时前
RJ SW Console口忘记密码处理方法
linux·运维·服务器
布裘6 小时前
【银河麒麟】桌面系统循环登录,无法进入桌面?
linux·运维·服务器
慧都小项6 小时前
程序到了Linux才出错?用CLion把调试接到目标环境
linux·运维·服务器
Lsetea6 小时前
OpenSSL verify报unhandled critical extension:error 34与关键扩展排查
运维·https·ssl证书·openssl·证书链
guo_wen_qiang7 小时前
docker的备份与迁移
运维·docker·容器
Ruiery8 小时前
Linux 6.6内核内存管理深度解析(一):物理内存初始化 — memblock 怎么把内存交给 buddy
linux·运维·服务器
Android系统攻城狮8 小时前
Linux Gstreamer深度解析之gst_audio_encoder_get_frame_max调用流程与实战(五十九)
linux·运维·服务器·gstreamer音视频·音视频进阶·gstreamer音视频进阶
忆挽篱笙歌9 小时前
makefil
linux·运维·服务器
程序员老赵10 小时前
Docker 部署 Dolibarr:轻松搭建开源 ERP/CRM 平台
运维·前端·后端