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

相关推荐
KKKlucifer1 小时前
运营商全域安全运维支撑体系落地实践
运维·安全
EAIReport2 小时前
工业电气自动化数据治理破局:多Agent大模型赋能全景智能决策
大数据·运维·自动化
会编程的土豆2 小时前
Go 模板初识
linux·运维·服务器
腾讯蓝鲸智云2 小时前
标杆客户实践提炼:CFlow 版本价值流模板实战指南
运维·服务器·自动化·云计算·devops
Yang96114 小时前
自动化射频测试台快速搭建,鼎讯信通 DXSL 矢量信号源模块二次开发集成指南
运维·自动化
小小洋洋4 小时前
OpenWrt 从U盘迁移到内置 eMMC,并完成扩容与 Docker 安装
java·docker·eureka
翼龙云_cloud4 小时前
腾讯云国际站代理商: COS 对象存储 + CDN加速 从创建到加速完成
运维·服务器·云计算·腾讯云
Eloudy4 小时前
docker build 与 docker buildx build 的应用场景
docker·构建
瞬间&永恒~5 小时前
【Docker】(三)联合文件系统UnionFS + Overlay2
docker·云原生·容器
weixin_435776115 小时前
2026年长沙托育vi设计从风格定位到元素运用的设计方法
linux·运维·服务器·python