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 端口是否监听正常

相关推荐
Avan_菜菜13 小时前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
程序员老赵14 小时前
10 分钟部署 OpenCode:Docker 一键安装,浏览器打开就能用 AI 写代码(附完整命令与排错)
docker·容器·ai编程
WangMingHua11118 小时前
LM Studio Docker 部署——本地大模型一键启动
docker
SelectDB2 天前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
曲幽2 天前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate
XIAOHEZIcode3 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220704 天前
如何搭建本地yum源(上)
运维
武子康4 天前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
大树887 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠7 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql