
본 포스팅에서는 EC2(Ubuntu)에 Prometheus를 설치하는 방법에 대해서 소개하겠습니다.
Prometheus의 기본적인 개념을 알고 싶을 경우에는 아래 링크를 참고해주세요.
https://velog.io/@mag000225/Prometheus-Prometheus란
wget <https://github.com/prometheus/prometheus/releases/download/v2.45.4/prometheus-2.45.4.linux-amd64.tar.gz>
tar xvzf prometheus-2.45.4.linux-amd64.tar.gz
Prometheus 전용 사용자를 생성
sudo useradd --no-create-home --shell /bin/false prometheus
Prometheus 설정 파일 및 데이터 저장을 위한 디렉토리를 생성
sudo mkdir /etc/prometheus
sudo mkdir /var/lib/prometheus
생성한 디렉토리의 소유자를 Prometheus 사용자로 설정
sudo chown -R prometheus /etc/prometheus
sudo chown -R prometheus /var/lib/prometheus
/usr/local/bin/)로 복사하여 어디서나 접근 가능하도록 하였습니다.Prometheus 실행 파일을 시스템에서 접근 가능한 위치로 복사
sudo cp prometheus-2.45.4.linux-amd64/prometheus /usr/local/bin/
sudo cp prometheus-2.45.4.linux-amd64/promtool /usr/local/bin/
sudo cp -r prometheus-2.45.4.linux-amd64/consoles /etc/prometheus
sudo cp -r prometheus-2.45.4.linux-amd64/console_libraries /etc/prometheus
/etc/prometheus/prometheus.yaml 파일을 생성하고 다음 내용을 작성
global:
# 모든 잡(job)에서 기본적으로 데이터를 수집하는 간격(스크레이프 간격)을 설정합니다.
# 여기서 설정된 15초는 Prometheus가 15초마다 메트릭을 수집한다는 의미입니다.
scrape_interval: 15s
# Prometheus가 경고 조건을 평가하는 간격을 설정합니다.
# 여기서 설정된 15초는 15초마다 경고 조건을 평가한다는 의미입니다.
evaluation_interval: 15s
scrape_configs:
# Prometheus 자체의 메트릭 데이터를 수집하는 잡 설정
- job_name: "prometheus" # 잡 이름
static_configs:
# 수집 대상(static_configs)으로 localhost의 9090 포트를 설정
# Prometheus 서버 자체의 메트릭을 수집합니다.
- targets: ["localhost:9090"]
# Node Exporter를 통해 노드 메트릭 데이터를 수집하는 잡 설정
- job_name: "node" # 잡 이름
static_configs:
# Node Exporter가 실행 중인 서버의 9100 포트를 설정
# Node Exporter를 통해 CPU, 메모리, 디스크 등의 노드 관련 메트릭을 수집합니다.
- targets: ["localhost:9100"]
/etc/systemd/system/prometheus.service 파일을 생성하고 다음 내용을 작성합니다:
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus \\
--config.file /etc/prometheus/prometheus.yaml \\
--storage.tsdb.path /var/lib/prometheus \\
--web.console.templates=/etc/prometheus/consoles \\
--web.console.libraries=/etc/prometheus/console_libraries \\
--storage.tsdb.max-block-duration=1m \\
--storage.tsdb.min-block-duration=1m \\
--web.enable-lifecycle \\
--web.enable-admin-api \\
--log.level=info
[Install]
WantedBy=multi-user.target
데몬 재로드
sudo systemctl daemon-reload
서비스 시작
sudo systemctl start prometheus

Node Exporter는 Prometheus와 함께 사용되어 호스트 시스템의 메트릭(시스템 성능 데이터)을 수집하고 Prometheus가 이를 모니터링할 수 있도록 지원합니다.
Node Exporter 파일을 다운로드하고 압축 해제
wget <https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz>
tar xvzf node_exporter-1.7.0.linux-amd64.tar.gz
/etc/systemd/system/node_exporter.service 파일을 생성하고 다음 내용을 작성
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=root
Group=root
Type=simple
SyslogIdentifier=node-exporter
WorkingDirectory=/home/ubuntu/prometheus/node_exporter-1.7.0.linux-amd64
ExecStart=/home/ubuntu/prometheus/node_exporter-1.7.0.linux-amd64/node_exporter
[Install]
WantedBy=multi-user.target
데몬 재로드
sudo systemctl daemon-reload
서비스 시작
sudo systemctl start node_exporter

http://localhost:9090/targets로 이동EC2에서 작업할 경우 보안 그룹에서 해당 포트 번호를 인바운드에 추가해야 합니다.

curl localhost:9090/metrics
