AWS에 모니터링 인스턴스 띄우기

말하는 감자·2025년 7월 7일

내일배움캠프

목록 보기
73/73

인스턴스 생성

다른 가용영역에 놓으려고 했는데

모니터링 도구인만큼 15초에 한번씩 로그 삮다 긁어옴 → 비용발생

다른 AZ면 통신에만 돈이든다고함..

목표는:

  • EC2: t3.small, Amazon Linux 2 or Ubuntu
  • Docker + Docker Compose 설치
  • Prometheus + Grafana 구성
  • 포트: Prometheus 9292, Grafana 3000
  • Prometheus 데이터는 /prometheus에 마운트







윈도우에서 pem키 설정하기…

WSL을 통해서 우분투 설치해둔게 있다.

윈도우영역에서는 chmod가 안먹혀서 복사해와서 이것저것 해준다.

#홈 디렉토리로 복사
cp /mnt/윈도우에있는 경로(드라이브 이름부터 치면댐)/cs25-monitoring.pem ~/

# 권한 재설정
chmod 400 ~/cs25-monitoring.pem

# 접속 시도
ssh -i ~/cs25-monitoring.pem ec2-user@퍼블릭ip




현재 사용자(ubuntu)를 docker 그룹에 추가

sudo usermod -aG docker $USER

exec sudo su -l $USER
  • Docker 설치
  • Docker Compose 설치
  • ~/monitoring 디렉토리 만들고
  • prometheus.yml + docker-compose.yml 설정
  • docker-compose up -d 실행
  • 포트 열려 있는지 확인 (9292 / 3000)




한꺼번에 하는 스크립트




nano setup-monitoring.sh 이걸로 열어주고

#!/bin/bash

# 1. 시스템 업데이트
sudo yum update -y 2>/dev/null || sudo apt update -y

# 2. Docker 설치
if ! command -v docker &> /dev/null; then
  echo "[+] Installing Docker..."
  sudo yum install -y docker 2>/dev/null || sudo apt install -y docker.io
  sudo systemctl start docker
  sudo systemctl enable docker
  sudo usermod -aG docker $USER
fi

# 3. Docker Compose 설치
if ! command -v docker-compose &> /dev/null; then
  echo "[+] Installing Docker Compose..."
  sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" \
  -o /usr/local/bin/docker-compose
  sudo chmod +x /usr/local/bin/docker-compose
fi

# 4. 디렉토리 및 설정 파일 생성
mkdir -p ~/monitoring/prometheus_data
cd ~/monitoring

# 4-1. Prometheus 설정 파일
cat <<EOF > prometheus.yml
global:
  scrape_interval: 30s

scrape_configs:
  - job_name: 'self'
    static_configs:
      - targets: ['localhost:9292']
EOF

# 4-2. docker-compose 설정
cat <<EOF > docker-compose.yml
version: '3'

services:
  prometheus:
    image: prom/prometheus
    container_name: prometheus
    ports:
      - "9292:9090"
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
      - prometheus_data:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
      - '--web.listen-address=:9090'
      - '--storage.tsdb.retention.time=7d'

  grafana:
    image: grafana/grafana
    container_name: grafana
    ports:
      - "3000:3000"
    volumes:
      - grafana_data:/var/lib/grafana

volumes:
  prometheus_data:
  grafana_data:
EOF

# 5. 컨테이너 실행
docker-compose up -d




붙여넣기 후 컨+o ⇒ 엔터 ⇒ 컨+x




그다 ㅁ실행

chmod +x setup-monitoring.sh
./setup-monitoring.sh




컨테이너 실행

cd ~/monitoring
docker-compose up -d

docker ps 갈겨보면

잘 떠있다.







모니터링 대상에 설정

1. 대상 인스턴스에 node_exporter 설치

wget https://github.com/prometheus/node_exporter/releases/download/v1.8.1/node_exporter-1.8.1.linux-amd64.tar.gz
tar -xvf node_exporter-*.tar.gz
cd node_exporter-1.8.1.linux-amd64
./node_exporter &

./node_exporter & 를 해주면 백그라운드로 계속 돌아간다.




2. 모니터링 인스턴스의 prometheus.yml 파일 변경

이거하고 docker restart prometheus 해주ㅑ야함

그럼 http://인스턴스ip:9292/target 갓을때 타깃들 상태가 보일것이다

배치쪽은 ec2가 작은데 젠킨스 올려놔서그런가 터질거같아서 일단 보류..

그라파나에 프로메테우스 설정해주는건 로컬이랑 똑같은방식이다

대시보드 아이디는 “1860”














슬랙으로 알림보내기

[Prometheus] + [Alertmanager] → [Slack or Discord Webhook]

이런형식으로 보내김




Alertmanager 설치 (도커 기반)

docker run -d \
  --name alertmanager \
  -p 9093:9093 \
  -v /home/ubuntu/monitoring/alertmanager:/etc/alertmanager \
  prom/alertmanager




docker-compose ㅠㅏ일수정

services:
  prometheus:
    ...
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
      - ./rules.yml:/etc/prometheus/rules.yml  # ← 이거 확인!




/monitoring/rules.yml 추가

groups:
  - name: instance-alert
    rules:
      - alert: HighCPUUsage
        expr: (100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[2m])) * 100)) > 80
        for: 1m
        labels:
          severity: warning
        annotations:
          summary: "High CPU usage on {{ $labels.instance }}"
          description: "CPU usage is above 80% (current value: {{ $value }}%)"




Prometheus.yml 추가

rule_files:
  - "rules.yml"

붙여쥬김




도커 재부팅

docker-compose down
docker-compose up -d

http://ip주소:설정한프로메테우스포트/alerts 가면 이제 알림 목록이 나온다.

profile
대충 데굴데굴 굴러가는 개발?자

2개의 댓글

comment-user-thumbnail
2025년 7월 11일

수료까지 고생하셨습니다!
5조 너무 잘만들어서 영감 많이 받았어요

1개의 답글