예전에 BI 툴로써 Metabase를 사용한 적이 있었다. BI는 Business Intelligence로 비즈니스 데이터를 의미한다. 데이터베이스에 연결하여 DB의 내용을 토대로 통계를 낼 수 있도록 도와주는 툴이 메타베이스(Metabase)이다.
이러한 BI 툴로써 메타베이스 이외에도 Redash나 Superset 등 다양한 오픈 소스들이 있기 때문에, BI 툴의 도입을 고려하고 있다면 관련해서 다양한 것들을 살펴보는 것이 좋아보인다. 꽤 시간이 지난 레퍼런스지만, 다음과 같이 다양한 부분을 고려해서 도입하는 것이 좋아보인다.
- [vortechsa] 분석 툴 선택하기 : https://medium.com/vortechsa/choosing-an-analytics-tool-metabase-vs-superset-vs-redash-afd88e028ba9
이번 포스팅에서는 메타베이스라고 하는 BI 툴을 시작, 세팅하는 방법과 함께 마지막으로는 프로덕션에서 활용 방법에 대해서 다루고 마친다.
본론
메타베이스 시작
Metabase는 클라우드 서비스로 대시보드를 제공하기도 하며, 직접 로컬에서 실행하는 방법도 제공한다. 로컬에서 docker를 사용하는 경우에는 간단하게 metabase 이미지를 통해 실행할 수도 있으며, 직접 실행하는 경우에는 Jar 파일을 통해 실행할 수 있다.
- [Metabase] metabase : https://www.metabase.com/
Open source business intelligence, dashboards, and data visualizations | Metabase
Metabase business intelligence, dashboards, and data visualization tools. Dig deeper into your data with open source, no SQL tools for data visualization.
www.metabase.com
이번 포스팅에서는 간단하게 docker를 이용해서 실행할 예정이다. 다음과 같이 docker run 명령어로 간단하게 실행할 수 있다. Java 기반으로 꽤 무겁게 만들어져있는 서비스이기 때문에 초기 실행까지 시간이 꽤 걸린다.
docker run -p 3000:3000 --name metabase metabase/metabase
모든 세팅이 끝났다면, 성공적으로 initialize한다는 로그가 뜬다. 포트바인딩으로 지정된 포트로 접근하면 다음과 같은 metabase 시작 페이지를 확인할 수 있다.
시작 버튼을 눌러서 세팅을 시작한다. 세팅을 진행하는 데 있어 크게 어려운 내용은 없으니 간단하게 사용자의 정보를 입력하고 넘어가자.
위와 같이 정보를 입력한다. 중간에 데이터베이스를 선택하는 페이지가 있는데, 일단은 건너뛴다. 메타베이스에서 기본적으로 제공하는 샘플 데이터베이스가 있기 때문에, 데이터베이스에 대한 정보는 나중에 입력하도록 한다.
모든 설정을 마치면 위와 같은 메인 페이지를 볼 수 있다. 간단한 example 예시들이 많이 들어있는데, 간단하게 살펴보기 People 예시를 눌러보면 다음과 같은 차트를 볼 수 있다.
여기까지가 메타베이스를 실행하는 과정이다. 위 사진을 보면 네 가지의 통계가 하나의 대시보드에 들어있는 것을 볼 수 있다. 이렇게 메타베이스는 연결된 데이터베이스에 있는 리소스를 가지고 쿼리를 통해서 통계를 만들 수 있고, 이렇게 만든 통계를 하나의 대시보드에 위와 같이 모두 보여줄 수 있다. 조직에서 진행하는 다양한 프로젝트에 따라 대시보드를 커스터마이징해서 사용할 수 있다.
데이터 시각화
메타베이스에서는 GUI를 통한 데이터 시각화 기능을 제공하기 때문에, SQL을 통해서 데이터를 시각화하는 방법도 있고, 직접 GUI를 통해서 만드는 방법도 있다. GUI를 통한 데이터 시각화 기능 또한 상당히 강력하기 때문에 개발 유관부서가 아니더라도, 충분히 다양한 통계를 직접 생성할 수 있게 해준다.
GUI를 사용하는 경우 아래와 같이 다양한 시각화 기능을 사용할 수 있다. 다음과 같이 왼측에 다양한 방법을 통해서 시각화를 할 수 있다. 가장 간단하게 테이블에 있는 내용을 그대로 보여주는 테이블부터 시작해서 다양한 방법으로 시각화하여 통계를 보여줄 수 있다.
그렇다면 SQL을 통해서 통계를 내는 것은 어떤 경우에 쓰일까? GUI를 통해서 통계를 낼 때, 일반적으로 하나의 WHERE 혹은 GROUP BY 정도의 기능밖에 수행하지 못한다. 위 그림은 메타베이스를 생성하면 기본적으로 들어있는 샘플 시각화 차트인데, 편집기 버튼을 누르면 어떻게 GUI를 통해서 차트를 만들었는 지 확인할 수 있다.
이와 같이 GUI를 사용하게 되면 WHERE 및 GROUP BY 그리고 ORDER BY 등의 기능을 활용할 수 있다. SQL을 직접 사용하는 경우는 이러한 필터를 사용해서 표시하기 어려운 여러 번의 조인이 들어가는 경우와 WHERE 절을 타이트하게 걸어 수치를 내는 경우에 주로 사용한다. 예를 들어 특정 기간에 이벤트에 참여했지만 결제까지는 완료하지 않은 유저와 같은 경우는 시각화보다는 수치( 몇 명이 결제를 완료하지 않았는 지 ) 정도 보여주면 되기 때문에, 그런 상황에서 주로 사용한다.
여기까지가 기본적인 데이터 시각화 방법이다. 메타베이스에서는 수많은 방법으로 시각화를 진행할 수 있는데, 예시로 아주 많은 샘플들이 존재한다. 직접 해당 케이스들을 살펴보면서 어떻게 활용할 수 있는 지 파악하는 것이 중요하다. 또한, 데이터베이스의 기본 내용을 Raw data로 뽑는 등의 기본적인 데이터 분석 기능은 거의 모두 탑재하고 있다.
메타베이스 도입
메타베이스를 살짝 둘러봤다면 굉장히 깔끔한 BI 툴이라는 것을 알 수 있다. 그렇다면 이 Metabase를 조직에 도입한다면 어떻게 활용할 수 있을까? 먼저 Metabase는 관리자 페이지를 제공한다. 조직의 맴버를 초대하고, 이메일을 관리하는 기본적인 Oranization 기능이 들어있다.
또한 통계 자료를 Slack을 통해서 받아볼 수 있다. Slack과의 연동도 꽤 좋은 편이다. 구독한 대시보드를 Slack을 통해서 자동으로 받아볼 수 있는데, 예를 들어 회사 업무 중 전날에 있었던 통계를 보고하는 업무가 있다면 그러한 내용을 Slack을 통해서 간단하게 받아볼 수 있는 것이다.
이제 데이터베이스 추가하기를 눌러 데이터베이스 연결을 해보자.
데이터베이스에 연결하면 위와 같은 페이지에서 데이터베이스의 정보를 입력할 수 있다. Metabase가 데이터베이스에 연결할 수 있으면 새로운 데이터 소스가 생긴다.
참고로, docker run을 통해서 메타베이스 대시보드를 띄운 경우에 localhost를 입력하면, 내 컴퓨터의 localhost가 아니라, 컨테이너의 localhost를 인식하게 된다. 따라서, 다른 데이터베이스에 접근하기 위해서는 docker network 기능을 사용해서 호스트명을 리졸빙할 수 있게 해야한다.
다음으로는 몇 가지 메타베이스를 사용할 때의 주의사항이 있다.
데이터베이스에 접근할 때의 주의사항
메타베이스는 대시보드에 접근할 수 있는 사용자가 Raw SQL을 입력할 수 있는 기능을 제공한다. 따라서 SELECT 외에도 다른 SQL 구문을 사용할 우려가 있는데, 이를 관리하기 위해서 데이터베이스에 Metabase용 계정을 생성하여, Readonly 권한만 주는 것이 일반적이다. Metabase에서 접근할 때, Metabase용 계정을 통해서 연결하는 게 좋다.
이 외에도 네트워크를 격리하거나 HTTPS를 통한 통신으로 안전하게 연결을 형성하는 것도 기본이니 잊지 말자.
메타베이스를 프로덕션으로 사용할 때의 주의사항
메타베이스를 로컬에서 실행하는 경우 내부적으로 h2 데이터베이스를 사용하게 된다. 프로덕션으로 메타베이스를 쓰기로 결정했다면, h2가 아닌 다른 데이터베이스를 사용하는 것이 권장된다. docker를 통해서 metabase를 실행하면 이와 관련된 로그가 실제로 뜨는 것을 확인할 수 있다.
2025-03-23 14:21:44 2025-03-23 05:21:44,198 WARN db.env :: WARNING: Using Metabase with an H2 application database is not recommended for production deployments. For production deployments, we highly recommend using Postgres, MySQL, or MariaDB instead. If you decide to continue to use H2, please be sure to back up the database file regularly. For more information, see https://metabase.com/docs/latest/operations-guide/migrating-from-h2.html
이와 관련해서 따로 프로덕션용 데이터베이스를 설장하는 방법은 다음 공식 문서에 나와 있다. 프로덕션에서 사용하는 경우 h2가 아니라 다른 데이터베이스를 사용하자.
- [metabase] h2에서 마이그레이션 : https://metabase.com/docs/latest/operations-guide/migrating-from-h2.html
마치며
예전부터 디자인이 꽤 마음에 들어 많이 좋아하는 BI 툴이었는데, 최근에 다시 확인을 해보니 보다 기능이 많아졌다. 개인적으로 제일 예쁘다고 생각하는 BI 툴이다.
'DevOps > monitoring' 카테고리의 다른 글
prometheus와 grafana로 redis 서버 모니터링 (0) | 2024.07.16 |
---|---|
promethous와 grafana로 linux 시스템 모니터링 (2) | 2024.07.14 |
Prometheus란? (1) | 2024.07.14 |