2020년 4월 20일 월요일

오픈소스 Grafana 기반 공간정보지도 데쉬보드 개발 방법

이 글은 오픈소스 Grafana 기반 공간정보지도 데쉬보드 개발 방법에 대한 간단한 소개이다. 최근 IoT 등 센서 데이터, 박데이터 분석 결과를 효과적으로 보여주는 데쉬보드의 활용도가 높아지고 있다. 예를 들어, 텍스트 정보를 시각적으로 보여주려면 데쉬보드를 이용해야 한다.

머리말
그라파나는 유명한 오픈소스 기반 데쉬보드이며, 쉽게 다양한 패널을 플러그인할 수 있다. 다음은 그라파나를 이용한 다양한 형태의 패널 플러그인을 보여준다.

동작 개념 및 기능 소개
그라파나는 다양한 시계열 데이터가 저장된 데이터베이스를 지원한다. 각 데이터소스는 제공하는 쿼리 편집기를 통해 보여지는 데이터 뷰를 정의할 수 있다. 다중의 데이터소스에서 하나의 단일 데쉬보드로 연결할 수도 있다. 즉, 아래와 같이 데이터 연결이 유지되어 데쉬보드로 모니터링하는 방식이다.

데쉬보드 - 질의 - 데이터소스

데이터베이스 종류는 시계열 DB인 influxDB를 포함한 대부분을 지원한다(참고). 그라파나를 설치하면, 이미 만들어진 Grafana (랜덤 walk data), Mixed (다중 데이터 소스), Dashboard (유사 데쉬보드로 부터 결과를 사용하는 모드) 를 선택할 수 있다. 

질의는 데이터소스에 따라 적절한 데이터 질의 방식을 지정해야 한다. 

데쉬보드 패널은 다양한 스타일을 가질 수 있다. 패널은 드래그&드롭으로 정렬할 수 있다. 그래프는 Time series, state timeline, status history, bar chart, histogram, heatmap, pie chart, bar gauge, table, logs, node graph, dashboard list, text panel 등을 지원한다(참고). 

그라파나는 다양한 데이터소스 플러그인을 지원한다. 상세 내용은 여길 참고한다.
그라파나 plugin 검색 화면 

그라파나를 설치하면 CLI (Command Line Interface)를 제공한다. 상세 명령은 설치 후 다음을 입력한다(참고). 
grafana-cli -h

디자인된 데시보드는 viewer, editor, organization administrator 계정으로 구분되 접근할 수 있다(참고).

그라파나 설정 파일은 /etc/grafana/grafana.in 에 있다(참고). 

이외, 그라파나는 데쉬보드 시간 범위, 단축키 등을 지원한다(참고).

설치 방법
Grafana 설치는 순서는 다음과 같다. 참고로, 우분투 기준으로 진행한다. 상세 내용은 여기를 참고한다.

1. 몇몇 디펜던시와 설치키를 다운로드 함
sudo apt-get install -y apt-transport-https
sudo apt-get install -y software-properties-common wget
sudo wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key

2. 설치 프로그램(stable version) 리파짓토리 추가
echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

3. 그라파나 설치
sudo apt-get update
sudo apt-get install grafana
sudo apt-get install grafana-enterprise

그라파나 설치 모습

그라파나 서버 시작
정상 설치되면, 그라파나 서버를 실행할 수 있다. 
sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl status grafana-server

만약, 부팅시 자동 시작하게 만들려면, 아래와 같이 입력한다.
sudo systemctl enable grafana-server.service


클라이언트에서 서버 접속
이제 서버가 실행되었으니, 클라이언트에서 접속해 본다. 

웹브라우저를 띄우고 주소를 입력한다.

로그인 화면

유저네임, 암호에 admin 을 입력해 로그인한다.
로그인 후 모습

데쉬보드 생성
이제 데쉬보드를 생성해 보자. 상세 내용은 여기를 참고한다. 

왼쪽 메뉴바 > Dashboards > Library panels > New dashboard 선택한다.

Dashboard > Add an empty panel 선택한다.

