使用Docker部署ELK
使用Docker部署ELK
简介
ELK Stack是Elasticsearch、Logstash和Kibana的简称,是目前最流行的开源日志分析平台。通过Docker部署ELK可以大大简化安装配置过程,提高部署效率。
- Elasticsearch: 分布式搜索引擎,用于存储和检索数据
- Logstash: 数据收集和转换引擎,用于日志收集和处理
- Kibana: 数据可视化平台,提供图表和仪表板功能
前置准备
- 安装Docker (版本 20.10+)
- 安装Docker Compose (版本 2.0+)
- 确保服务器至少有4GB内存
- 建议使用Linux系统(如Ubuntu 20.04/22.04)
部署步骤
1. 创建项目目录结构
mkdir elk-docker
cd elk-docker
mkdir elasticsearch kibana logstash
2. 创建docker-compose.yml文件
version: '3.7'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.12.0
container_name: elasticsearch
environment:
- node.name=elasticsearch
- cluster.name=es-docker-cluster
- discovery.type=single-node
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- ./elasticsearch/data:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- elk
logstash:
image: docker.elastic.co/logstash/logstash:8.12.0
container_name: logstash
volumes:
- ./logstash/pipeline:/usr/share/logstash/pipeline
ports:
- 5044:5044
environment:
LS_JAVA_OPTS: "-Xmx256m -Xms256m"
networks:
- elk
depends_on:
- elasticsearch
kibana:
image: docker.elastic.co/kibana/kibana:8.12.0
container_name: kibana
ports:
- 5601:5601
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
networks:
- elk
depends_on:
- elasticsearch
networks:
elk:
driver: bridge
3. 配置Logstash
创建logstash/pipeline/logstash.conf
文件:
input {
beats {
port => 5044
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
}
output {
elasticsearch {
hosts => ["elasticsearch:9200"]
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
}
}
4. 启动服务
# 启动所有服务
docker-compose up -d
# 查看服务状态
docker-compose ps
配置说明
Elasticsearch配置
内存设置:
- 通过
ES_JAVA_OPTS
环境变量配置JVM堆大小 - 建议设置为服务器内存的50%
- 通过
重要配置参数:
discovery.type=single-node
: 单节点模式bootstrap.memory_lock=true
: 锁定内存,防止交换
Kibana配置
- 访问地址:http://localhost:5601
- 默认用户名:elastic
- 密码:首次启动时自动生成
Logstash配置
- 管道配置:
- 输入:支持多种输入源
- 过滤:数据处理和转换
- 输出:定义数据出口
常见问题
1. Elasticsearch无法启动
常见原因:
- 内存不足
- 权限问题
- 端口被占用
解决方案:
# 检查日志
docker logs elasticsearch
# 修改系统配置
sudo sysctl -w vm.max_map_count=262144
2. Kibana连接Elasticsearch失败
检查项:
- Elasticsearch是否正常运行
- 网络连接是否正常
- 认证信息是否正确
3. Logstash数据收集问题
排查步骤:
- 检查配置文件语法
- 确认输入源是否正常
- 查看Logstash日志
docker logs logstash
总结
通过Docker部署ELK具有以下优势:
- 快速部署,环境一致性好
- 配置简单,维护方便
- 资源隔离,便于扩展
- 版本控制方便
建议在生产环境中:
- 根据实际需求调整资源配置
- 做好数据备份
- 配置安全认证
- 监控服务状态
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 孤寂灬无痕
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果