Raspberry Pi 3 B+에서 Grafana와 Prometheus 설치하기
Grafana는 오픈소스 기반의 강력한 대시보드 플랫폼이다. 서버나 임베디드 장비의 운영상태 등을 Prometheus, ElasticSearch와 같은 data source를 플러그인 방식으로 연결해서 다양한 그래픽 요소로 나타낸다.여기서는 대표적인 오픈소스 모니터링 솔루션인 Prometheus를 이용하여 요즘 메이커들 사이에 사물인터넷의 주요 디바이스로 자리매김하고 있는 라즈베리 파이의 운영상태를 모니터링 해보기로 하겠다.
[그림.1] 라즈베리 파이 3 B+ |
[그림.2] 운영 중인 라즈베리 파이 3 B+ |
라즈베리 파이는 영국의 라즈베리 파이 재단에서 학교와 개발도상국에서의 기초 컴퓨터 과학 교육 증진을 목표로 제작한 초소형 PC이다. 메인보드에 내장된 GPIO핀을 이용하여 다양한 센서모듈을 조합하여 메이커들에게는 사물인터넷의 핵심 기기로 각광받고 있다.
서버나 사물인터넷 허브와 같이 중단없이 장시간 운영되는 장비의 경우 안정적인 운영을 위해 실시간 서비스 모니터링이 필수적인데, Prometheus를 이용하면 다양한 정보를 수집하여 로그를 저장하고 이를 Grafana와 연동하여 세련된 그래픽 환경으로 운영이 가능하다. 게다가 오픈소스로 제공되기 때문에 설치와 운영 등 기술 비용(!)을 제외하면 소프트웨어 라이선스 비용은 무료이다. (제발, 소프트웨어 라이선스가 무료라고 모든게 공짜라는 생각은 버리자!)
[그림.3] Prometheus Architecture |
Prometheus는 그림과 같이 Prometheus 서버가 외부의 export node들로부터 metric을 pulling 방식으로 수집하고, 이를 Grafaana 등을 이용해 시각화한다. 구조는 좀 복잡해 보이지만 이 글에서 구현해 볼 모니터링 툴을 간단히 설명하면,
1. node exporter - 모니터링할 기기의 메트릭(정보)을 제공
2. prometheus - 노드들로부터 수집한 메트릭을 집계하거나 후처리
3. Grafana - prometheus가 집계한 데이터를 시각화
이렇게 3가지 서비스를 설치하면된다. 3가지 서비스는 모두 HTTP 프로토콜을 사용하므로 개별 장비에서 별도로 운영해도 되고 한 장비에서 운영해도 된다. 실제 운영환경에서는 모니터링 할 개별 장비에는 node exproter 서비스를 설치하고, 모니터링 서비스를 제공할 서버에 prometheus와 grafana를 설치해서 운영하게 될 것이다.
설치 준비.
최신 버전의 Raspberian이 설치된 라즈베리 파이(이 글에서 사용한 라즈베리 파이는 NOOBS 3.2.0을 이용하여 Raspberry Pi 3 B+에 설치함)
node exporter 설치하기
배포 : https://github.com/prometheus/node_exporter/
1. 설치하기
현재 사용 중인 라즈베리 파이 CPU 타입에 맞는 배포 파일을 내려받아 압축을 푼다. (설치 작업을 편리하게 하기위해 root 권한으로 실행할 것.)$ sudo su - # cat /proc/cpuinfo (ARM CPU 버전 확인) # cd /opt # curl -sSLO https://github.com/prometheus/node_exporter/releases/download/v0.16.0-rc.0/node_exporter-0.16.0-rc.0.linux-armv7.tar.gz # tar zxvf node_exporter-0.16.0-rc.0.linux-armv7.tar.gz # ln -s node_exporter-0.16.0-rc.0.linux-armv7 node_exporter ### 설치 진행의 편리를 위해 심볼릭 링크 생성
※ 여기서 잠깐!
현재 설치하고 있는 라즈베리 파이 3 B+는 ARMv7 계열의 CPU를 사용하므로 armv7 이름이 들어간 배포 프로그램을 내려받는다.
그리고 라즈베리 파이에서 일반적으로 많이 사용하는 라즈비안(Raspberian)은 데비안(Debian) 계열의 리눅스이므로 디렉터리 관리는 리눅스의 파일시스템 관례( http://www.pathname.com/fhs/pub/fhs-2.3.html)를 따르는게 좋을 것 같다. 리눅스에서는 통상 사용자가 직접 소스나 실행파일을 내려받아 설치할 경우 /opt나 /usr/local 디렉터리을 이용한다.
관례에 따르면 /opt 디렉터리는 애드온 어플리케이션 소프트웨어 패키지의 인스톨 용도로 사용되며, /usr/local 디렉터리는 시스템 관리자가 필요에 의해 직접 컴파일하거나 설치하는 소프트웨어 인스톨 용도이다.
curl 명령은 원격서버(FTP, HTTP 등)에서 데이터를 전송받을 때 사용한다. 여기서는 -s: 진행 상태 표시 안함, -S: -s와 함께 사용. 실패시 에러 표시, -L: 요청 페이지가 다른 위치로 옮겨졌을 경우(HTTP 응답코드 303) 재요청, -o: remote 데이터를 파일로 저장 옵션을 사용하였다.
2. SYSTEMD 파일 설치
# cd /etc/systemd/system/ # curl -sSLo - https://raw.githubusercontent.com/prometheus/node_exporter/master/examples/systemd/node_exporter.service \ |sed -e 's|/etc/sysconfig/node_exporter|/etc/default/node_exporter|' |sed -e 's/^User.*//' > node_exporter.service # curl -sSLo - https://raw.githubusercontent.com/prometheus/node_exporter/master/examples/systemd/sysconfig.node_exporter \ |sed -e 's/^OPTIONS/#OPTIONS/;aOPTIONS=""' >/etc/default/node_exporter # cp /home/pi/node_exporter-0.16.0-rc.0.linux-armv7/node_exporter /usr/sbin/node_exporter # systemctl daemon-reload # systemctl enable node_exporter.service # systemctl start node_exporter.service
시스템 부팅시 자동 실행을 위해 데몬 서비스로 설치하는 과정이다.
3. Query 테스트
$ curl 127.0.0.1:9100/metrics
제대로 설치가 되었는지 확인하기 위해 웹서비스를 호출한다. 제대로 설치가 되었다면 라즈베리 파이 시스템의 다양한 정보(metric)가 출력될 것이다.
Prometheus 설치하기
공식사이트 : https://prometheus.io/
배포 : https://github.com/prometheus/prometheus
1. 설치하기
현재 사용 중인 라즈베리 파이 CPU 타입에 맞는 배포 파일을 내려받아 압축을 푼다. (설치 작업을 편리하게 하기위해 root 권한으로 실행할 것.)# cd /opt # curl -sSLo https://github.com/prometheus/prometheus/releases/download/v2.11.1/prometheus-2.11.1.linux-armv7.tar.gz # tar zxvf prometheus-2.11.1.linux-armv7.tar.gz # ln -s prometheus-2.11.1.linux-armv7 prometheus
2. YAML 설정 파일 편집
# vi /opt/prometheus/prometheus.yml
'scrape_configs:'섹션을 찾아서 아래와 같이 작성한다.
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'nodes'
scrape_interval: 1m
scrape_timeout: 10s
static_configs:
- targets: ['127.0.0.1:9100']
Prometheus가 node_exporter를 통해 1m 단위로 metric값을 수집하도록 설정하였다. Prometheus의 설정은 'global:' 섹션에서 지정한다.
3. 서비스 실행
# cd /opt/prometheus # nohup ./prometheus &
4. Query 테스트
$ curl http://127.0.0.1:9090/metrics
Grafana 설치하기
공식사이트 : https://grafana.com/
1. 설치하기
Grafana 역시 Prometheus처럼 배포 소프트웨어를 내려받아 설치할 수 있으나 다행히 Raspbian용 배포판이 있으므로 패키지 설치 프로그램을 이용하여 손쉽게 설치가 가능하다.
공식사이트에서 'Get Grafana' 버튼을 클릭하여 현재 사용 중인 라즈베리 파이에 맞는 배포판을 내려받는다. (ARMv7)
$ sudo apt update $ sudo apt upgrade -y $ sudo apt autoremove -y $ curl -sSLo https://dl.grafana.com/oss/release/grafana_6.2.5_armhf.deb $ sudo dpkg -i grafana_6.2.5_armhf.deb $ sudo apt-get upgrade -y $ sudo systemctl daemon-reload $ sudo systemctl enable grafana-server $ sudo systemctl start grafana-server
2. Grafana 실행
라즈베리 파이에서 웹브라우저를 띄우거나, 사용 중인 PC에서 웹브라우저를 띄워서 라즈베리 파이에 설정한 IP 주소를 포함한 URL 주소를 입력한다. 정상적으로 설치가 완료되었다면 아래와 같이 Grafana 로그인 화면이 표시된다.
[그림.4] Grafana 로그인 화면 |
디폴트 ID와 Password인 'admin'을 입력하여 로그인한다.
「Data Sources」 메뉴를 선택하여 Prometheus를 등록한다.
[그림.5] Data sources 메뉴 선택 |
「Add data sources」 버튼을 클릭하여 「Prometheus」를 선택한다.
[그림.6] Data sources 선택 |
다음과 같이 입력란에 값을 입력한다.
Name: Prometheus
URL: http://localhost:9090
Access: Server(default)
「Save & Test」 버튼을 클릭하여 Data source를 등록한다.
[그림.7] Prometheus 등록 |
「+」 > 「Import」 메뉴를 선택한다.
[그림.8] Import 메뉴 선택 |
Dashboard ID: 1860을 입력하여 미리 준비된 Dashboard를 등록한다.
[그림.9] ID: 1860 입력한 후 Import |
드디어 설치 완료! 라즈베리 파이의 모니터링 화면을 볼 수 있다. Good luck!
[그림.10] 라즈베리 파이 3 B+ 모니터링 화면 |
댓글
댓글 쓰기