1. 概述

首先在宿主机上准备一下es和kibana的配置文件,之后根据自己的情况配置docker-compose.yml,最后运行init.sh脚本

2. 准备es和kibana的配置文件

2.1 目录结构如下:

2.2 es的配置文件

es-master.yml

# 集群名称
cluster.name: es-cluster
# 节点名称
node.name: es-node1
# 是否可以成为master节点
node.master: true
# 是否允许该节点存储数据,默认开启
node.data: true
# 网络绑定
network.host: 0.0.0.0
network.publish_host: 本机外网ip
# 设置对外服务的http端口
http.port: 9200
# 设置节点间交互的tcp端口
transport.port: 9300
# 集群发现
discovery.seed_hosts:
  - 本机外网ip
# 手动指定可以成为 mater 的所有节点的 name 或者 ip,这些配置将会在第一次选举中进行计算
cluster.initial_master_nodes:
  - es-node1
# 支持跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
# 安全认证
xpack.security.enabled: false
#http.cors.allow-headers: "Authorization"

2.3 kibana的配置文件

kibana.yml

# 服务端口
server.port: 5601
# 服务IP
server.host: "0.0.0.0"
# ES
elasticsearch.hosts: ["http://本机外网ip:9200"]
# 汉化
i18n.locale: "zh-CN"

 

3. 配置docker-compose.yml

docker-compose.yml

version: "3"
services:
  es-master:
    container_name: es-master
    hostname: es-master
    image: elasticsearch:7.1.1
    restart: always
    ports:
      - 9200:9200
      - 9300:9300
    volumes:
      - /home/deploy/deploy/elk-master/elasticsearch/master/conf/es-master.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - /home/deploy/deploy/elk-master/elasticsearch/master/data:/usr/share/elasticsearch/data
      - /home/deploy/deploy/elk-master/elasticsearch/master/logs:/usr/share/elasticsearch/logs
    environment:
      - "ES_JAVA_OPTS=-Xms1g -Xmx1g"

  es-head:
    container_name: es-head
    image: mobz/elasticsearch-head:5
    restart: always
    ports:
      - 9100:9100
    depends_on:
      - es-master

  kibana:
    container_name: kibana
    hostname: kibana
    image: kibana:7.1.1
    restart: always
    ports:
      - 5601:5601
    volumes:
      - /home/deploy/deploy/elk-master/kibana/conf/kibana.yml:/usr/share/kibana/config/kibana.yml
    environment:
      - elasticsearch.hosts=http://本机外网ip:9200
    depends_on:
      - es-master

4. 运行init.sh

init.sh

#! /bin/bash

# 创建目录
if [ ! -d "./elasticsearch/" ]; then
        mkdir -p ./elasticsearch/master/conf ./elasticsearch/master/data ./elasticsearch/master/logs
fi

if [ ! -d "./kibana/" ]; then
        mkdir -p ./kibana/conf ./kibana/logs
fi

if [ -d "./elasticsearch/" ]; then
        chmod 777 ./elasticsearch/master/data/ ./elasticsearch/master/logs/
fi

# 移动配置文件
if [ -f "./es-master.yml" ]; then
        cp ./es-master.yml ./elasticsearch/master/conf
fi

if [ -f "./kibana.yml" ]; then
        cp ./kibana.yml ./kibana/conf
fi


# 部署项目
docker-compose up --build -d

sh init.sh执行

5. 可能出现的错误

es启动不了

# 查看docker所有的容器
docker container ls

# 根据容器id查看日志
docker logs -f container_id

# 发现有如下错误

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解决办法:

sysctl -w vm.max_map_count=262144

sysctl -p

# 上面这种解决办法只是临时的,如果服务器重启的话,就需要重新设置一下,可以到配置文件修改一下

sudo vim /etc/sysctl.conf
# 添加一行配置:
vm.max_map_count=655360

6. 界面查看

6.1 查看es-head 集群状态

6.2 登录kibana查看日志

 
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