궁금한게 많은 개발자 노트

[ ES ] Kibana index pattern 생성 안되는 문제 본문

DevOps

[ ES ] Kibana index pattern 생성 안되는 문제

궁금한게 많은 개발자 2023. 11. 23. 10:15

EFK(Elasticsearch + Fluent-bit + Kibana)를 EKS(Elastic Kubernetes Service)상에서 구축하여, 로그 모니터링 시스템
으로 사용하던 중 Kibana에서 index pattern생성 요청 시 아무런 에러 없이 생성된 것 처럼 보이지만 Index Pattern
List에서는 확인할 수 없는 현상이 발생하였습니다. 찾아보니 비슷한 에러가 종종 발생하는 것처럼 보입니다.

https://github.com/elastic/kibana/issues/87607

 

Created an Index Pattern in Kibana but it's not saved - but no error either · Issue #87607 · elastic/kibana

Kibana version: 7.10.0 Elasticsearch version: 7.10.0 Server OS version: docker.elastic.co/elasticsearch/elasticsearch:7.10.0 Browser version: Chrome Version 87.0.4280.88 (Official Build) (x86_64) B...

github.com

 

확인한 결과 kibana가 실행될 때 elasticsearch로 부터 .kibana_1와 같은 index생성을 요청하고, 생성이 완료되었다면 .kibana_1에 대한 alias로 .kibana를 생성하도록 요청합니다.
이렇게 생성 후에 elasticsearch와 kibana가 정상 동작을 할 수 있습니다.

 

즉, 시나리오는 
1. kibana 구동 시 elasticsearch에 .kibana_x index생성 요청
2. elasticsearch가 . kibana_x index생성 완료 응답
3. kibana는 .kibana_x index에 대해 .kibana alias생성 요청
4. elasticsearch alias생성 완료 응답
5. kibana는 .kibana index 조회 시도

 

 

이러한 시나리오에 의해 elasticsearch와 kibana가 연동되어 정상 동작하게 되는데, 이때 2번에서 es가index생성 완료
응답을 늦게 준다면 kibana request timeout이 발생하여, .kibana_x index가 생성되지 않았다고 판단
합니다.

이렇게 되면 다시 kibana는 .kibana_x index요청을 하고 es는 생성이 완료되었다고 응답하게 됩니다.

그 이후 그렇다면 kibana는 alias도 생성되었을 것이라 판단하여 .kibana에 대한 index 조회 요청을 날리지만
alias가생성되어 있지 않으므로 조회가 불가능하게 되어 index pattern생성이 정상적으로 되지 않습니다.

 

 

해결 방법으로는 우선, elasticssearch pod에 접속해보면 indices와 aliases를 조회하여 정상적으로 .kibana index에
대한 alias가 생성되어 있지 않음을 확인할 수 있을 것입니다.

alias와 mapping되지 않은 .kibana_x index를 삭제하고, kibana를 rollout restart를 통해 재가동 시켜주면
elasticsearch로 위에서 설명한 시나리오대로 정상 요청을 하게되고, 이후 index pattern 생성이 가능
하게 됩니다.

 

$ kubectl exec -ti elasticsearch-0 -- /bin/bash

# elasticsearch indices 조회
elasticsearch-0$ curl -XGET http://localhost:9200/_cat/indices?v
# authorized error 발생 시 elasticsearch 
elasticsearch-0$ curl -XGET http://elastic:password@localhost:9200/_cat/aliases?v
# elasticsearch aliases 조회
elasticsearch-0$ curl -XGET http://localhost:9200/_cat/aliases?v
# elasticsearch index 추가/삭제
elasticsearch-0$ curl -XPUT http://localhost:9200/test?pretty=true
elasticsearch-0$ curl -XDELETE http://localhost:9200/test


# .kibana 관련 index/alias삭제 후
$ kubectl rollout restart deployment kibana

 

kibana & elasticsearch index

 

Comments