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)
[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