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