前言
目前 github 上有很多集成好的 ELK 开源项目,但是我们本次搭建还是按照最基础的 docker 部署,对于我来说,我本次做的是教学和记笔记的意义,我无需使用 github 上的开源项目来搭建 ELK 环境
开始搭建
创建 Docker Network
| 1 | docker network create elasticsearch | 
这一步是让后续的容器可以选择在同一局域网下,为了后续 Kibana 在连接 ElasticSearch 的时候,能够直接通过容器名访问
ElasticSearch 搭建
| 1 | docker run -d --name elasticsearch \ | 
注释
- 9200:用于 HTTP 通信
- 9300:用于节点之间的通信
- -e "discovery.type=single-node":设置 Elasticsearch 以单节点模式运行
- -e "ES_JAVA_OPTS=-Xms512m -Xmx2g":设置 JVM 的内存,因为我的实验机子内存较小,所以压缩一下 ES 的性能,本身也只是教学目的
- -e "xpack.security.enabled=false":关闭安全访问开关,防止通过 HTTP 访问时被拒绝,只能通过 HTTPS 访问
- -e "xpack.security.http.ssl.enabled=false":关闭 SSL 验证,防止通过 HTTP 访问时被拒绝,只能通过 HTTPS 访问
Kibana 搭建
| 1 | docker run -d --name kibana \ | 
注释
- 5601:用于 HTTP 访问 Kibana
- -e "ELASTICSEARCH_HOSTS=http://elasticsearch:9200"":用于 Kibana 访问 ElasticSearch 实例,由于是同一个 Docker Network 下,直接使用容器名 + 端口的形式即可访问
- -e "I18N_LOCALE=zh-CN":将 Kibana 的语言设置为中文
检查
检查容器运行情况
| 1 | docker ps -a | 
如下图,则表示容器运行正常:
检查服务是否可访问
- 检查 ElasticSearch 服务情况1 curl localhost:9200 
结果如图,则表示运行正常:
- 检查 Kibana 服务情况1 curl localhost:5601 
结果如图,则表示运行正常:
配置 Nginx 反向代理(非必须)
由于我的实验机子,仅开启了必要端口访问,所以我还需要配置 Nginx 进行反向代理访问我的服务,如果你的机子开启了 8200 和 5601 端口访问,则可忽略此步骤
- 增加 Nginx 代理 ElasticSearch 服务的配置文件1 vim /etc/nginx/conf.d/elasticsearch.conf 
写入如下内容:
| 1 | server { | 
- 增加 Nginx 代理 Kibana 服务的配置文件1 vim /etc/nginx/conf.d/kibana.conf 
写入如下内容:
| 1 | server { | 
- 重载配置文件 - 1 
 2
 3
 4
 5- 检查配置文件语法是否正确 
 nginx -t
 重载配置文件
 nginx -s reload
- 浏览器访问 


结语
到此,EFK 中的 EK 部分已经搭建完毕