일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- EKS
- IAM
- dockerfile
- docker
- K8S
- YAML
- Deployment
- DevOps
- IAC
- Django
- Python
- github
- asgi
- event loop
- WSGI
- 쿠버네티스
- intervals
- AWS
- Kubernetes
- EC2
- terraform
- leetcode
- elasticsearch
- 자바스크립트
- Service
- ansible
- ebs
- POD
- FastAPI
- asyncio
- Today
- Total
궁금한게 많은 개발자 노트
[ ES ] Kibana index pattern 생성 안되는 문제 본문
EFK(Elasticsearch + Fluent-bit + Kibana)를 EKS(Elastic Kubernetes Service)상에서 구축하여, 로그 모니터링 시스템
으로 사용하던 중 Kibana에서 index pattern생성 요청 시 아무런 에러 없이 생성된 것 처럼 보이지만 Index Pattern
List에서는 확인할 수 없는 현상이 발생하였습니다. 찾아보니 비슷한 에러가 종종 발생하는 것처럼 보입니다.
https://github.com/elastic/kibana/issues/87607
확인한 결과 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
'DevOps' 카테고리의 다른 글
[ IaC ] Terraform init -reconfigure vs -migrate-state (2) | 2024.01.09 |
---|---|
[ MLOps ] MLOps란? (0) | 2023.11.23 |
[ AWS ] EKS구축 및 Continuous Deployment 다이어그램 (0) | 2023.11.20 |
[ AWS ] EKS사용 시 AWS IAM User와 k8s Role의 관계 (0) | 2023.11.10 |
[ IaC ] Terraform AWS current caller identity (0) | 2023.10.30 |