Ubuntu에서 ReDash 세팅 및 사용방법

ShinChul Bang
finda 기술 블로그
18 min readJan 20, 2020

Data Visualization Tool ReDash 에 대하여 세팅 및 사용방법을 스터디한다.

ReDash는 Mysql, Elasticsearch 등 다양한 데이터베이스를 연동하여 직접 쿼리를 작성해 결과 값을 가져오고 그 결과 값을 토대로 다양한 모양의 그래프를 그릴 수 있는 기능을 제공한다.

많은 회사들이 ReDash를 이용하여 데이터 시각화 대시보드를 구성하고 있다.

참고 : Redash helps you make sense of your data

이번 문서에서는 Ubuntu 인스턴스에 ReDash를 Docker Container로 띄워 데이터 시각화를 위한 환경을 구성 해보고 간단히 ReDash를 사용해 보는 내용을 다룬다.

Settings

먼저 AWS(혹은 다른 Cloud도 가능)에서 Ubuntu 18.04 LTS 인스턴스를 생성한다.

권장하는 인스턴스 사양은 아래와 같다.

CPU(Core): 1개 이상

Memory: 4GB 이상

필자는 AWS에서 t3a.medium 사양의 인스턴스를 사용했다.

# apt 패키지 업데이트
$ sudo apt update
# git 설치
$ sudo apt install git
# redash setup 프로젝트 clone
$ git clone https://github.com/getredash/setup.git
# 프로젝트 디렉터리로 이동
$ cd setup/
# setup 스크립트 권한 수정
$ sudo chmod +x setup.sh
# 스크립트 실행
$ ./setup.sh

정상적으로 ReDash의 Docker Container가 띄워지면 docker ps -a 명령어를 통해 현재 띄워져있는 ReDash의 컨테이너를 확인할 수 있다.

$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
658fe36ad458 redash/nginx:latest "nginx -g 'daemon of…" 27 seconds ago Up 26 seconds 0.0.0.0:80->80/tcp, 443/tcp redash_nginx_1
f03e29a76b50 redash/redash:8.0.0.b32245 "/app/bin/docker-ent…" 30 seconds ago Up 28 seconds 5000/tcp redash_scheduled_worker_1
3dda995f1466 redash/redash:8.0.0.b32245 "/app/bin/docker-ent…" 30 seconds ago Up 27 seconds 0.0.0.0:5000->5000/tcp redash_server_1
3d0280471c12 redash/redash:8.0.0.b32245 "/app/bin/docker-ent…" 30 seconds ago Up 27 seconds 5000/tcp redash_scheduler_1
c5651e263a93 redash/redash:8.0.0.b32245 "/app/bin/docker-ent…" 30 seconds ago Up 27 seconds 5000/tcp redash_adhoc_worker_1
a4b2194bebc7 redis:5.0-alpine "docker-entrypoint.s…" About a minute ago Up About a minute 6379/tcp redash_redis_1
991bb40eddcc postgres:9.6-alpine "docker-entrypoint.s…" About a minute ago Up About a minute 5432/tcp redash_postgres_1

기본적으로 ReDash 대시보드는 5000번 포트를 통해 라우팅된다.

인스턴스(혹은 온프레미스 서버)의 <public ip>:5000 을 통해 브라우저로 대시보드에 접속할 수 있다.

How to Use

먼저 대시보드에 접속하면 아래 화면과 같이 Redash Initial Setup을 하도록 하고있다.

알맞은 내용을 아래와 같이 입력하고 ‘Setup’ 버튼을 클릭한다.

입력한 계정 정보는 Admin 계정으로 활용된다.

ReDash 초기 설정을 하고나면 아래의 화면과 같이 대시보드 화면으로 리다이렉트된다.

자, 실제 사용방법을 핸즈온하기에 앞서 ReDash에 대한 간단한 정보와 추가적으로 ReDash에서 사용하는 용어와 내용을 간단하게 정리해보자.

