Data Engineering 및 Infra

Metabase 설치 방법 - MySQL(MariaDB) 연동 및 Athena, Oracle 연동하기

이수진의 블로그 2021. 2. 4. 14:16
반응형
728x170

포스팅 개요

Metabase(메타베이스)는 오픈 소스 비즈니스 인텔리젼스 툴(open source business intelligence tool)입니다. Database를 연동하고 그 연결된 DB에서 데이터를 시각화 할 수 있는 툴입니다. 기본적으로 SQL로 동작할 수 있고 간단하게 클릭 식으로도 볼 수 있는 매우 유용한 시각화 툴입니다.

그래서 이번 포스팅에서는 이 Metabase를 어떻게 설치할 수 있는지, 그 과정에서 무슨 에러가 발생할 수 있고 어떻게 대처할 수 있는지를 작성합니다. 또한, 기본적으로 Metabase는 AWS Athena 연동 및 Oracle 연동은 되지 않는데요. 이를 연동할 수 있는 방법도 작성하려고 합니다.

 

참고한 자료는 아래와 같습니다.

 


포스팅 본문

기본적인 설치 방법

Metabase(메타베이스)는 다양한 설치 방법이 있습니다. 설치 방법은 참고 자료에 있는 metabase homepage를 참고하시면 됩니다.

저는 Metabase를 설치하는 방법 중 가장 간단한 방법인 Docker를 이용해서 실행하려고 합니다.

위 이미지와 같이 

docker run -d -p 3000:3000 —name metabase metabase/metabase

명령어를 실행해서 docker를 통해 metabase를 간단하게 다운받고 실행할 수 있습니다.

위 명령어를 실행하면 아래처럼

metabase image를 이용해 container가 올라간 것을 확인할 수 있습니다.

3000번 포트로 연결되었으니까 localhost:3000을 들어가봅니다.

 

그러면 위와 같이 Metabase 화면이 나오고 Let's get started 라는 버튼이 활성화 되어 있는 것을 볼 수 있을겁니다.

해당 버튼을 눌러서 Metabase 설정을 진행합니다!

 

언어를 선택하는 화면입니다.

안타깝게도 한글은 지원이 되지 않습니다. 그러나, 어려운 영어가 쓰여져 있지도 않고 사용법이 어렵지 않기 때문에 충분히 영어로 사용할 수 있습니다. ( 중국어, 일본어 등 다양한 언어가 지원이 되니 해당 외국어에 익숙하시면 그것을 사용하시면 되겠습니다)

 

 

개인 정보를 입력해줍니다. 해당 계정은 Admin 계정으로 들어가게 됩니다.

이메일을 입력을 하게 되는데 이메일 검증을 하거나 그러진 않습니다. 단지, Metabase 환경에 추후 로그인할 때 사용되는 정보라고 생각하시면 됩니다.

 

 

그리고 이제 DB에 연결을 하게 되는데요. 포스팅 개요에서도 말씀드렸다시피 Metabase는 오픈 소스 비즈니스 인텔리젼스 툴(open source business intelligence tool)입니다. Database를 연동하고 그 연결된 DB에서 데이터를 시각화 할 수 있는 툴입니다. 따라서 원하는 DB와 연동을 하고 해당 DB에 SQL query를 날려 시각화를 합니다. 참고로 저 DB 목록에 원하시는 DB가 없을 수도 있습니다.

 

저 같은 경우에는 AWS Athena와 Oracle DB가 없었습니다. 포스팅 뒤쪽에 Metabase에서 Oracle과 Athena를 연동하는, 그리고 사용하는 방법에 대해서 작성해두었습니다. 일단은 저는 MySQL(혹은 MariaDB)를 연결해서 사용하겠습니다.

 

 

관련 DB 정보를 넣어주고 다음으로 넘어갑니다.

만약, 여기서 DB 연동이 되지 않고 오류가 나오면 침착하게 일단 skip하고 넘어가시면 됩니다.

어차피 Admin 설정에서 Database를 연결할 수 있습니다. 만약, 여기서 DB 연결이 되지 않는다고 하셔도 일단 넘어가시고 셋팅을 먼저 진행하셔도 됩니다!

 

만약, DB 연결까지 잘 끝났으면 위 화면이 나오게 되고 Our data 부분에 연결한 DB명이 나오게 됩니다.


기본적인 사용 방법

간단한 사용방법입니다. 먼저 맨 위에 Ask a question 부분을 눌러줍니다.

 

저~ 위에 빨간색 줄이 있는 오른쪽 상단에 Ask a question입니다.

이 Ask a question을 통해 SQL을 작성할 수 있는 환경으로 넘어갈 수 있습니다.

 

여기에서 3가지 메뉴가 있습니다. Simple question, Custom question, Native query가 있는데 Native query 부분에서 SQL 쿼리문을 작성하고 해당 데이터의 결과를 볼 수 있습니다.

저는 Native query 부분으로 넘어가도록 하겠습니다. 생각해보니 주로 이쪽 영역만 계속 사용했었네요 ㅎㅎ

 

 

이제 select a database라는 부분을 클릭하면 연동한 database 정보가 보일 겁니다. 저는 아까 book_rating 이라는 DB를 연결했기 때문에 해당 DB가 보이게 됩니다.

저 DB를 선택하고 이제 SQL을 작성해봅니다.

 

 

빈 텍스트 화면에 위 처럼 SQL을 작성합니다. 저는 아래와 같이 작성했습니다.

select rating, count(rating) as rating_cnt
from book_ratings
group by 1
order by 1 desc 

그러면 rating에 따른 group by 결과가 나오게 됩니다. 그 결과를 Table로 볼 수 있는데요. 위에서도 말씀했듯이 Metabase는 BI Tool입니다. 따라서 시각화를 지원해줍니다!

