前言
本文主要介绍如何在本地使用 Docker 搭建 ELK 开发环境(单机版),其中包括 Elasticsearch、Logstash、Kibana 的安装。
版本说明
软件 | 版本 | 说明 |
---|
Docker | 24.0.7 | |
Elasticsearch | 7.17.4 | |
Logstash | 7.17.4 | |
Kibana | 7.17.4 | |
创建配置文件
配置目录的整体结构如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| /data ├── elasticsearch │ ├── config │ │ └── elasticsearch.yml │ ├── data │ └── plugins ├── kibana │ └── config │ └── kibana.yml └── logstash ├── config │ └── logstash.yml └── pipeline └── logstash.conf
|
Kibana 配置文件
在宿主机内创建 Kibana 的配置目录、配置文件。
1 2 3 4 5 6 7 8 9 10 11
| mkdir -p /data/kibana/config/
touch /data/kibana/config/kibana.yml
chmod -R 777 /data/kibana/
vim /data/kibana/config/kibana.yml
|
1 2 3 4
| server.host: '0.0.0.0' server.shutdownTimeout: '5s' elasticsearch.hosts: ['http://elasticsearch:9200'] monitoring.ui.container.elasticsearch.enabled: true
|
配置参数说明
server.host
: 设置成 0.0.0.0
表示允许所有机器访问elasticsearch.hosts
: 连接 Elasticsearch 容器的地址,一般使用 http://容器名称:port
monitoring.ui.container.elasticsearch.enabled
: 是否开启 Kibana 对 Elasticsearch 容器的监控
Logstash 配置文件
在宿主机内创建 Logstash 的配置目录、配置文件。
1 2 3 4 5 6 7 8 9 10
| mkdir -p /data/logstash/config/ mkdir -p /data/logstash/pipeline/
touch /data/logstash/config/logstash.yml touch /data/logstash/pipeline/logstash.conf
chmod -R 777 /data/logstash/
|
编辑 /data/logstash/config/logstash.yml
配置文件,写入以下内容:
1 2 3
| http.host: "0.0.0.0" xpack.monitoring.enabled: true xpack.monitoring.elasticsearch.hosts: [ "http://elasticsearch:9200" ]
|
编辑 /data/logstash/pipeline/logstash.conf
配置文件,写入以下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| input { tcp { mode => "server" host => "0.0.0.0" port => 5049 codec => json_lines } }
output { elasticsearch { hosts => "http://elasticsearch:9200" index => "logstash-%{+YYYY.MM.dd}" } }
|
配置参数说明
xpack.monitoring.enabled
:是否开启 Logstash 对 Elasticsearch 容器的监控http://elasticsearch:9200
:连接 Elasticsearch 容器的地址,一般使用 http://容器名称:port
/data/logstash/config/logstash.yml
:Logstash 的基础配置文件/data/logstash/pipeline/logstash.conf
:Logstash 的管道配置文件,一般需要根据不同的业务需求进行自定义配置,例如结合 FileBeat 一起使用
Elasticsearch 配置文件
在宿主机内创建 Elasticsearch 的插件目录、数据目录、配置文件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| mkdir -p /data/elasticsearch/plugins/
mkdir -p /data/elasticsearch/data/
mkdir -p /data/elasticsearch/config/
touch /data/elasticsearch/config/elasticsearch.yml
chmod -R 777 /data/elasticsearch/
vim /data/elasticsearch/config/elasticsearch.yml
|
Docker Compose 配置文件
在宿主机的任意目录下创建 docker-compose.yml
配置文件,用于 Docker Compose 管理容器,可以根据实际需求适当更改 Elasticsearch、Logstash、Kibana 镜像的版本号。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| version: '3.9'
services: elasticsearch: image: elasticsearch:7.17.4 container_name: elasticsearch restart: always ports: - "9200:9200" - "9300:9300" ulimits: memlock: soft: -1 hard: -1 nofile: soft: 65536 hard: 65536 environment: - TZ=Asia/Shanghai - node.name=es-node - cluster.name=es-cluster - discovery.type=single-node - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx1024m" volumes: - /data/elasticsearch/data:/usr/share/elasticsearch/data - /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins - /data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml networks: - docker-elk
logstash: image: logstash:7.17.4 container_name: logstash restart: always ports: - "5044:5044" - "5049:5049" - "9600:9600" environment: - TZ=Asia/Shanghai - "LS_JAVA_OPTS=-Xms512m -Xmx1024m" volumes: - /data/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml - /data/logstash/pipeline/logstash.conf:/usr/share/logstash/pipeline/logstash.conf networks: - docker-elk depends_on: - elasticsearch
kibana: image: kibana:7.17.4 container_name: kibana restart: always ports: - "5601:5601" environment: - TZ=Asia/Shanghai - I18N_LOCALE=zh-CN - ELASTICSEARCH_URL=http://elasticsearch:9200 volumes: - /data/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml networks: - docker-elk depends_on: - elasticsearch
networks: docker-elk: driver: bridge
|
配置参数说明
LS_JAVA_OPTS
:设置 Logstash 的堆内存大小ES_JAVA_OPTS
:设置 Elasticsearch 的堆内存大小,官方不建议在生产中使用该参数TZ=Asia/Shanghai
:设置 Docker 容器的时区为上海I18N_LOCALE=zh-CN
:设置 Kibana 默认的语言为中文ELASTICSEARCH_URL
:Kibana 连接 Elasticsearch 容器的地址,一般使用 http://容器名称:port
discovery.type=single-node
:将 Elasticsearch 的集群发现模式配置为单节点模式bootstrap.memory_lock=true
:是否锁住内存,避免 Elasticsearch 使用交换分区(Swap)带来的性能损失,默认值是 false
启动 Docker 容器
1 2 3 4 5
| docker compose up -d
docker compose ps -a
|
测试 Docker 容器
若可以使用以下地址访问对应的应用,则说明对应的 Docker 容器正常运行。值得一提的是,192.168.1.130
是宿主机的 IP 地址,请自行更改为您宿主机的 IP。
应用 | 访问地址 | 说明 |
---|
Logstash | 192.168.1.130:5044 | |
Elasticsearch | 192.168.1.130:9200 | |
Kibana | 192.168.1.130:5601 | 浏览器打开后,可以直接访问 Kibanan 的控制台管理页面 |
参考资料
官方安装教程
Docker Compose 配置编写
Docker Compose 安装 ELK