Docker 单点部署 ELK¶
以下示例使用 Elasticsearch、Kibana 与 Logstash 7.5.0,适合本地学习或测试环境。生产环境请使用受支持的版本,并启用认证、TLS 与访问控制。
先在 /opt 里创建一个 elk 文件夹,后续所有文件都放在这个目录中。
拉取 Elasticsearch、Kibana、Logstash 的镜像:
本宿主机 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 启动脚本¶
创建启动文件:
写入以下内容:
#!/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
保存后执行:
3. 验证服务¶
等待容器启动完成后,访问 Elasticsearch:
若返回集群名称、节点名称和版本信息,说明 Elasticsearch 已正常运行。