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. 데이터 소스 연결
- Grafana Home > Menu > Connections > Data sources > + Add new data source
- Prometheus 선택
- Connection에 Prometheus URL 입력 (예: http://localhost:9090)
- Save & Test 하여 성공 확인
2. 대시보드 템플릿 선택
- https://grafana.com/grafana/dashboards/ 접속
- 목적에 따라 원하는 대시보드 템플릿 선택하여 JSON 다운로드
- 서버 모니터링 목적일 경우, Node Exporter Full 템플릿 선택
3. 대시보드 셋팅
- Grafana Home > Menu > Dashboards > New dashboard
- 2. 대시보드 템플릿 선택에서 다운받은 대시보드 템플릿 사용을 위해 Import a dashboard 선택
- Upload dashboard JSON file에 다운받은 JSON 파일 드롭
- 데이터 소스 연결에서 추가한 Prometheus 데이터 소스 선택
- Import
4. 연결된 대시보드 확인
AWS 보안 그룹 설정 작업
1. 실행 포트 적용
- 포트 현황
- Prometheus: 9090
- Grafana: 9000
- Node Exporter: 9100
2. 서버 모니터링
- 보안 그룹 생성
- 9000, 9090, 9100 포트 인바운드 규칙 적용
참고 레퍼런스
728x90
반응형