2021. 4. 6. 20:29ㆍmongodb
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
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만큼의 완벽한 호환은 아니지만, 그래도 충분히 훌륭하고 모니터링이 가능하다.
이상 이 글을 마무리 하겠다.
'mongodb' 카테고리의 다른 글
MongoDB Replicaset 설정 (0) | 2021.04.14 |
---|---|
MongoDB SQL Union All ($facet) 하는 방법 (0) | 2021.04.11 |
MongoDB 데이터 삭제 후, 용량 반환 방법 ( compact 명령어 ) (2) | 2021.04.09 |
Ubuntu MongoDB 설치 가이드 - (로그, 방화벽 관리 한번에) (0) | 2021.04.08 |
MongoDB Log 관리 ( logrotate 사용 ) (4) | 2021.04.08 |