Elasticsearch, Kibana, Cerebro 설치

다운로드 받아 설치

Java 설치

Elasticsearch는 JVM 상에서 동작하기 Java 8(JDK)이 설치가 되어 있어야 한다.

설치가 되어 있지 않으면 먼저 JDK부터 설치를 하도록 하자.

Java 8(JDK) 런타임 설치

$ sudo yum install java-1.8.0-openjdk -y

Java 8(JDK) 환경 설치

$ sudo yum install java-1.8.0-openjdk-devel -y

자바 버전 확인한다.

$ java -version
openjdk version "1.8.0_252"
OpenJDK Runtime Environment (build 1.8.0_252-b09)
OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)

Elasticsearch 설치

그럼 이제 Elasticsearch를 설치해 보자.

먼저 설치 파일 다운로드한다.

$ wget https://artifacts.elastic.co/downloads/kibana/kibana-7.14.1-linux-x86_64.tar.gz

다운 받은 파일을 압축 해제한다.

$ tar xvfz elasticsearch-7.14.1-linux-x86_64.tar.gz

디렉토리명 사용하기 편하게 짧게 변경한다.

$ mv files/elasticsearch-7.14.1-linux-x86_64/ es-714

bin 디렉토리로 이동한다.

$ cd es-714/bin/

기동 파일을 실행한다.

$ ./elasticsearch
[kimkc@localhost bin]$ ./elasticsearch
[2021-09-02T21:45:57,952][INFO ][o.e.n.Node               ] [localhost.localdomain] version[7.14.1], pid[116654], build[default/tar/66b55ebfa59c92c15db3f69a335d500018b3331e/2021-08-26T09:01:05.390870785Z], OS[Linux/4.18.0-338.el8.x86_64/amd64], JVM[Eclipse Foundation/OpenJDK 64-Bit Server VM/16.0.2/16.0.2+7]
[2021-09-02T21:45:57,957][INFO ][o.e.n.Node               ] [localhost.localdomain] JVM home [/home/kimkc/es-714/jdk], using bundled JDK [true]
[2021-09-02T21:45:57,958][INFO ][o.e.n.Node               ] [localhost.localdomain] JVM arguments [-Xshare:auto, -Des.networkaddress.cache.ttl=60, -Des.networkaddress.cache.negative.ttl=10, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -XX:+ShowCodeDetailsInExceptionMessages, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dio.netty.allocator.numDirectArenas=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Djava.locale.providers=SPI,COMPAT, --add-opens=java.base/java.io=ALL-UNNAMED, -XX:+UseG1GC, -Djava.io.tmpdir=/tmp/elasticsearch-1671236956648459411, -XX:+HeapDumpOnOutOfMemoryError, -XX:HeapDumpPath=data, -XX:ErrorFile=logs/hs_err_pid%p.log, -Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m, -Xms166m, -Xmx166m, -XX:MaxDirectMemorySize=87031808, -XX:G1HeapRegionSize=4m, -XX:InitiatingHeapOccupancyPercent=30, -XX:G1ReservePercent=15, -Des.path.home=/home/kimkc/es-714, -Des.path.conf=/home/kimkc/es-714/config, -Des.distribution.flavor=default, -Des.distribution.type=tar, -Des.bundled_jdk=true]
[2021-09-02T21:46:00,777][INFO ][o.e.p.PluginsService     ] [localhost.localdomain] loaded module [aggs-matrix-stats]
[2021-09-02T21:46:00,778][INFO ][o.e.p.PluginsService     ] [localhost.localdomain] loaded module [analysis-common]
[2021-09-02T21:46:00,778][INFO ][o.e.p.PluginsService     ] [localhost.localdomain] loaded module [constant-keyword]
[2021-09-02T21:46:00,779][INFO ][o.e.p.PluginsService     ] [localhost.localdomain] loaded module [frozen-indices]
[2021-09-02T21:46:00,779][INFO ][o.e.p.PluginsService     ] [localhost.localdomain] loaded module [ingest-common]

...이하 생략...

접속 여부 확인한다.

