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

相关推荐
qq_3164110326 分钟前
商用冷柜售后报修运维管理系统开发案例
运维
智码看视界43 分钟前
Day59-阿里云ACK实战:生产级K8s集群部署与运维
运维·阿里云·kubernetes·k8s·日志监控·容器运维·阿里云ack
码视野2 小时前
基于 Vue3 + Element Plus 的【智慧新能源汽车充电桩运维调度与分时共享租赁系统】设计与实现(附完整源码与PRD)
运维·人工智能·汽车·vue3
qq_426003963 小时前
【UI自动化测试】UI自动化报错解决方案
运维·ui·自动化
网安蟹佬霸3 小时前
WAF绕过技术实战:从规则检测到编码绕过全指南(2026最新版,附Payload集与自动化脚本)
运维·安全·网络安全·架构·自动化·网安
小杨不想秃头3 小时前
信息安全工程师教程第二章密码学
运维·服务器·密码学
I'mChloe3 小时前
WGCLOUD怎么监控多台服务器?从Server、Agent 部署到监控面板实战
运维·服务器
Android系统攻城狮3 小时前
Linux PipeWire深度解析之pw_init调用流程与实战(八十三)
linux·运维·服务器·音频进阶·pipewire音频进阶
国科安芯4 小时前
轨道供电韧性:ASP4644四通道降压架构在低轨卫星平台电源管理中的适用性分析
运维·网络·数据库·嵌入式硬件·架构·状态模式·低轨卫星星座
Python自动化直播5 小时前
周末测试直播自动化时,发现一个棘手的并发问题
运维·自动化