Information Security Study

프로메테우스와 그라파나로 모니터링하기 본문

네트워크 캠퍼스/2차 프로젝트

프로메테우스와 그라파나로 모니터링하기

gayeon_ 2024. 7. 25. 16:52

프로메테우스와 그라파나로 모니터링하기

<2차 프로젝트에서 적용할 내용>

그라파나는 새 퍼블릭 인스턴스에 설치 (가용영역별로 하나)

프로메테우스는 앱별로 설치

 

 

Prometheus

  • 클라우드 및 온프레미스 환경에서 대규모 분산 시스템의 상태 및 성능을 모니터링하기 위한 오픈소스 시스템이다.
  • Prometheus는 다양한 데이터 모델을 사용하여 지표 데이터를 수집하고 저장하며 강력한 쿼리 언어를 사용하여 저장된 데이터를 분석하고 대시보드를 생성할 수 있다.

 

Prometheus의 장점

1) 아키텍처가 유연하고 확장 가능하다.

 

2) 강력한 쿼리 언어를 사용한다.

 

3) 다양한 모니터링 시나리오에 적합하다.

 

4) 오픈소스 소프트웨어로 제공된다.

 

5) 다양한 플러그인과 통합을 지원한다.

 

6) 높은 신뢰성을 보장한다.

 

 

push/pull 방식의 차이

모니터링 시스템에서 데이터를 수집할 때 push 또는 pull 방식을 사용할 수 있다.

 

1) pull 방식

  • 프로메테우스 등 대부분의 모니터링 시스템에서 사용하는 방법이다.
  • 수집 대상 시스템에서 메트릭 데이터를 추출한다.
  • 프로메테우스 서버가 주기적으로 해당 시스템에 메트릭을 요청한다. (프로메테우스 서버가 메트릭을 가져온다.)
  • 수집 대상 시스템에서 수집되는 메트릭 데이터의 시기를 정확히 알 수 있다.
  • 메트릭 수집에 실패한 경우 이유를 파악할 수 있다.

 

2) push 방식

  • 수집 대상 시스템에서 메트릭 데이터를 추출한 후 pushgateway와 같은 중간 서버에 전송한다.
  • 수집 대상 시스템에서 프로메테우스 서버로 직접 메트릭 데이터를 전송할 수 있어 부하를 줄일 수 있다.
  • pushgateway를 사용하면 일시적인 메트릭 데이터 손실을 방지할 수 있다.

 

 

우분투에 프로메테우스 설치하기

 

프로메테우스 공식 홈페이지 설치 가이드를 따라 진행했다.

# 패키지 업데이트
$ sudo apt update

# Prometheus 시스템 그룹 생성
$ sudo groupadd --system prometheus

# Prometheus 사용자를 추가하고 생성된 그룹을 할당
$ sudo useradd -s /sbin/nologin --system -g prometheus prometheus

# 디렉토리 생성
$ sudo mkdir /etc/prometheus

# Prometheus 다운로드
wget https://github.com/prometheus/prometheus/releases/download/v2.43.0/prometheus-2.43.0.linux-amd64.tar.gz

# 압축 파일 풀기
tar xvf prometheus*.tar.gz

# 압축 푼 디렉토리로 이동
cd prometheus*/

# 바이너리 파일을 로컬 폴더로 이동하여 디렉토리 변경
sudo mv prometheus promtool /usr/local/bin/

# 프로메테우스 버전 확인
prometheus --version

# 프로메테우스 구성 파일 로컬로 이동
sudo mv prometheus.yml /etc/prometheus/prometheus.yml

# 콘솔과 콘솔 라이브러리를 /etc/prometheus로 이동
sudo mv consoles/ console_libraries/ /etc/prometheus/

# 홈 디렉토리로 이동
cd $HOME

 

위 절차를 따른 뒤

 

 

 

설치되었다면 버전을 확인할 수 있다.

 

 

sudo nano /etc/prometheus/prometheus.yml

 

프로메테우스 구성 파일은 위와 같은 경로에 위치해있다.

 

 

sudo nano /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/docs/introduction/overview/
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.yml \
--storage.tsdb.path /var/lib/prometheus/ \
--web.console.templates=/etc/prometheus/consoles \
--web.console.libraries=/etc/prometheus/console_libraries \
--web.listen-address=0.0.0.0:9090 \

