본문 바로가기
공부

Kibana

by son_i 2023. 12. 7.
728x90

Kibana란? ) 데이터의 형태를 만들고, Elastic Stack을 탐색할 수 있게 하는 시각화 및 관리 서비스.

Kibana로 다음과 같은 작업들을 할 수 있다.

 

1. 검색, 관찰, 데이터 보호

  kibana는 document 검색에서 log분석, 보안 취약성 찾기와 같은 기능에 access 할 수 있는 portal이다.

2. 데이터 분석

  숨은 insight를 찾고 차트, 그래프 등에 발견한 내용을 시각화 한 뒤 대시보드를 구성한다.

3. Elastic Stack 관리, 모니터링 보안

  data를 관리하고, Elastic Stack cluster상태를 모니터링하고, 어떤 사용자가 어떤 기능에 access할 수 있는지 제어한다.

 

kibana를 elastic-3 노드에 실행하고 키바나와 elasticsearch가 REST API로 통신을 하게됨.

키바나는 5601포트 사용 -> 방화벽 만들어야 함.

 

키바나 실행

$ cd kb-811

$ bin/kibana

 

키바나 기본 설정
$ config/kibana.yml

- server.port: 5601 //디폴트 값
- server.host: "elastic-3" 작성 ""안에 내부 IP주소를 적어줘도 되는데 hosts에 ip주소와 호스트네임을 매핑시켜놔서 elastic-3으로 적어도 됨.  
    //기본으로 server.host: "localhost"로 되어있는데 elastic search의 network.host와 같은 거여서 localhost로 되어있으면 키바나를 실행한 호스트에서 밖에 실행을 못 함.

- server.name: "my-kibana" //키바나 인스턴스 이름. 노드 이름 같은 거 

-  elasticsearch.hosts: ["http://elastic-3:9200"] //키바나가 접속할  elastic search의 호스트를 적어줌. 여러 개 지정해줘도 됨. 현재 같은 서버에 es와 kibana가 있기 때문에  localhost로 해주면 키바나가 elastic-3 노드에 접속해서 통신을 하게 됨. 다른 인스턴스에서 구동한다면 es가 실행되고 있는 인스턴스의 주소를 적어줘야하고 9200번 포트를 열어놔야함.

- elasticsearch.username: "kibana_system"
- elasticsearch.password: "패스워드입력"
ES에 security 설정을 해줬기 때문에 kibana가 ES에 접근하려면 위 두 정보가 필요
->  ES와 마찬가지로 이부분을 다 드러나는 .yml이 아니라 keystore에 저장.

$ bin/kibana-keystore create //키스토어 생성
$ bin/kibana-keystore add elasticsearch.password //비밀번호 등록
$ bin/kibana-keystore list //잘 등록됐는지 리스트 확인

 

키바나 실행

$ bin/kibana 로 실행시 3번 노드 콘솔에도 키바나 실행됐다고 뭐라뭐라 뜸

이건 kibana실행 화면

브라우저에서 http://es-3외부IP주소:5601/ 로 접근안 됨. 당연함 방화벽 설정을 안 해줌.

 

방화벽 설정

1. 방화벽 규칙 추가 : 이름 kibana 지정태그 kibana, 소스필터 IPv4 범위 0.0.0.0/0 지정, tcp: 5601

2. 3번 인스턴스에 Network tags에 kibana 추가.

 

키바나 데몬으로 실행

$ bin/kibana &

해서 실행하고 ctrl + z 로 프로세스 종료하지 않고 콘솔로 빠져나오기

종료할 때는 ps -ef | grep node (kibana는 node.js로 실행됨)해서 pid를 찾고 kill [pid]로 종료해줘야함.

 

$ ./node/bin/node ./src/cli/cli.js

bin/kibana와 동일함. -> 나는 안 되네 

FATAL CLI ERROR Error: Cannot find module './cjs/react.development.js' Require stack: - /home/rsa-key-20231205/kb-811/node_modules/react/index.js - /home/rsa-key-20231205/kb-811/node_modules/@kbn/core-rendering-server-internal/src/rendering_service.js - /home/rsa-key-20231205/kb-811/node_modules/@kbn/core-rendering-server-internal/src/index.js - /home/rsa-key-20231205/kb-811/node_modules/@kbn/core-rendering-server-internal/index.js - /home/rsa-key-20231205/kb-811/node_modules/@kbn/core-root-server-internal/src/server.js - /home/rsa-key-20231205/kb-811/node_modules/@kbn/core-root-server-internal/src/index.js - /home/rsa-key-20231205/kb-811/node_modules/@kbn/core-root-server-internal/index.js - /home/rsa-key-20231205/kb-811/node_modules/@kbn/core/server/index.js - /home/rsa-key-20231205/kb-811/src/cli/serve/serve.js - /home/rsa-key-20231205/kb-811/src/cli/cli.js at Module._resolveFilename (node:internal/modules/cjs/loader:1077:15) at Module._load (node:internal/modules/cjs/loader:922:27) at Module.require (node:internal/modules/cjs/loader:1143:19) at require (node:internal/modules/cjs/helpers:119:18) at Object.<anonymous> (/home/rsa-key-20231205/kb-811/node_modules/react/index.js:6:20) at Module._compile (node:internal/modules/cjs/loader:1256:14) at Module._extensions..js (node:internal/modules/cjs/loader:1310:10) at Module.load (node:internal/modules/cjs/loader:1119:32) at Module._load (node:internal/modules/cjs/loader:960:12) at Module.require (node:internal/modules/cjs/loader:1143:19)

 