이 New dashboard / Edit Panel 화면에서 Query 탭을 선택한다.

Data source 콤보 박스에서 -- Grafana -- 데이터 소스 선택자(data source selector)를 선택한다.

화면 오른쪽 저장 버튼을 클릭해, 데쉬보드 디자인을 저장한다. 이제 데이터 소스에서 데이터를 읽어 차트로 보여주는 데쉬보드를 확인할 수 있다.

이제 오른쪽 위 패널 추가 버튼을 클릭해 현재 데쉬보드에 다양한 그래프를 추가할 수 있다.

다음은 geomap을 포함한 추가된 그래프들이다. 각 그래프에 적절한 데이터 소스를 쿼리를 이용해 설정하면 이에 맞게 그래프가 가시화된다. 

생성된 데시보드들은 다음과 같이 폴더 아래에 저장되어 있어, 재활용할 수 있다. 

데이터 소스 지정
그라파나는 수많은 데이터소스 플러그인을 제공한다. 

MongoDB 플러그인은 디폴트로 제공하지 않기 때문에, 필요하다면, 여기를 참고해 설치하도록 한다. 플러그인 설치 후 서버를 시작한다. missing signature 에러로 플러그인 안보이면, 설정 파일의 unsigned plugin section을 수정하거나, 환경변수에 unsign 플러그인 아이디를 설정하고, 그라파나를 재실행한다.
sudo gedit grafana.ini 
GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS=<your_plugin_id>
sudo systemctl restart grafana-server
npm run server

MySQL과 같은 플러그인은 디폴트로 제공한다. 이 사례에서는 다음과 같이 MySQL에 건물 관련 정보가 저장되어 있다고 가정한다.
MySQL

그라파나에서 MySQL 데이터소스를 검색해, 접속 주소, 아이디, 암호를 입력하고, 저장 및 테스트를 한다.
데이터 소스 추가 화면
데이터 소스 접속 정보 설정 및 테스트 화면

이전처럼 데쉬보드를 추가하고, 데이터소스를 선택한 후, 표현할 SQL 쿼리문을 적절히 정의한다. 출력될 컬럼들, 색상 스키마, 단위 등을 적절히 선택한다.
쿼리문 정의 및 SQL 수정 화면
생성된 그라파나 데쉬보드 (빌딩 정보 데쉬보드 예시)

공간 지리 정보 출력
공간 지리 정보를 그라파나 데쉬보드에 출력하려면, MySQL과 유사하게, PostGIS 서버 등을 설치, 실행한 후, 데이터를 업로드해야 한다. 이후, 앞의 과정과 유사하게 적절한 데이터소스를 추가하고, 데쉬보드를 생성한다.

Geomap은 데이터베이스에서 저장된 Long, Lat를 디스플레이할 수 있다. 쿼리에 위경도가 저장된 컬럼을 질의하고, 레이어를 추가한 후, 레이어에 표시될 좌표의 위경도가 저장된 컬럼을 지정한다. 그럼 다음과 같이 맵에 해당 좌표가 마크로 표시된다.

만약, 지도를 대체하고 싶다면, geojson파일을 생성하고, 다음 폴더에 파일을 복사해 넣는다. 그리고, static map으로 이 파일을 지정하면 된다. 단, 기존 geojson과 동일한 좌표체계와 구조를 가져야 기존 맵과 동일한 좌표계에 피쳐들이 디스플레이된다. 

그라파나를 다시 로딩하면, geomap 의 레이어에서 다음과 같이 해당 파일을 선택할 수 있게 된다. 선택하면, 해당 geojson이 맵에 출력된다.

데쉬보드 생성 결과는 다음과 같다.

이외에, 3차원 구글 어스 형식 데이터소스인 세슘 등 다양한 플러그인을 다음과 같이 설치할 수 있다.
grafana-cli plugins install satellogic-3d-globe-panel
sudo systemctl restart grafana-server


좀 더 상세한 내용은 레퍼런스를 살펴보길 바란다.

레퍼런스

댓글 없음:

댓글 쓰기