[Install]
WantedBy=multi-user.target

 

위 내용으로 프로메테우스 시스템 서비스를 만든다.

 

 

sudo chown -R prometheus:prometheus /var/lib/prometheus/

 

그리고 프로메테우스 서비스가 구동될 때 디렉토리에 있는 파일을 읽어오기 위해 디렉터리의 소유권을 프로메테우스 사용자 및 그룹으로 변경해야 한다.

 

 

 

방화벽도 열어주고 프로메테우스를 활성화해준다.

 

 

 

상태를 확인했을 때 active면 구동중인 것이다.

 

 

 

물론 프로메테우스가 구동되려면 보안 규칙에서 9090 포트를 추가해야 한다.

 


그라파나 설치하기

 

그라파나

  • 데이터 소스에서 수집한 정보를 시각적으로 표시하는 대시보드, 시각화 도구이다.
  • 프로메테우스, MySQL, InfluxDB 등과 같은 데이터베이스와 함께 사용할 수 있다.
  • 대시보드로 감시, 분석, 디버깅 작업을 유용하게 수행할 수 있다.

 

우분투에 그라파나 설치하기

# Grafana 패키지 저장소 추가
$ sudo apt-get install -y apt-transport-https gnupg2 curl

$ curl https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
# 패키지 업데이트
sudo apt-get update

# Grafana 설치
sudo apt-get install -y grafana

# Grafana 시작
$ sudo systemctl start grafana-server

# 상태 확인
$ sudo systemctl status grafana-server

 

active로 뜨면 정상적으로 구동되고 있는 것이다.

 

 

Prometheus와 Grafana 연동하기

 

Prometheus Grafana Stack

  • 프로메테우스와 그라파나로 구성되는 모니터링 및 경고 시스템이다.

 

 

 

그라파나 접속을 위한 인스턴스를 생성한다.

브라우저에 접속해야 하기 때문에 플로팅 ip를 부여한다.

이때 그라파나 전용으로 보안 규칙도 추가한다. (3000, 22)

 

 

 

그라파나 플로팅ip:3000으로 접속할 수 있다.

그리고 홈 > connections > data sources

로 들어간다.

 

 

 

프로메테우스를 선택한다.

 

 

 

그리고 프로메테우스가 설치된 인스턴스에 접속해서 설정 파일을 수정한다.

 

 

 

static_configs에 프로메테우스가 설치된 인스턴스의 ip:9090을 입력한다.

 

 

 

저장한 뒤 프로메테우스를 재시작한다.

 

 

 

다시 그라파나로 돌아와서 프로메테우스가 설치된 인스턴스 url을 입력한다.

http://ip:포트번호/

 

 

 

그리고 아래에 save & test로 데이터 소스가 정상적으로 동작하는지 확인할 수 있다.

 

 

 

이제 대시보드를 구성해볼 것이다.

 

 

 

add visualization을 누른다.

 

 

 

먼저 데이터소스를 아까 생성한 프로메테우스로 선택하고

메트릭, 라벨 필터를 설정한다. (메트릭은 prometheus_http_requests_total을 선택했다.)

그리고나서 run queries를 누른 뒤에

 

 

 

우상단에 apply를 누르면

 

 


http requests total에 대해 모니터링하는 패널이 생성된다.

 

 

 

프로메테우스의 설정 파일에서

 

 

 

global 속성의 scrape_intervl을 15s로 설정하면 프로메테우스가 해당 targets에 대해 15초마다 메트릭을 수집하게 된다.

 

 

 

우상단에 refresh 버튼으로도 그래프가 변경되는 모습을 확인할 수 있다.

 

 

Grafana 제공 대시보드 만들기

Grafana dashboards | Grafana Labs

 

Grafana dashboards | Grafana Labs

No results found. Please clear one or more filters.

grafana.com

 

위 링크에서 그라파나가 제공하는 대시보드를 확인할 수 있다.

 

 

 

해당 대시보드를 골라서

 

 

 

ID를 카피한다.

 

 

 

다시 대시보드창으로 돌아와서 new -> import 를 누른다.

 

 

 

아까 복사했던 대시보드 ID를 입력한 뒤 load 하고

 

 

 

프로메테우스를 선택해 연동한 뒤 import를 누르면

 

 

 

간단하게 대시보드가 생성된다.