快速开始
环境要求
Linux发行版
Docker 20.10+
Docker Compose 2.0+
系统内存 4GB+ (推荐 8GB+)
磁盘空间 10GB+
一键部署
# 1. 首次完整部署(推荐)
./scripts/elk-manager.sh setup
# 2. 或快速启动(轻量级,无完整配置)
./scripts/elk-manager.sh quick-start
# 3. 验证服务状态
./scripts/elk-manager.sh verify
# 4. 生成示例日志数据
./scripts/elk-manager.sh generate-logs
统一管理脚本
统一的管理脚本 elk-manager.sh
,支持完整的生命周期管理
# 查看帮助
./scripts/elk-manager.sh help
# 主要命令
./scripts/elk-manager.sh setup # 完整部署(首次安装)
./scripts/elk-manager.sh quick-start # 快速启动(轻量级)
./scripts/elk-manager.sh start # 启动所有服务
./scripts/elk-manager.sh stop # 停止所有服务
./scripts/elk-manager.sh restart # 重启所有服务
./scripts/elk-manager.sh status # 查看服务状态
./scripts/elk-manager.sh verify # 健康检查
./scripts/elk-manager.sh logs [service] # 查看日志
./scripts/elk-manager.sh cleanup # 清理环境
./scripts/elk-manager.sh reset-password # 重置密码
自定义配置
创建 .env
文件进行个性化配置:
# ELK 版本
ELK_VERSION=8.19.1
# Elasticsearch 配置
ELASTIC_PASSWORD=your_strong_password
ELASTIC_USER=elastic
ES_JAVA_OPTS="-Xms2g -Xmx2g"
# Kibana 配置
KIBANA_PASSWORD=your_kibana_password
KIBANA_USER=kibana_system
# Logstash 配置
LOGSTASH_PASSWORD=your_logstash_password
LOGSTASH_USER=logstash_system
LS_JAVA_OPTS="-Xms1g -Xmx1g"
# 端口配置
ELASTICSEARCH_PORT=9200
KIBANA_PORT=5601
LOGSTASH_BEATS_PORT=5044
LOGSTASH_TCP_PORT=5000
添加自定义日志源
编辑 filebeat/config/filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /path/to/your/app/logs/*.log
fields:
log_type: your_app
service: your_service
environment: production
fields_under_root: true
multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
multiline.negate: true
multiline.match: after
重启 Filebeat 使配置生效:
./scripts/elk-manager.sh restart
# 或者
docker-compose restart filebeat
项目结构
elk/
├── docker-compose.yml # Docker Compose 主配置
├── README.md # 项目文档
├── .env.example # 环境配置模板
├── cookies.txt # 认证相关文件
├── elasticsearch/ # Elasticsearch 配置
│ ├── config/
│ │ └── elasticsearch.yml # ES 主配置文件
│ ├── data/ # ES 数据目录(持久化)
│ └── logs/ # ES 日志目录
├── logstash/ # Logstash 配置
│ ├── config/
│ │ └── logstash.yml # Logstash 主配置
│ ├── pipeline/
│ │ └── logstash.conf # 数据处理管道配置
│ └── logs/ # Logstash 日志目录
├── kibana/ # Kibana 配置
│ ├── config/
│ │ └── kibana.yml # Kibana 主配置
│ ├── data/ # Kibana 数据目录(持久化)
│ └── logs/ # Kibana 日志目录
├── filebeat/ # Filebeat 配置
│ ├── config/
│ │ └── filebeat.yml # Filebeat 主配置
│ └── data/ # Filebeat 数据目录
└── scripts/ # 管理脚本
├── elk-manager.sh # 🆕 统一管理脚本(主要工具)
├── cleanup.sh # 清理脚本(优化版)
├── generate-sample-logs.sh # 示例日志生成(增强版)
└── verify.sh # 服务验证脚本(优化版)
服务架构
数据流向
应用日志 → Logstash → Elasticsearch → Kibana
↓ ↓ ↓ ↓
多协议输入 数据处理 索引存储 可视化展示
服务访问
Elasticsearch REST API
访问地址: http://localhost:9200 认证方式: HTTP Basic Auth (elastic / your_password)
# Elasticsearch 集群状态
curl -u elastic:password "http://localhost:9200/_cluster/health?pretty"
# 节点统计信息
curl -u elastic:password "http://localhost:9200/_nodes/stats?pretty"
# 索引统计信息
curl -u elastic:password "http://localhost:9200/_stats?pretty"
# Logstash 管道统计
curl "http://localhost:9600/_node/stats/pipelines?pretty"
Kibana 控制台
访问地址: http://localhost:5601 登录账号: elastic/your_password
Logstash 管理API
访问地址: http://localhost:9600 主要端点: /_node/stats
, /_node/plugins
安全配置
内置用户账号
生产环境建议:修改 .env
文件中的默认密码
故障排除
常见问题
1. 容器启动失败
# 检查服务日志
./scripts/elk-manager.sh logs
./scripts/elk-manager.sh logs elasticsearch
# 检查资源使用情况
docker stats
# 检查端口占用
ss -tuln | grep -E ":(9200|9300|5601|5044|5000|9600)"
2. 内存不足错误
# 编辑 .env 文件,减少 JVM 堆内存
ES_JAVA_OPTS=-Xms1g -Xmx1g
LS_JAVA_OPTS=-Xms512m -Xmx512m
# 检查系统内存
free -h
# 重启服务
./scripts/elk-manager.sh restart
3. Elasticsearch 连接失败
# 检查服务状态
./scripts/elk-manager.sh verify
# 重置elastic用户密码
./scripts/elk-manager.sh reset-password elastic
# 检查防火墙设置
sudo ufw status
4. Filebeat 无法发送日志
# 检查Filebeat状态
./scripts/elk-manager.sh logs filebeat
# 验证日志文件路径
ls -la /path/to/log/files/
# 检查文件权限
sudo chown -R 1000:1000 ./filebeat/data
5. Kibana 无法访问
# 检查Kibana日志
./scripts/elk-manager.sh logs kibana
# 等待Kibana完全启动(可能需要2-3分钟)
curl -I http://localhost:5601
# 清理Kibana数据重新初始化
sudo rm -rf ./kibana/data/*
./scripts/elk-manager.sh restart
简单采集Spring日志的Demo
访问部署成功后的页面
访问地址: http://localhost:5601
访问地址: http://localhost:9600 主要端点: /_node/stats
, /_node/plugins
访问地址: http://localhost:9200