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/
아래와 같이 화면이 표시 되면 재대로 설치가 된 것이다.
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
을 입력한다.
아래와 같은 화면이 표시되었다면 제대로 설치가 된 것이다.
한번에 모두 제어하기
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