본문 바로가기
infra/ELK

[Elasticsearch] ELK 이슈 해결 - Kibana server is not ready yet 그리고 /var/lib/elasticsearch

by hjhello423 2019. 12. 21.

ELK Stack 구축 과정에서 생긴 이슈를 정리해보려 합니다.

아직 잘 모르는 부분이 많아서 이거 해결하느라 4시간쯤 걸린 거 같아요...

다른 분들은 이 글을 보고 시간 아끼시길 바랍니다.

 


ELK를 정상적으로 설치하고 마지막으로 Kibana에 웹브라우저로 접근하려는데 문제가 발생했습니다.

'Kibana server is not ready yet'

키바나야 왜 준비가 안됐니?...

 

server is not ready yet를 키워드로 구글링을 해보았습니다.

몇 가지 답변은 kibana의 server.host를 localhost가 아닌 IP나 0.0.0.0으로 지정해보라는 것이었는데 일단 적용해 보았습니다.

server.host: "0.0.0.0"

이렇게 수정은 했는데 역시나 문제는 해결이 안습니다.

그런데 갑자기 Elasticsearch의 낌새가 이상하다고 생각해 elasticsearch의 상태를 확인해보았더니...

systemctl status elasticsearch.service

결과가 Fail로 나오고 있었습니다.

역시 KIbana의 문제가 아니었고 다시 원점으로 돌아가 이번엔 elasticsearch의 로그를 찾기 시작했습니다.

 


처음으로 돌아가 elasticsearch의 이슈 원인을 찾기 시작했습니다..

journalctl -xe

systemd로그를 확인 결과 아래의 로그들이 계속해서 반복되고 있었습니다.

elasticsearch.service: Main process exited, code=exited, status=78/CONFIG

elasticsearch.service: main process exited, code=exited, status=78/n/a

Unit elasticsearch.service entered failed state.

elasticsearch.service failed.

검색 결과 Kibana와 Elasticsearch의 버전을 체크해보라는 내용과 Elasticsearch의 cluster config를 다시 확인해 보라는 내용이 많았는데 하지만 저는 버전도 이미 확인해서 동일하게 설치했고 cluster는 아직 구성하지도 않았었습니다.

 

이 경고 로그로는 원인 찾기가 어려울 거 같아 다른 로그를 찾기 시작했습니다.

그리고 발견한 것이 /var/log/elasticsearch/elasticsearch.log 파일!!

 

아래 3개의 로그가 계속해서 반복 발생하고 있었습니다.

Caused by: java.lang.IllegalStateException: failed to obtain node locks, tried [[/var/lib/elasticsearch]] with lock id [0]; maybe these locations are not writable or multiple nodes were started without increasing [node.max_local_storage_nodes] (was [1])?

Caused by: java.io.IOException: failed to obtain lock on /var/lib/elasticsearch/nodes/Caused by: java.io.IOException: failed to obtain lock on /var/lib/elasticsearch/nodes/0

Caused by: java.nio.file.AccessDeniedException: /var/lib/elasticsearch/nodes/0/node.lock

 

결론적으로 얘기하자면 /var/lib/elasticsearch 경로에 대한 액세스가 거부되고 있었습니다.

[root@localhost elasticsearch]# ll
total 0
drwxr-sr-x. 3 988 984 15 Dec 17 23:25 nodes

 

그래서 아래 명령어로 액세스 권한을 변경해 주었습니다.

chown -R elasticsearch:elasticsearch ./elasticsearch/

 

elasticsearch를 다시 start 한 뒤 elasticsearch의 상태를 확인해보니 정상 동작하고 있다!!!

[itsme@localhost ~]$ systemctl status elasticsearch.service 
● elasticsearch.service - Elasticsearch
   Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled; vendor preset: di>
   Active: active (running) since Sat 2019-12-21 21:13:52 KST; 9s ago
     Docs: http://www.elastic.co
 Main PID: 2628 (java)
    Tasks: 67 (limit: 23870)
   Memory: 1.2G
   CGroup: /system.slice/elasticsearch.service
           ├─2628 /usr/share/elasticsearch/jdk/bin/java -Des.networkaddress.cache.ttl=60 -De>
           └─2706 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/contr>

 

Kibana로 접근해보니 Kibana도 정상 동작한다!!

 

결국 /var/lib/elasticsearch의 액세스 권한 문제였습니다.

반응형

댓글