- ReDash 라이선스 확인 → [BSD-2-clause](https://opensource.org/licenses/BSD-2-Clause) - 기능 상세
- 대시보드(Dashboard)
- 작성한 쿼리를 Table 혹은 Chart 형태로 볼 수 있도록 여러가지 쿼리를 등록하는 대시보드이다.
- 데이터 소스(Data Source)
- 데이터 소스란, 연결할 데이터베이스를 말한다. ReDash에서 말하는 Data Source의 예시로는 Mysql, Elasticsearch, MongoDB 등등이 있다.
- 신기하게 Kibana 혹은 Google Sheet, Google Analytics 같은 DB라고 생각되지 않는 것들도 Data Source로 연결할 수 있다. (어떻게 사용되는건지는 확인해봐야 할 듯)
- 제공하는 Data Source는 매우 다양하고 많다. [제공하고 있는 Data Source의 리스트는 여기서 확인할 수 있다.](https://redash.io/help/data-sources/setup/supported-data-sources)
- 쿼리(Query)
- ReDash에서 말하는 쿼리는 말 그대로 쿼리이다. 이 쿼리의 결과값으로 Table 혹은 Chart 형태로 보여준다. 결과값을 가져오는 쿼리와 Table/Chart 모두를 통틀어서 쿼리라고 부르는 것 같음.
- 제공하는 Visualization Mode
- Table : 테이블 형태
- Chart : 다양한 종류의 Chart 모양 제공
- 쿼리의 결과값을 CSV, Excel로 다운로드 받을 수 있다. (다운로드 받으면 Table 형태로 볼 수 있음)
- 현재는 생성한 쿼리를 삭제할 수 없다. 대신 Archive(보관)이라는 기능이 있어 잘못 작성하거나 필요없는 쿼리는 별도로 Archive에 보관하여 쿼리 리스트에 보이지 않도록 할 수 있다. 따라서 잘못 작성한 쿼리가 있다면 그냥 새로 쿼리를 만들지 말고 그 쿼리 내에서 sql만 수정하여 재사용하면 될 것 같다.
- 알림 기능(Alert)
- 생성한 쿼리를 선택하여 이 쿼리에서의 값에 조건을 걸어 조건이 충족되면(Trigger) 지정해놓은 경로로 알림을 보내준다.
- 제공하는 알림 경로(Alert Destination)
- ChatWork
- PagerDuty
- Slack
- Webhook(= 슬랙의 Incoming WebHook)
- Mattermost
- Email
- Google Hangouts Chat
- 알림 경로는 하나의 알림에도 여러개 등록 가능하다. 즉, 하나의 알림에 동시에 Slack과 Email로 notification을 전송할 수 있음.
- 계정 관리 기능
- 그룹(Group)
- 그룹을 생성하여 그룹에 사용자(Member)를 할당할 수 있고, 그룹별로 접근 가능한 Data Source를 정할 수 있다.
- Group 별로 추가한 Data Source도 접근 권한을 설정할 수 있다.(Full Access, View Only)
- 유저(User)
- ReDash에 접속할 수 있는 계정(User)을 생성하여 발급할 수 있다. - 계정을 생성하면 접속해서 비밀번호를 설정할 수 있는 링크를 제공하는데 링크를 통해서 비밀번호를 세팅하면 계정이 Active 상태가 된다.
- 계정 생성 후 비밀번호를 설정할 수 있는 링크를 제공했는데 아직 비밀번호를 세팅하지 않았으면 Pending Invitations 상태가 된다.
- 계정을 Disable 처리할 수 있다. 만약 Disable 처리된 계정이 있으면 해당 계정은 로그인할 때 계속 'Wrong email or password.' 라는 메시지가 뜨면서 로그인을 할 수 없다.
- Admin이 아닌 유저 계정은 Data Source를 추가할 수 없다.
- 유저 계정은 자신이 생성한 쿼리에 대해서만 알림을 생성할 수 있다.
- 현재로써는 계정 각각에 권한을 부여할 수는 없다. 권한 설정은 그룹을 통해서만 가능하다.
- 만약 유저 계정이 할당되어 있는 그룹 권한이 View Only 라면 쿼리 생성은 불가능하고 이미 만들어져있는 쿼리에 대한 조회만 가능하다.

Data Source Setting

이제 ReDash에 대해 간단하게 알아봤으니 DB부터 연결해보자.

상단의 메뉴바 중 아래 그림과 같은 모양의 버튼을 클릭한다.

그럼 아래와 같은 ‘Settings’ 화면으로 이동된다.

여기에서 ‘New Data Source’ 버튼을 클릭하여 ReDash에 연결할 DB를 등록한다.

‘New Data Source’ 버튼을 클릭하면 굉장히 다양한 DB들이 목록에 있는 것을 확인할 수 있다.

ReDash와 연결을 원하는 DB 종류를 검색한다.

필자는 RDS(Mysql)을 선택했다.

DB 종류를 선택하면 아래와 같이 정보를 입력할 수 있는 팝업이 나온다.

해당 입력란에 자신의 DB 정보에 맞게 잘 입력한 후 ‘Create’ 버튼을 클릭한다.

이 때, 권장하는 DB 접근 계정은 조회 권한만 가진 계정으로 입력하도록 한다.

왜냐하면 외부 서비스에서 DB에 접근할 때 보안상 필요한 권한만 부여하는 것이 가장 안전하므로 ReDash에서는 조회만 할 것이기 때문에 조회 권한만 가지고 있는 계정을 사용하는 것이 좋다.

위 화면에서 ‘Create’ 버튼을 클릭하면 아래 화면으로 리다이렉트 된다.

이 곳에서 설정했던 Data Source 정보를 변경할 수도 있고, ‘Test Connection’ 버튼을 클릭하여 DB와의 연결도 테스트 해볼 수 있다.

Data Sources 목록으로 돌아오면 내가 추가한 DB가 리스트에 보여지는 것을 확인할 수 있다.

Query Setting

DB 연결을 세팅했으니 이제 DB에 날릴 쿼리를 작성하자.

상단의 ‘Create’ 버튼을 클릭해서 ‘Query’를 클릭한다.

버튼을 클릭하면 하단의 화면과 같이 쿼리를 작성할 수 있는 화면으로 이동된다.

마치 Workbench나 DBeaver같은 Database Tool 같은 모습이다.

왼쪽에는 등록한 Data Source를 선택할 수 있는 Select box가 있다.

상단의 ‘New Query’ 라고 되어있는 부분은 기본적으로 설정되는 Query의 이름이다.

이 이름을 선택하면 아래 그림과 같이 Query 이름을 변경할 수 있다.

필자는 아래와 같이 Query의 이름을 수정해보았다.

Query의 이름을 수정하고 엔터를 치면 이름이 수정된다.

오른쪽에는 쿼리를 작성할 수 있는 큰 textarea가 존재한다.

쿼리를 작성하고나서 ‘Execute’ 버튼을 클릭하면 쿼리가 실행된다.

그리고 ‘Save’ 버튼을 누르면 작성한 쿼리가 저장된다.

필자는 현재 날짜를 출력해주는 간단한 쿼리를 작성해보았다.

‘Execute’ 버튼을 클릭하여 쿼리를 실행시키면 우측 하단에 쿼리의 결과가 나온다.

결과는 기본적으로 Table 형태로 볼 수 있고 ‘+ New visualization’ 버튼을 클릭해서 Chart를 구성하여 볼 수도 있다.

‘+ New visualization’ 버튼을 클릭하면 아래와 같은 화면을 볼 수 있다.

실제 Chart를 그려보기 위해 아래의 쿼리를 통해 더미데이터를 생성했다.

‘+New Visualization’ 버튼을 클릭해서 Chart를 그려보자.

아래 화면과 같이 x축에는 datetime을 설정했고,

y축에는 각 색깔 값(red,blue,green 등등)을 설정했다.

Chart는 이 외에도 다양한 모양을 제공한다.

다른 모양의 Chart를 그리고 싶으면 아래 화면처럼 다른 Chart를 선택해서 그릴 수 있다.

Chart 설정을 모두 완료했으면 하단의 ‘Save’버튼을 클릭한다.

Chart를 저장하고나면 아래 화면처럼 확인할 수 있다.

Query와 Chart 작업을 모두 마쳤으면 작업 내용을 저장하기 위해 ‘Save’ 버튼을 클릭한다.

만약 작업했던 Chart를 다시 수정하고 싶다면 맨 하단의 ‘Edit Visualization’ 버튼을 클릭하여 작업한다.

마지막으로 생성한 Query를 Dashboard에 등록할 수 있게 하기 위해 ‘Publish’ 버튼을 클릭한다.

Dashboard Setting

이제 작성한 Query를 대시보드에 등록하여 모니터링 하는 방법을 알아보자.

상단의 ‘Create’ 버튼을 클릭해 ‘Dashboard’를 클릭한다.

그럼 아래와 같은 팝업이 뜬다.

여기에서 생성하고자 하는 Dashboard 이름을 작성하고 ‘Save’ 버튼을 클릭한다.

필자는 ‘my dashboard’ 라는 이름으로 생성하였다.

Dashboard를 생성하고 나면 아래와 같이 생성한 Dashboard 화면으로 리다이렉트된다.

여기에서 우리가 아까 생성한 Query를 등록하기 위해 맨 하단의 ‘Add Widget’ 버튼을 클릭한다.

그럼 아래와 같은 팝업이 뜬다.

팝업에서 우리가 생성했던 ‘My First Query’를 확인할 수 있다.

이 ‘My First Query’를 클릭한다.

‘Choose Visualization’ 탭에서는 해당 Query를 Dashboard에서 어떻게 보여줄 것인지를 결정한다.

Table은 테이블 형태로 보여준다.

Chart는 우리가 세팅했던 Chart 형태로 보여준다.

우선 Chart 형태로 먼저 보여주기 위해 ‘Choose Visualization’을 Chart로 세팅한다.

모두 세팅한 후 ‘Add to Dashboard’ 버튼을 클릭한다.

Chart를 추가하면 아래와 같이 Dashboard에 우리가 만들었던 Chart가 삽입된다.

이번엔 Table 형태로 보여주도록 Chart를 삽입해보자. 방법은 위와 동일하지만 ‘Choose Visualization’을 Table로 설정해주어야 한다.

이렇게 왼쪽에는 Chart가, 오른쪽에는 Table이 삽입되었다.

Dashboard의 변경사항을 저장하기 위해서 상단의 ‘Done Editing’을 클릭한다.

이제 설정한 Dashboard를 Publish하면 같은 Group내 Member들이 Dashboard에 접근이 가능하고 조회할 수 있다.

상단의 ‘Publish’ 버튼을 클릭하여 Dashboard를 Publish 시킨다.

User & Group

ReDash에서는 User와 Group을 생성하고 관리할 수 있다.

Group 별로 접근 가능한 Dashboard, Query, Alarm을 설정할 수 있고

User를 Group에 할당하여 접근 권한을 부여할 수 있다.

또한 Group에서 Data source에 대한 권한을 설정할 수 있는데 현재는 ‘Full Access’, ‘View Only’ 이 2가지 권한만 설정할 수 있다.

User와 Group 관리를 위해서는 아래 화면과 같이 상단의 아이콘을 클릭해서 가능하다.

먼저 Users를 보자.

여기서 User를 추가하려면 ‘New User’ 버튼을 클릭한다.

버튼을 클릭하면 아래와 같은 팝업을 볼 수 있다.

팝업에서 User의 이름과 인증을 할 Email 주소를 입력하고 ‘Create’를 클릭한다.

‘Create’ 버튼을 클릭하면 보통 Email로 User 생성 메일이 전송된다.

하지만 mail server가 서버에 세팅되어있지 않으면 직접 접근해서 인증을 할 수 있는 url을 제공한다.

링크에 접속해보면 아래 화면과 같이 비밀번호를 입력하게끔 한다.

이렇게 User의 계정 발급을 처리할 수 있다.

다음은 Group을 보자.

Group을 생성하기 위해서 ‘New Group’ 버튼을 클릭한다.

버튼 클릭 후 나오는 팝업에서 생성할 Group의 이름을 설정한다.

팝업의 ‘Create’ 버튼을 클릭하여 새로운 Group을 생성하면 아래와 같이 Group 상세 화면으로 리다이렉트 된다.

Group에서는 Members라는 User를 추가하거나 빼는 작업을 하는 탭이 있고, 두번째로 Group에서 접근할 수 있는 Data Source를 등록하는 Data sources라는 탭이 있다.

먼저 Members 탭에서 User를 등록하는 작업부터 핸즈온 해본다.

Group에 User를 추가하기 위해 ‘Add Members’ 버튼을 클릭한다.

버튼을 클릭하면 아래 화면과 같은 팝업을 볼 수 있다.

여기에서 Group에 추가하고자 하는 User를 클릭하여 추가한다.

User를 선택한 후 ‘Save’ 버튼을 클릭하면 Group에 선택한 User가 추가된다.

이제 Group의 Data source를 설정해보자.

‘Data Sources’ 탭을 클릭한다.

Group에서 접근 가능한 Data Source를 추가하기 위해 ‘Add Data Sources’ 버튼을 클릭한다.

Group에 User를 등록했을 때와 똑같이 원하는 Data Source를 선택한 후 ‘Save’ 버튼을 클릭한다.

‘Save’ 버튼을 클릭하면 아래와 같이 Group에서 접근 가능한 Data Source가 추가되었음을 확인할 수 있다.

또한 ‘Full Access’, ‘View Only’ 두 가지의 권한을 설정할 수 있음을 확인할 수 있다.

--

--