Visualization 부분을 클릭해서 시각적으로 변경할 수 있는데요. Line, Bar, Scatter, Pie, Funnel, Map 등 다양한 시각화가 가능합니다

 

위 처럼 Bar chart를 선택하면 그 결과에 대한 시각화를 볼 수 있습니다.

이렇게 모은 SQL 결과 question을 저장해서 나중에 Dashboard를 구축할 수도 있습니다. 해당 내용은 현 포스팅 내용에서 조금 벗어나므로 추후에 따로 작성하겠습니다.

 


Athena 연동된 metabase 설치 방법

위에서 Metabase를 간단하게 설치하면 여러가지 아쉬운? 점이 있는데요. Oracle이나 Athena 연동이 되지 않는다는 것이었습니다.

개인적으로 회사에서 Athena를 쓰고 있어서 이 부분에 대한 연동이 필요했습니다.

그리고 역시! 누군가 이 Athena 환경을 쓸 수 있도록 제공해주고 있었습니다. dacort라는 계정으로 github와 docker에서 활동하시는 분인데요. 개요에 해당 github 자료를 링크 해놨습니다.

이렇게 Docker 환경을 직접 제공해주었습니다. 

즉, 위에서 설치한 docker run 대신에 위 사진에 적혀져 있는 

docker run -d -p 3000:3000 --name metabase-athena dacort/metabase-athena-driver:v1.1.0

을 이용해서 설치할 수 있습니다.

참고로 2021년 2월 3일 기준 버전은 1.1.0이 최신입니다.

해당 Docker를 설치하고 마찬가지 일련의 과정을 거치면 Amazon Athena 라는 것이 Database 목록에 나와 있는 것을 확인할 수 있습니다.


Oracle 연동 방법

Metabase에는 기본적으로 Oracle이 없습니다. 그래서 Oracle을 연동해야 하는데요. Metabase에서 Oracle을 연동하려면 Oracle driver를 직접 다운받아서 Metabase docker container 환경에 직접 넣어줘야 합니다.

먼저 구글에 Oracle ojdbc8.jar를 검색해서 해당 파일을 다운로드 받습니다.

(21년 02월 03일 기준으로 ojdbc8.jar이며, 해당 버전은 바뀔 수도 있습니다.)

(Oracle 로그인이 필요합니다.)

저 파일을 다운로드 받아줍니다.

로컬에 다운로드를 받고 이제 docker 환경에 접속해줍니다.

 

docker exec -it {container id} bash

와 같이 Metabase docker container 환경에 들어가줍니다.

( 접속하는 방법은 다양하게 있을 수도 있습니다.)

그러면 아래 사진과 같이

현재 path는 / 이며 여기에 plugins 라는 디렉토리가 있습니다.

이 디렉토리에 방금 받은 ojdbc8.jar 파일을 넣어주기만 하면 끝입니다

 

저는 로컬에서 cp 명령어로 docker 환경에 파일을 복사해주었습니다.

 

들어간 것을 확인할 수 있습니다.

그리고 Metabase 환경에서 보면 Database가 있는 것을 볼 수 있습니다.

만약 보이지 않다면 Container를 restart 해주시면 됩니다!

 

 

이렇게 보이시면 Metabase에 Oracle 연동이 잘 된 것입니다.


기타. 오류 메세지와 해결 방법

Metabase(메타베이스)를 설치하면서 발생하는 각종 오류를 정리해둡니다.

 

1. 

Could not connect to address=(host=localhost)(port=3306)(type=master) : Socket fail to connect to host:localhost, port:3306. Connection refused (Connection refused)

이 오류가 나오면 Database 연동 정보가 잘못 입력된 확률이 높습니다. 포트 정보나 Database 주소가 제대로 맞는지 확인해보시길 바랍니다.

 

2.

RSA public key is not available client side (option serverRsaPublicKeyFile)

에러와 

RSA public key is not available client side (option serverRsaPublicKeyFile not set)

 

 

 

이 에러를 만나시면 아마 database user 계정의 보안 정책과 관련있는 확률이 높습니다.

저는 MySQL8.0 버전을 사용하면서 이 에러와 계속 부딪혔는데요.

 

 

위 사진과 같이 MySQL 계정을 만들면 기본적으로 위처럼 caching_sha2_password 형식이 붙습니다.

보안정책인지 정확하게는 잘 모르겠으나, 저 계정에 접속을 하려면 RSA public key 연동등의 작업이 필요합니다.

하지만, 아래와 같이 조금 보안상으로 적절하진 않지만 우회할 수 있는 방안이 있습니다.

1. 계정을 하나 만든다
2. 해당 계정의 IDENTIFIED 정책을 mysql_native_password로 바꾼다.

======================================================================

1. CREATE USER 'admin2'@'%' IDENTIFIED BY '1234';
2. ALTER USER 'admin2'@'%' IDENTIFIED WITH mysql_native_password BY '1234';
3. flush privileges;

 

그러면 계정이 위와 같이 변경이 되면서 접속이 가능하게 될 것입니다.

하지만, 보안상 적절하지 않다고 합니다. 자세한 것은 제 참고자료 3번째 링크를 참고해주시기 바랍니다.

 


마무리

이번 포스팅은 오픈 소스 비즈니스 인텔리젼스 툴(open source business intelligence tool)인 Metabase(메타베이스)를 설치하는 방법과 간단하게 사용하는 방법 그리고 Metabase에 Oracle Database 및 Amazon Athena를 연동하는 방법에 대해서 작성했습니다.

굉장히 간단하게 시각화를 할 수 있는 유용한 오픈소스입니다.

부디 도움이 되시길 바랍니다.

 

반응형
그리드형