엘라스틱서치를 데이터 웨어하우스로 활용하여 데이터들을 모은뒤 키바나와 연동하여 엘라스틱서치에 쌓인 데이터들을 시각화하여 대시보드를 만들수있다. 그리고 이를 활용한 대시보드를 인가된 접근만 허용하여 외부와 연동하는 방법에 대하여 알아보자.
키바나 대시보드 외부 연동
1. 대시보드 만들기
2. 키바나 인증
키바나 설정 파일인 kibana.yml 파일에서 인증과 관련된 설정들을 할수 있다. 기본적으로 아이디, 패스워드를 사용한 인증 방법 (엘라스틱서치와 연동하여 구현됨), 토큰, OIDC (Oauth2 써드파티) , SSO 등을 활용한 인증방법이 있다.
이중에서 간단히 구현해볼수 있는 Anonymous authentication 을 이용하려고 한다. 추가적인 보안이 필요할 경우 키바나 대시보드를 불러오는 서비스에서 이미 사용중인 인증 서비스를 활용할수 있다.
키바나 앞에 프록시 서버를 하나 두어 해당 서비스의 인증 처리를 거치게끔 하면 된다.
추가적으로 Anonymous 계정에는 읽기 권한만 주는것이 좋다. 그리고 이 방법은 모든 유저가 같은 대시보드를 이용할때 유용하지만 각 유저 또는 그룹별 대시보드를 따로 프로그래머틱 하게 구현해야 할 경우는 좀더 복잡해진다.
키바나 API 에선 직접적으로 이 기능을 지원해주지 않지만 다른 API 들을 활용하여 구현해볼수 있을거 같긴하다. 직접 구현해보진 않았지만 문서를 살펴보니 아래와 같은 방식으로 구현가능할것 같다.
- 엘라스틱서치 유저 정보 저장
- 키바나 Space 생성
최대 갯수는 설정파일에서 따로 조절이 가능하다. - 유저에 Space 맵핑
- 키바나에서 대시보드 생성
- 4. 에서 생성한 대시보드의 index 패턴 분석 및 export
https://www.elastic.co/guide/en/kibana/master/index-patterns-api-get.html
https://www.elastic.co/guide/en/kibana/master/dashboard-api-export.html - 5. 에서 분석한 값을 토대로 각 space 에 대시보드 import
참고로 같은 대시보드에 데이터만 다를 경우를 가정하였고 좀더 복잡한 구현사항은 그냥 엘라스틱서치에서 데이터를 가져와서 직접 구현할수밖에 없다.