$ curl -XGET localhost:9200
$ curl -XGET localhost:9200
{
  "name" : "es-714",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "8mO5vPIJQS-Eqa3PUvBVcA",
  "version" : {
    "number" : "7.14.1",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "66b55ebfa59c92c15db3f69a335d500018b3331e",
    "build_date" : "2021-08-26T09:01:05.390870785Z",
    "build_snapshot" : false,
    "lucene_version" : "8.9.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}
[kimkc@es-714 ~]$

위와 같이 실행이 되었다면 무사히 설치된 거다.

Kibana 설치

설치 파일 다운로드한다.

$ wget https://artifacts.elastic.co/downloads/kibana/kibana-7.14.1-linux-x86_64.tar.gz

다운 받은 파일을 압축 해제한다.

$ tar xvfz kibana-7.14.1-linux-x86_64.tar.gz

디렉토리명 사용하기 편하게 짧게 변경한다.

$ mv files/kibana-7.14.1-linux-x86_64/ kb-714

bin 디렉토리로 이동한다.

$ cd kb-714/bin/

기동 파일을 실행한다.

$ ./kibana

Docker에 설치

간단히 학습이나 경험을 위한 것이라면, docker를 사용하여 설치하는 방법을 권장한다.

Elasticsearch Docker 설치

Elasticsearch Docker 이미지 다운로드

다음 명령어를 실행하여 Elasticsearch Docker 이미지를 다운로드 받는다. 버전은 7.14.0을 받았다.

docker pull docker.elastic.co/elasticsearch/elasticsearch:7.14.0

실행 결과는 아래와 같다.

% docker pull docker.elastic.co/elasticsearch/elasticsearch:7.14.0
7.14.0: Pulling from elasticsearch/elasticsearch
ddf49b9115d7: Pull complete
693712dd4782: Pull complete
e1843b23879c: Pull complete
43b0526f3562: Pull complete
395a8174c4c5: Pull complete
671bce37ebcd: Pull complete
7b0bb020b357: Pull complete
Digest: sha256:46815a329dfdf633cac9261e287c8440512db13554cbcb4fa89842dde58e74b2
Status: Downloaded newer image for docker.elastic.co/elasticsearch/elasticsearch:7.14.0
docker.elastic.co/elasticsearch/elasticsearch:7.14.0

Elasticsearch Docker 컨테이너 생성 및 실행

다음 명령어를 실행한다. 여기서 docker 컨테이너 이름은 “es714"로 하였다.

docker run -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" --name es714 docker.elastic.co/elasticsearch/elasticsearch:7.14.0

실행 결과는 아래와 같다.

% docker run -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" --name es714 [docker.elastic.co/elasticsearch/elasticsearch:7.14.0](http://docker.elastic.co/elasticsearch/elasticsearch:7.14.0)
a3b75abf13c211cadf86637fe1c457b4b465556fc231a9a243362da49b117952
Elasticsearch Docker 컨테이너 실행 확인

다음 명령어를 실행하여 컨테이너의 실행을 확인한다.

docker ps

실행 결과는 아래와 같다.

% docker ps
CONTAINER ID   IMAGE                                                  COMMAND                  CREATED              STATUS              PORTS                                                                                  NAMES
a3b75abf13c2   docker.elastic.co/elasticsearch/elasticsearch:7.14.0   "/bin/tini -- /usr/l…"   About a minute ago   Up About a minute   0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp   es714

Elasticsearch Docker 설정을 확인

다음 명령어를 실행하여 설정을 확인한다.

docker exec -i -t es714 cat /usr/share/elasticsearch/config/elasticsearch.yml

실행 결과는 아래와 같다.

% docker exec -i -t es714 cat /usr/share/elasticsearch/config/elasticsearch.yml
cluster.name: "docker-cluster"
network.host: 0.0.0.0

Kibana Docker 설치

Kibana Docker 이미지 받아오기

다음 명령어를 실행하여 Kibana docker 이미지를 받아온다. 버전은 Elasticsearch와 동일하게 7.14.0을 받아야 한다.

docker pull docker.elastic.co/kibana/kibana:7.14.0

실행 결과는 아래와 같다.

% docker pull docker.elastic.co/kibana/kibana:7.14.0
7.14.0: Pulling from kibana/kibana
ddf49b9115d7: Already exists
b62151c99641: Pull complete
d11b460fe76c: Pull complete
1078fcc7cd25: Pull complete
c74f7ca3ab86: Pull complete
2fb0a75edcfc: Pull complete
339c3eb65140: Pull complete
c359ec1d1586: Pull complete
7c0bddf401bf: Pull complete
59df587bba1b: Pull complete
34afeb086a05: Pull complete
4de583c3a000: Pull complete
961084329244: Pull complete
Digest: sha256:6408b11743abb2855e62406edb3cfd53848b97e48c65c0f4d843c427ccb3bb90
Status: Downloaded newer image for docker.elastic.co/kibana/kibana:7.14.0
docker.elastic.co/kibana/kibana:7.14.0

Kibana Docker 컨테이너 생성 및 실행

다음 명령어를 실행한다.

docker run -d --link es714:elasticsearch -p 5601:5601 --name kb714 docker.elastic.co/kibana/kibana:7.14.0

실행 결과는 아래와 같다.

% docker run -d --link es714:elasticsearch -p 5601:5601 --name kb714 docker.elastic.co/kibana/kibana:7.14.0
becb75fdb608c119407ea37e1f75f54898d64683fdb76674b08e8c875e1fca77

Kibana Docker 컨테이너 실행 확인

아래 명령어를 실행한다.

docker ps

실행 결과는 아래와 같다.

% docker ps
CONTAINER ID   IMAGE                                                  COMMAND                  CREATED             STATUS             PORTS                                                                                  NAMES
becb75fdb608   docker.elastic.co/kibana/kibana:7.14.0                 "/bin/tini -- /usr/l…"   13 seconds ago      Up 12 seconds      0.0.0.0:5601->5601/tcp, :::5601->5601/tcp                                              kb714
a3b75abf13c2   docker.elastic.co/elasticsearch/elasticsearch:7.14.0   "/bin/tini -- /usr/l…"   About an hour ago   Up About an hour   0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp   es714

Kibana 설정을 확인

다음 명령어를 실행한다.

docker exec -i -t kb714 cat /usr/share/kibana/config/kibana.yml

실행 결과는 아래와 같다.

% docker exec -i -t kb714 cat /usr/share/kibana/config/kibana.yml
#
# ** THIS IS AN AUTO-GENERATED FILE **
#

# Default Kibana configuration for docker target
server.host: "0"
server.shutdownTimeout: "5s"
elasticsearch.hosts: [ "http://elasticsearch:9200" ]
monitoring.ui.container.elasticsearch.enabled: true%

Kibana 접속을 확인

아래 URL를 브라우저에 입력한다.

http://localhost:5601/

아래와 같이 화면이 표시 되면 재대로 설치가 된 것이다.

Kibana

Cerebro Docker 설치

Cerebro는 Elasticseacrh를 GUI로 볼 수 있는 또 다른 툴이다.

Cerebro Docker 이미지 받아오기

다음 명령어를 실행하여 Cerebro Docker 이미지를 받아온다.

docker pull lmenezes/cerebro

실행 결과는 아래와 같다.

% docker pull lmenezes/cerebro
Using default tag: latest
latest: Pulling from lmenezes/cerebro
f7ec5a41d630: Pull complete
faf4c47c8c61: Pull complete
810072571faf: Pull complete
395682a2fa05: Pull complete
635a13f1552d: Pull complete
Digest: sha256:95b02e46ec91c00ab33ce21f4d23bf6083d3c900257b9371a56ea218737462e5
Status: Downloaded newer image for lmenezes/cerebro:latest
docker.io/lmenezes/cerebro:latest

Cerebro Docker 컨테이너 실행

아래 명령어를 실행한다.

docker run -d -p 9000:9000 --link es714:localhost --name cerebro -e "CEREBRO_PORT=9000" -e "ELASTICSEARCH_HOST=http://localhost:9200" lmenezes/cerebro

실행 결과는 아래와 같다.

% docker run -d -p 9000:9000 --link es714:localhost --name cerebro -e "CEREBRO_PORT=9000" -e "ELASTICSEARCH_HOST=http://localhost:9200" lmenezes/cerebro
4f1c86c5e3156891cb129a841579f1ff6446c271c4fa53141c23c3d0004613f7

Cerebro 실행을 확인

아래 URL를 브라우저에 입력한다.

http://localhost:9000

아래와 같은 화면이 나오면 Node address란에 http://localhost:9200을 입력한다.

Cerebro

아래와 같은 화면이 표시되었다면 제대로 설치가 된 것이다.

Cerebro

한번에 모두 제어하기

docker-compose 파일 생성

docker-compose-elastic.yml 파일을 생성하여 아래와 같이 작성한다.

version: '3.6'
services:
  elasticsearch:
    image: 'docker.elastic.co/elasticsearch/elasticsearch:7.14.0'
    container_name: es714
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      - node.name="es01"
      - cluster.name="es-docker-cluster"
      - bootstrap.memory_lock=true
      - discovery.type=single-node
      - "ES_JAVA_OPTS=-Xms4g -Xmx4g"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    networks:
      - elastic

  kibana:
    image: 'docker.elastic.co/kibana/kibana:7.14.0'
    container_name: kb714
    ports:
      - "5601:5601"
    environment:
      - ELASTICSEARCH_HOSTS=["http://es714:9200"]
    depends_on:
      - elasticsearch
    networks:
      - elastic

  cerebro:
    image: 'lmenezes/cerebro'
    container_name: 'cerebro'
    ports:
      - "9000:9000"
    environment:
      - "CEREBRO_PORT=9000"
      - "ELASTICSEARCH_HOST=http://es714:9200"
    networks:
      - elastic

volumes:
  data01:
    driver: local
  data02:
    driver: local
  data03:
    driver: local

networks:
  elastic:
    driver: bridge

모두 실행, 중지, 제거

실행 명령어

% docker-compose -f docker-compose-elastic.yml up -d

중지 명령어

% docker-compose -f docker-compose-elastic.yml stop

제거 명령어

% docker-compose -f docker-compose-elastic.yml rm

각각 접속 확인

Elasticsearch 기동 여부를 확인한다.

% chrome 127.0.0.1:9200

Kibana 기동 여부를 확인한다.

% chrome 127.0.0.1:5601

Cerebro 기동 여부를 확인한다.

% chrome 127.0.0.1:9000