跳转至

Docker 单点部署 ELK

以下示例使用 Elasticsearch、Kibana 与 Logstash 7.5.0,适合本地学习或测试环境。生产环境请使用受支持的版本,并启用认证、TLS 与访问控制。

先在 /opt 里创建一个 elk 文件夹,后续所有文件都放在这个目录中。

sudo mkdir -p /opt/elk
cd /opt/elk

拉取 Elasticsearch、Kibana、Logstash 的镜像:

docker pull elasticsearch:7.5.0
docker pull kibana:7.5.0
docker pull logstash:7.5.0

本宿主机 IP 地址:192.168.0.105

一:部署 ES

1. 创建 Elasticsearch 配置目录

elk 目录中创建 ES 文件夹,用于存放 Elasticsearch 的配置与数据文件。

# 创建 ES 所需目录,并写入 elasticsearch.yml
sudo sh -c 'cd /opt/elk/ && mkdir -p es && cd es/ && mkdir -p data config plugins && chmod -R 755 /opt/elk/es/ && cd config/ && cat > elasticsearch.yml <<EOF
cluster.name: "my-test-cluster"
network.host: 0.0.0.0
discovery.type: single-node
xpack.security.enabled: false
http.cors.enabled: true
http.cors.allow-origin: "*"
EOF'

# 文件授权
sudo chown -R 1000:1000 /opt/elk/es
sudo chmod -R 750 /opt/elk/es
配置项 说明
cluster.name "my-test-cluster" 定义集群名称。
network.host 0.0.0.0 设置节点绑定的网络接口地址。
discovery.type single-node 指定节点发现机制为单节点模式。
xpack.security.enabled false 禁用 X-Pack 安全功能;仅建议用于本地测试。
http.cors.enabled true 启用 HTTP 跨域资源共享(CORS)。
http.cors.allow-origin "*" 设置允许跨域请求的来源;生产环境应限制为明确域名。

2. 创建 ES 启动脚本

创建启动文件:

vim /opt/elk/startEs.sh

写入以下内容:

#!/usr/bin/env bash

docker run -d \
  --name es-7.5.0 \
  --restart unless-stopped \
  -p 9200:9200 \
  -p 9300:9300 \
  -e "discovery.type=single-node" \
  -v /opt/elk/es/data:/usr/share/elasticsearch/data \
  -v /opt/elk/es/plugins:/usr/share/elasticsearch/plugins \
  -v /opt/elk/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
  elasticsearch:7.5.0

保存后执行:

chmod +x /opt/elk/startEs.sh
/opt/elk/startEs.sh

3. 验证服务

等待容器启动完成后,访问 Elasticsearch:

curl http://192.168.0.105:9200

若返回集群名称、节点名称和版本信息,说明 Elasticsearch 已正常运行。