简介
ELK 是一套由 Elasticsearch、Logstash 和 Kibana 组成的开源工具,用于搜索、分析和可视化数据。
- Elasticsearch:一个基于 Lucene 的分布式搜索引擎,提供 RESTful API,能够实时存储、搜索和分析大量数据。它支持全文搜索和复杂查询,非常适合用于日志分析和数据检索。
- Logstash:一个强大的数据处理管道,可以接收、处理和转发数据。它支持多种输入源(如日志文件、数据库、消息队列等),可以对数据进行过滤、转换,然后将其发送到 Elasticsearch 或其他目标系统。
- Kibana:一个数据可视化界面,用户可以通过它创建各种图表、仪表盘和报表,以便更好地理解和展示存储在 Elasticsearch 中的数据。Kibana 提供了丰富的可视化选项,使得数据分析变得直观易懂。
ELK 堆栈常用于日志管理、监控和业务分析等场景,因其强大的搜索和可视化能力,受到广泛应用。
部署
初始化配置
创建es数据目录data和插件目录plugins
mkdir data plugins
chmod 777 data plugins
创建elasticsearch.yml
cat > elasticsearch.yml <<EOF
network.host: 0.0.0.0
EOF
创建kibana.yml
cat > kibana.yml <<EOF
server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://elasticsearch:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true
i18n.locale: "zh-CN"
EOF
创建logstash.conf
cat > logstash.conf <<EOF
input {
# 来源beats
beats {
# 端口
port => "5044"
}
}
output {
elasticsearch {
hosts => ["http://elasticsearch:9200"]
index => "test"
}
stdout { codec => rubydebug }
}
EOF
创建docker-compose.yaml
cat > docker-compose.yaml <<EOF
version: '3'
services:
elasticsearch:
image: elasticsearch:7.7.0 # 镜像版本
container_name: elasticsearch # 容器名称
restart: always # 自动重启
environment:
- "discovery.type=single-node" # 以单一节点模式启动
- "TZ=Asia/Shanghai" # 设置时区
volumes: # 持久化数据
- ./data:/usr/share/elasticsearch/data
- ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
- ./plugins:/usr/share/elasticsearch/plugins
ports: # 端口映射
- 9200:9200
- 9300:9300
deploy:
resources:
limits:
cpus: "1" # 限制 CPU 核心数
memory: "2G" # 限制内存大小
kibana:
image: kibana:7.7.0
container_name: kibana
restart: always
depends_on:
- elasticsearch #kibana在elasticsearch启动之后再启动
environment:
- i18n.locale=zh-CN
- TZ=Asia/Shanghai
volumes:
- ./kibana.yml:/usr/share/kibana/config/kibana.yml
ports:
- 5601:5601
deploy:
resources:
limits:
cpus: "1"
memory: "1G"
logstash:
image: logstash:7.7.0
container_name: logstash
restart: always
ports:
- 5044:5044
- 5045:5045
environment:
- TZ=Asia/Shanghai
depends_on:
- elasticsearch
deploy:
resources:
limits:
cpus: "1"
memory: "1G"
EOF
启动
docker compose up -d
访问
curl http://127.0.0.1:5601