IT/서버

Prometheus, Grafana, Node Exporter 서버 모니터링 툴 적용

1am_wish 2024. 6. 15. 16:55
728x90
반응형

Tools

  • Prometheus: v2.45.3
  • Grafana: v10.3.0
  • Node Exporter: v1.7.0

 

Prometheus, Node Exporter, Grafana 설치 작업

1. 패키지 업데이트

sudo apt update​
 

2. 디렉터리 생성

sudo mkdir /etc/prometheus sudo mkdir /opt/prometheus
 

3. Prometheus 설치

공식 홈페이지에서 최신 버전 확인하여 다운로드

https://prometheus.io/download/

 

Download | Prometheus

An open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach.

prometheus.io

 

wget https://github.com/prometheus/prometheus/releases/download/v2.45.3/prometheus-2.45.3.linux-amd64.tar.gz
 
압축 해제
tar xvfz prometheus*
 
패키지 구성 파일 복사
cd prometheus-2.45.3.linux-amd64
sudo cp prometheus /usr/local/bin/
sudo cp promtool /usr/local/bin/

sudo cp -r prometheus.yml /etc/prometheus
sudo cp -r consoles /etc/prometheus
sudo cp -r console_libraries /etc/prometheus

 

4. Prometheus 서비스 데몬 작성

sudo vi /etc/systemd/system/prometheus.service

# prometheus.service 파일 내에 아래 내용 작성
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target

[Service]
User=root
Group=root
Type=simple
ExecStart=/usr/local/bin/prometheus \
    --config.file /etc/prometheus/prometheus.yml \
    --storage.tsdb.path /opt/prometheus/ \
    --web.console.templates=/etc/prometheus/consoles \
    --web.console.libraries=/etc/prometheus/console_libraries

[Install]
WantedBy=multi-user.target

5. Prometheus config 설정

 
sudo vi /etc/prometheus/prometheus.yml

# prometheus.yml 파일 내에 아래 내용 작성
# my global config
global:
  scrape_interval: 15s # 기본 수집 주기
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: node
    scrape_interval: 5s

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["localhost:9100"] # node-exporter 주소
 

6. Prometheus 서비스 데몬 등록 및 실행

sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus
sudo systemctl status prometheus

 

7. Node Exporter 설치

공식 홈페이지에서 최신 버전 확인하여 다운로드

https://github.com/prometheus/node_exporter/releases/

 

Releases · prometheus/node_exporter

Exporter for machine metrics. Contribute to prometheus/node_exporter development by creating an account on GitHub.

github.com

wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar -xzvf node_exporter-1.7.0.linux-amd64.tar.gz

# 폴더명 변경 로그아웃
sudo cp node_exporter-1.7.0.linux-amd64/node_exporter /usr/local/bin/
 

8. Node Exporter 서비스 데몬 작성

sudo vi /etc/systemd/system/node_exporter.service

# node_exporter.service 파일 내에 아래 내용 작성
[Unit]
Description=Prometheus Node Exporter
Documentation=https://prometheus.io/docs/guides/node-exporter/
Wants=network-online.target
After=network-online.target

[Service]
User=root
Group=root
Restart=on-failure
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target
 

9. Node Exporter 서비스 데몬 등록 및 실행

sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter

sudo systemctl status node_exporter
 

10. Grafana 설치

공식 홈페이지에서 최신 버전 확인하여 다운로드

Download Grafana | Grafana Labs

sudo apt-get install -y adduser libfontconfig1 musl
wget https://dl.grafana.com/oss/release/grafana_10.3.0_amd64.deb
sudo dpkg -i grafana_10.3.0_amd64.deb
 

11. Grafana 포트 변경

기본 포트 3000. 포트 룰에 맞추어 9000으로 변경

sudo vi /etc/grafana/grafana.ini

# 포트 변경 내용 추가 
http_port = 9000
 
 

12. Grafana config 설정

sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl enable grafana-server

sudo systemctl status grafana-server​

13. 모든 서비스 재시작

sudo systemctl restart prometheus
sudo systemctl restart node_exporter
sudo systemctl restart grafana-server

14. Grafana 접속

브라우저에서 {서버IP}:9000으로 접속

 

Grafana 대시보드 셋팅 작업

1. 데이터 소스 연결

  1. Grafana Home > Menu > Connections > Data sources > + Add new data source
  2. Prometheus 선택
  3. Connection에 Prometheus URL 입력 (예: http://localhost:9090)
  4. Save & Test 하여 성공 확인

2. 대시보드 템플릿 선택

  1. https://grafana.com/grafana/dashboards/ 접속
  2. 목적에 따라 원하는 대시보드 템플릿 선택하여 JSON 다운로드
  3. 서버 모니터링 목적일 경우, Node Exporter Full 템플릿 선택

3. 대시보드 셋팅

  1. Grafana Home > Menu > Dashboards > New dashboard
  2. 2. 대시보드 템플릿 선택에서 다운받은 대시보드 템플릿 사용을 위해 Import a dashboard 선택
  3. Upload dashboard JSON file에 다운받은 JSON 파일 드롭
  4. 데이터 소스 연결에서 추가한 Prometheus 데이터 소스 선택
  5. Import

4. 연결된 대시보드 확인

 

AWS 보안 그룹 설정 작업

1. 실행 포트 적용

  • 포트 현황
    • Prometheus: 9090
    • Grafana: 9000
    • Node Exporter: 9100

2. 서버 모니터링

  • 보안 그룹 생성
  • 9000, 9090, 9100 포트 인바운드 규칙 적용

참고 레퍼런스

728x90
반응형