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

相关推荐
好名字更能让你们记住我1 小时前
通过docker在本地部署博客系统服务
linux·运维·服务器·ubuntu·docker·容器
Tim风声(网络工程师)1 小时前
双射频和三射频无线AP
运维·网络
梦梦代码精1 小时前
功能堆砌不如好扩展:4 款开源商城系统的选型思考
java·docker·uni-app·开源·php
志栋智能1 小时前
超自动化巡检:让运维工作可衡量、可优化
运维·数据库·自动化
遇见火星1 小时前
从0到1掌握Ansible:让自动化运维不再是梦想
运维·自动化·ansible
biter down1 小时前
7. Fixture :自动化前后置
运维·自动化
文青小兵1 小时前
Linux云计算——docker 告警(六)
linux·运维·docker·云计算·prometheus
xiep14383335101 小时前
CentOS 7.9 安装 TigerVNC
linux·运维·centos
2601_957190901 小时前
实战落地为王,全尺寸定制飞行影院适配全场景文旅升级
大数据·运维·人工智能