본문 바로가기
데브옵스

Node Exporter + Prometheus + grafana로 모니터링

by __Minnie_ 2024. 10. 30.

기존 spring 서버가 동작하고 있는 ec2에 node exporter + prometheus + grafana로 모니터링 기능을 만들어보려고 합니다.

 

docker의 경우, 자원을 많이 소모하기 때문에 본 글에서는 docker를 사용하지 않고 설치할 예정입니다.

# ec2 사양
AMI: Amazon Linux release 2023.5.20240624 (Amazon Linux)
인스턴스 유형: t2.small

# ec2에서 현재 동작하고 있는 서비스
spring 서버
nginx
mysql
redis

 

1. node exporter설치

wget https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz

다운로드 링크에서 본인의 서버에 맞는 버전으로 다운로드 합니다.

 

 

tar -zxvf node_exporter-1.8.2.linux-amd64.tar.gz

다운로드 받은 파일을 압축 해제합니다.

 

cd node_exporter-1.8.2.linux-amd64
./node_exporter

압축한 파일로 들어가서 프로그램을 실행시킵니다.

 

그리고 도메인:9100  으로 접속하면 아래 화면처럼 뜹니다. 

그리고 Metrics를 클릭하면 아래처럼 데이터를 확인할 수 있습니다.

 

 

이 프로그램을 서비스로 등록하여 서버가 재시작되어도 자동으로 동작하도록 하겠습니다.

sudo vi /etc/systemd/system/node-exporter.service
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/home/ec2-user/node_exporter-1.8.2.linux-amd64/node_exporter # 경로는 본인이 다운로드 한 파일의 경로로 변경해주어야 합니다. 

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable node-exporter.service
sudo systemctl restart node-exporter.service
sudo systemctl status node-exporter.service

위 과정을 순서대로 수행하면 위 사진처럼 서비스가 정상적으로 돌고 있는 것을 확인할 수 있습니다.

 

2. 프로메테우스 설치

wget https://github.com/prometheus/prometheus/releases/download/v2.53.2/prometheus-2.53.2.linux-amd64.tar.gz

다운로드 링크에서 본인에게 맞는 버전으로 다운로드

 

tar -zxvf prometheus-2.53.2.linux-amd64.tar.gz

압축해제

 

cd prometheus-2.53.2.linux-amd64
sudo vi prometheus.yml

 

scrape_configs -> static_configs -> targets에 "127.0.0.1:9100"을 추가하여 설정 파일이 아래처럼 구성되도록 합니다. 127.0.0.1:9100은 node exporter의 엔드포인트입니다.

 

./prometheus

프로메테우스를 실행하고, 도메인:9090으로 접속하면 아래와 같은 화면을 확인할 수 있습니다.

위 화면에서 상단의 status -> targets를 들어가면 우리가 추가한 엔드포인트로 정상적으로 데이터를 수집하고 있는 것을 확인할 수 있습니다.

 

프로메테우스도 node exporter와 마찬가지로 서비스 등록을 해줍니다.

sudo vi /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/home/ec2-user/prometheus-2.53.2.linux-amd64/prometheus --config.file=/home/ec2-user/prometheus-2.53.2.linux-amd64/prometheus.yml  # 경로는 본인이 설정한 환경에 맞게 수정

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable prometheus.service
sudo systemctl restart prometheus.service
sudo systemctl status prometheus.service

 

3. 그라파나 설치

wget https://dl.grafana.com/enterprise/release/grafana-enterprise-11.3.0.linux-amd64.tar.gz
tar -zxvf grafana-enterprise-11.3.0.linux-amd64.tar.gz

링크에서 본인의 서버에 맞는 버전으로 다운로드 받습니다. 

 

cd grafana-v11.3.0
cd bin
./grafana-server

 

프로그램을 실행한 후 도메인:3000으로 접속하면 아래처럼 그라파나 로그인 화면이 뜹니다.

 

 

이번에도 그라파나를 서비스로 등록합니다.

sudo vi /etc/systemd/system/grafana.service
[Unit]
Description=Grafana
Wants=network-online.target
After=network-online.target

[Service]
WorkingDirectory=/home/ec2-user/grafana-v11.3.0
ExecStart=/home/ec2-user/grafana-v11.3.0/bin/grafana-server

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable grafana.service
sudo systemctl restart grafana.service
sudo systemctl status grafana.service

 

 

4. 그라파나 설정

이제 그라파나에서 수집한 데이터를 보여줄 수 있도록 설정을 해보겠습니다. 

위 화면에서 로그인을 진행합니다. 초기 아이디 / 비밀번호는 admin / admin입니다. 

 

로그인을 하면 비밀번호 변경창이 뜹니다. 비밀번호를 변경해줍니다.

 

비밀번호 변경 후 로그인을 하면 아래 화면을 확인할 수 있습니다.

 

사이드바에서 connections -> data sources -> add data source를 선택하면 아래와 같은 화면이 뜹니다. 아래 화면에서 프로메테우스를 선택합니다. 

 

그러면 아래처럼 프로메테우스 db 설정창이 나옵니다. connection에서 프로메테우스의 경로를 입력합니다. 나머지 설정은 default에서 변경하지 않습니다. 

 

그리고 아래로 스크롤을 내려보면 아래처럼 save&test 버튼이 있고, 해당 버튼을 클릭했을 때 아래처럼 성공했다는 안내 메세지가 뜨면 됩니다.

 

 

설정을 완료한 후 다시 사이드바에서 connections -> data sources를 들어가면 아래처럼 prometheus가 등록된 것을 확인할 수 있습니다.

 

이제 그라파나에 대시보드를 만들어봅시다!!!

node exporter의 경우, 많이 사용하는 기능이라 이미 만들어진 대시보드가 있습니다. 그래서 만들어진 대시보드를 import를 해주기만 하면 됩니다. node exporter 대시보드에 들어가보면 아래와 같은 화면을 확인할 수 있습니다. 빨간색으로 표시해둔 곳을 보면 dashboard id를 복사할 수 있습니다. (Json으로 해도 됩니다. 더 편한 방식으로 하면 될 것 같습니다)

 

 

그리고, 다시 그라파나로 돌아와서 사이드바에서 dashboards -> create dashboard를 들어가면 아래와 같은 화면을 확인할 수 있습니다. 여기서 import dashboard를 클릭합니다. 

 

아래 표시한 부분에 복사한 dashboard id를 입력하고 load합니다.

 

아래 화면에서 prometheus부분에 우리가 등록해둔 프로메테우스를 선택해주고 import를 선택합니다. 

 

import를 하면 화면이 완성됩니다~!!