Grafana + Mongodb 연동 ( ubuntu ) - 한글

2021. 4. 6. 20:29mongodb

반응형

Grafana와 MongoDB를 활용해 실시간 모니터링을 시스템을 이번 시간에 개발해본다.

 

RDBMS랑 TDB 등에서는 Grafana를 활용해 모니터링에 유리하다. 

 

특히, TDB랑 Grafana는 매우 잘 연결된다.

 

하지만, NoSQL 진영에서는 Grafana의 지원이 부족한걸로 느낀다. 

 

redis의 경우, redis 엔터프라이즈여야 grafana 기능을 100% 활용할 수 있으며, 

 

MongoDB의 경우, grafana 엔터프라이즈에서 지원을 하고 있다.  

 

이번 시간에는 무료로!! MongoDB와 Grafana를 연동해, 실시간 모니터링 작업을 수행해 보겠다.

 

해당 글은 아래 github에서 참고 했다.

https://github.com/JamesOsgood/mongodb-grafana

 

0.선행과제

먼저 그라파나가  설치가 이루어져 있어야 한다.

 

1. 아래 사이트에서 제공하는 파일을 다운 받는다.

https://github.com/JamesOsgood/mongodb-grafana

그럼  mongodb-grafana-master.zip 파일이 다운 받아 질것이다.

 mongodb-grafana-master.zip 파일을 fpt로 Grafana가 설치되어 있는 우분투 서버에 옮겨준다.

 

해당 방법이 귀찮은 경우, wget를 통해 다운 받아도 된다.

$ wget https://github.com/JamesOsgood/mongodb-grafana/archive/refs/heads/master.zip

반응형

 

 

2. 다운이 완료된 파일을 압축을 풀어준다.

* wget의 받은 경우 master.zop으로 받아진다.

$ unzip master.zip

* ftp로 옮긴 경우 mongodb-grafana-master.zip 이다.

$ unzip mongodb-grafana-master.zip

 

728x90

 

3. 압축이 풀린 파일을 grafana plugins 으로 옮긴다.

경로를 모를 경우, 아래의 명령어로 찾아본다.

$ ps -ef | grep grafana

  • usr/sbin/grafana-server --config=/etc/grafana/grafana.ini --pidfile=/var/run/grafana/grafana-server.pid --packaging=deb cfg:default.paths.logs=/var/log/grafana cfg:default.paths.data=/var/lib/grafana cfg:default.paths.plugins=/var/lib/grafana/plugins cfg:default.paths.provisioning=/etc/grafana/provisioning

$ sudo mv mongodb-grafana-master /var/lib/grafana/plugins

 

4. Grafana를 재시작 해준다.

$ sudo systemctl stop grafana-server

$ sudo systemctl start grafana-server

 

5. Grafana에서 plugin를 확인해 본다.

 

 

 

 

 

6. node.js 를 설치해 준다.

$ sudo apt update 

$ sudo apt install nodejs 

 

7. npm를 설치해 준다.

$ sudo apt install npm

 

8. Grafana plugin 에 들어가서 필요한 패키지를 다운 받고 실행한다. 

$ cd /var/lib/grafana/plugins/mongodb-grafana-master

$ sudo npm install

$ sudo npm run server

 

9. Grafana 화면에서 data souce를  추가해 준다.

 

 

 

 

 

10. data souce에서 MongoDB를 추가해 준다.

 

 

 

 

 

11. Mongodb 정보를 입력해 준다.

 

 

 

 

 

12. Mongodb connection를 확인해 준다.

 

 

 

 

 

13. dashboard 를 만들어 준다.

 

 

 

 

 

14. 데이터 형태는 반드시 시간과 숫자형 데이터여야 한다.

샘플 데이터는 아래와 같다.

 

 

 

 

 

15. Mongodb 쿼리를 작성해 준다.

[주의사항]

1. 쿼리는 aggreate로 작성해야 한다. 한다.

2. 쿼리에 sort 를 넣어 주어야 한다.

3. 시간 기준으로 index도 반드시 있어야 한다.

 

[샘플 쿼리]

db.test_collection.aggregate([

{"$sort" : {"monitoring_time" : -1}},

{"$project" : {"ts":"$monitoring_time", "name" : "test_data", "value" : "$iotcore_insert_result", "_id" : 0}},

{"$limit" : 250}])

 

 

 

 

 

오늘은 이렇게 Grafana와 Mongodb 연동하는 방법을 배워봤다.

 

잘 따라 왔다면 무난히 성공했을 것이다.

 

influxDB만큼의 완벽한 호환은 아니지만, 그래도 충분히 훌륭하고 모니터링이 가능하다.

 

이상 이 글을 마무리 하겠다.

 

반응형