node.js는 프로세스를 데몬으로 띄워주는 다양한 도구가 존재. 

그 중에 하나인 pm2 사용해볼 거임.

 

kibana안의 노드 말고 서버에서 전역으로 사용할 수 있는 node를 설치해야함. 

 * 딱 kibana 버전에 맞는 노드를 설치해야함

 

$ vi package.json으로 버전 확인 나는 무조건 노드 18.18.2버전을 사용해야함.

노드를 받아주기 위해 nvm 설치

 

$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
$ vi .bashrc에 아래 항목이 없으면 추가
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

$ source .bashrc해주고
$ nvm 입력해서 실행되는지 확인

 

노드 설치

$ nvm install 18.18.2

설치하면 $ node라는 명령어가 실행 됨. -> 안 되는데 ?

 

에러 발생

nvm으로 노드 설치후 node입력 시 아래와 같은 오류

[rsa-key-20231205@elastic-3 ~]$ node node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by node) node: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by node)
node: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by node)
node: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by node)
node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by node)
node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by node)

 

stackoverflow에서 적절한 답을 찾았다.
https://stackoverflow.com/questions/72022527/glibc-2-27-not-found-while-installing-node-on-amazon-ec2-instance/74896209#74896209

 

원인 : 노드를 설치하기에 적절한 버전의 glibc가 없어서 발생하는 오류

 

 $ sudo apt-get install libc6-dev 로 설치하려고 했는데 apt-get : command not found가 떴다.

 yum으로 설치해보겠다.

$ sudo yum install livc6-dev

Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile
* base: mirror.elice.io
* epel: mirror-mci.yuki.net.uk
* extras: mirror.elice.io
* updates: mirror.elice.io
No package livc6-dev available.
Error: Nothing to do

보니까 패키지가 없다는 것 같음. 

$ cd /etc/yum.repos.d
$ vi CentOS-Base.repo //권한이 없어 수정할 수 없음
$ sudo vi CentOS-Base.repo //sudo로 들어가서 수정.

 

mirrorlist 주소와 / baseurl 주소를 통해 접근을 하고 해당 설치파일을 다운받고 설치 할 건지 물어보게 됨.

baserurl 주석을 해제

 

하고 다시 해보니까 아까와 똑같긴 한데 bvase, extras, updates가 뭔가 진행될려다 만 거 같음

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.elice.io
* epel: mirror-mci.yuki.net.uk
* extras: mirror.elice.io
* updates: mirror.elice.io
base | 3.6 kB 00:00
extras | 2.9 kB 00:00
updates | 2.9 kB 00:00
No package livc6-dev available.
Error: Nothing to do

 

glibc 패키지 이름으로 해봤더니 이미 최신버전이라 더 할 게 없다는 거 같음.

그런데 내가 필요한 건 2.25, 28 버전인 거 같은데 .....

 

https://vlog.tion.co.kr/lib64-libc-so-6/#update_your_glibc_for_centos_6_%E2%80%93_lib64libcso6 이 블로그 보고 따라하기

$ wget https://ftp.gnu.org/gnu/glibc/glibc-2.25.tar.gz

$ wget https://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz

으로 압축파일 다운

 

$ tar -zxvf /glibc-2.25.tar.gz

$ tar -zxvf /glibc-2.28.tar.gz

압축해제

 

 

하는 도중 config 파일 만드는데서 오류남

../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

 

이거 입력하면 아래와 같은 오류 발생

[rsa-key-20231205@elastic-3 build]$ ../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
checking build system type... x86_64-pc-linux-gnu checking host system type... x86_64-pc-linux-gnu
checking for gcc... no
checking for cc... no checking for cl.exe... no
configure: error: in `/home/rsa-key-20231205/glibc-2.25/build':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details

gcc나 c 컴파일러가 없어 발생하는 에러. 아래 명령으로 설치해줌.

$ sudo yum install gcc glibc glibc-common gd gd-devel

 

다시 입력하니 오류 없이 잘 됐다 ! 위 링크로 계속 따라감. 

../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

 

 

make 명령어 입력하기 위해 설치해줌. 

make란 ? ) 유닉스 리눅스 계열의 운영체제에서 사용되는 프로그램 빌드 도구.

$ sudo yum install make -y

 

make -j 8

make install  해줬는데 정상적으로 설치 안 된 거 같음.

 

일단 pm은 미뤄두고 얼른 es 먼저 배우자

 

'공부' 카테고리의 다른 글

Elasticsearch) CRUD  (1) 2023.12.08
Elasticsearch 활용) 인덱스 샤드 모니터링  (0) 2023.12.07
Elastic Search 설치 및 환경설정  (1) 2023.12.07
JPA 영속성 컨텍스트  (0) 2023.11.30
DB에 따른 application.properties 속성  (1) 2023.10.19