跳到主要内容

docker搭建elasticsearch+kibana

工作中需要对公司的es服务器进行配置,小白不敢直接在公司的开发机上直接修改。故需要在测试机上临时搭建一个es+kibana环境。

为了避开基础的环境问题和快速搭建,docker是我们非常好的伙伴

elasticsearch安装

docker pull elasticsearch:6.6.1

创建配置文件

# vim /etc/elasticsearch.yml
cluster.name: "docker-cluster"
network.host: 0.0.0.0
# 允许任何端口访问
transport.host: 0.0.0.0

启动容器

docker run -di --name=es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -v /etc/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml elasticsearch:6.6.1
  1. 开放了9300端口
  2. 挂载配置文件:/usr/share/elasticsearch/config/elasticsearch.yml

查看容器是否启动,以及端口是否正常开放

$ docker ps 
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
acc39c54a0d8 elasticsearch:6.6.1 "/usr/local/bin/dock…" 18 hours ago Up 18 hours 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp es

更加直观的判断是否启动成功的提示是,直接访问 9200 端口号。成功的话,会返回如下信息。

# 这里假设一个公网的ip   http://111.111.111.111:9200/
{
"name" : "cWz9ZWm",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "5v3SilrTQyCjjQO-a5heBA",
"version" : {
"number" : "6.2.4",
"build_hash" : "ccec39f",
"build_date" : "2018-04-12T20:37:28.497551Z",
"build_snapshot" : false,
"lucene_version" : "7.2.1",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}

kibana安装

docker pull kibana:6.6.1

接下来,如果我们手里没有kibana配置文件的信息的话,需要先从容器中copy一份过来。

# 启动容器 temp
docker run -di -p 5601:5601 --name temp kibana:6.6.1

# 创建文件夹存放配置文件
mkdir -p /etc/kibana

# 从容器中复制过来,注意配置文件地址是 /usr/share/kibana/config
docker cp temp:/usr/share/kibana/config /etc/kibana/config

# 删除临时的temp文件,强制删除
docker container rm -f temp

注意挂载的配置文件地址为: /usr/share/kibana/config

修改本地配置文件

# vim /etc/kibana/config/kibana.yml
server.name: kibana
# 允许所有地址访问
server.host: "0.0.0.0"
# elasticsearch的地址,注意这里我直接填写的公网ip。
# 有的教程里面填写elasticsearch,127.0.0.1,localhost 等
# docker容器的网络问题是我的弱项,采用上述方案,需要在docker容器互联,网络方面有一定的知识,不然会出问题。
elasticsearch.url: http://111.111.111.111:9200
xpack.monitoring.ui.container.elasticsearch.enabled: true

启动容器

docker run -di --name=kibana  -p 5601:5601 -v /etc/kibana/config:/usr/share/kibana/config kibana:6.6.1

这里开放了新的端口 5601

验证是否成功,直接访问 http://111.111.111.111:5601 就可以看到如下界面

注意点

  1. elasticsearch 和 kibana 的版本最好保持一致,这里我都使用了 6.6.1

  2. elasticsearch 和 kibana 都是比较吃内存的家伙,所以如果你的服务器的内存少于4G,可能就会出很多问题。

  3. kibana 端口可能会被封掉。注意你的服务器有没有打开 5601 端口,若是没有的话,换一个端口映射即可。 -p 7899:5601

  4. 配置修改后可能会需要重启服务/容器

    # 重启/查看 服务状态
    service kibana restart/status
    systemctl restart/status kibana
    # 容器重启
    docker restart kibana

TODO

如果是搭建ELK,我们可能还需要 Filebeat 和 Logstash 的配和,这些还要后续的进行搭建。 ELK 是好东西,只是太吃内存了。如果不是公司基本的项目,只是做的玩票性质的小服务,估计买服务器的开销就不小,所以我暂时不太会用 ELK 搭建日志系统。

参考资料

Docker安装ELK