[Prometheus] prometheus 시작하기 (설치, 구성, 실행)

go_go_·2024년 3월 31일
1

Monitoring

목록 보기
1/3
post-thumbnail

개요

이 글은 전체적인 프로메테우스 기초 튜터리얼로, 공식 홈페이지를 참고하였다.
프로메테우스를 어떻게 설치하고, 구성하고, 실행하는지 알아보며 프로메테우스 인스턴스를 사용하는지 간략하게 작성하였다.


목차는 다음과 같다.
1. 프로메테우스 설치
2. Configuration (prometheus.yml)
3. Prometheus 실행
4. 브라우저 사용하기


📌 Promehtues 설치


최신 버전을 위해 아래 링크를 통해 공식 홈페이지를 참고한다.
https://prometheus.io/download/

설치할 서버의 OS 확인하여 LTS 버전의 링크를 우클릭하여 복사한다.

복사한 링크를 서버에 들어가 wget으로 다운로드한다.

wget https://github.com/prometheus/prometheus/releases/download/v2.45.4/prometheus-2.45.4.linux-amd64.tar.gz

성공적으로 다운로드 받았다면, 아래와 같이 .tar 설치 파일이 보일 것이다.

압축 해제 후, 폴더로 들어가준다.

tar xvfz prometheus-2.45.4.linux-amd64.tar.gz
cd prometheus-2.45.4.linux-amd64

다운로드 직후, 폴더 안에는 다음과 같이 구성되어 있을 것이다.

이제 프로메테우스를 실행하기 전, 구성 파일을 살펴보자.


📌 Configuration (prometheus.yml)


프로메테우스는 타겟들의 HTTP 엔드포인트를 통해 메트릭 정보를 수집한다.
이 HTTP 엔드포인트를 설정하는 곳이 바로 prometheus 구성 파일인 promehteus.yml이다. (파일 이름은 다른 것으로 해도 상관 없지만, 내부 key-value는 프로메테우스 스펙에 맞추어야 한다.)

프로메테우스가 설치된 서버에도 자신의 엔드포인트를 가지므로, 자신의 정보를 수집할 수 있다.
이 포스팅에서는 localhost 즉, 자신의 서버의 정보를 가져와 볼 것이다.

다음은 프로메테우스의 구성파일인 prometheus.yml이다.
구성 파일은 자기 자신의 자원을 수집하도록 되어있다.

global:
  scrape_interval:     15s  # 디폴트값으로, 타겟의 데이터를 15초마다 수집한다.

  # 외부 시스템(외부 저장소, 알람매니저)과 통신할 때 시계열 데이터 또는 알람에 이 라벨이 붙는다.
  external_labels:
    monitor: 'codelab-monitor'

# 수집 정보 설정, 타겟의 엔드포인트를 설정한다.
# 여기서는 프로메테우스 본인 서버의 정보를 수집한다.
scrape_configs:
  # job 이름은 시계열 데이터 수집 시 `job=<job_name>`으로 라벨이 추가된다.
  - job_name: 'prometheus'

    # 맨 위의 global 설정 오버라이딩
    # 이 job은 5초마다 타겟으로부터 데이터를 수집한다.
    scrape_interval: 5s

    static_configs:
      - targets: ['localhost:9090']

configuration에 대한 전체 스펙은 공식 문서를 참고하면 된다.


📌 Prometheus 실행


구성 파일과 함께 프로메테우스 시작하기 위해 다음과 같이 입력한다.
(아래 명령어는 promehteus가 있는 파일 위치에서 입력하였다.)

./prometheus --config.file=prometheus.yml

기본적으로, 프로메테우스는 ./data 경로에 수집 데이터를 저장한다.
만약 경로를 수정하고 싶다면, 다음 --storage.tsdb.path 옵션을 사용하면 된다.

./prometheus --config.file=prometheus.yml --storage.tsdb.path=/mnt/data

프로메테우스가 시작하면, localhost:9090으로 프로메테우스 웹 페이지를 볼 수 있다. ![](https://velog.velcdn.com/images/suk13574/post/8dcbc5a0-eb6d-424f-a63b-0c7a5be141fc/image.png)

엔드포인트 확인

localhost:9090/targets 로 이동해보자. 브라우저에서 Status > Targets를 클릭해도 된다.

이 화면에서 현재 수집 중인 타겟의 엔드포인트를 확인할 수 있다.
아래는 로컬 호스트의 /metrics라는 엔드포인트로 자기 자신 서버의 정보를 수집하고 있는 것을 볼 수 있다.

직접 엔드포인트를 확인해보면 아래와 같이 많은 메트릭 정보를 볼 수 있다.
각 정보는 메트릭(key)에 대한 수집된 값(value)로 구성되어 있다.

curl localhost:9090/metrics

만약 여러 서버를 모니터링하기 위해 prometheus.yml 파일에 여러 엔드포인트를 설정하였다고 하자.
서버내 exporter들은 이렇게 key-value 형태로 되어있는 정보를 가지고 있다가, 프로메테우스가 직접 해당 서버의 엔드포인트에 http로 호출하여 정보를 가져오는 것이다.


📌 브라우저 사용하기


PromQL

localhost:9090/graph 에서 Table 탭으로 이동하여 빌트인된 표현식(=promQL)을 사용할 수 있다.

아래 표현식은 프로메테우스가 타겟의 데이터를 수집하는데 얼마나 시간이 걸렸는지 나타낸다.

prometheus_target_interval_length_seconds

브라우저에 입력하면 다음과 같이 각 최신의 데이터를 반환하며, 각 데이터는 라벨(e.g. instance="localhost:9090")을 가진 것을 볼 수 있다.

만약 99번째 백분위 지연 시간만 필터링하고 싶은 경우, 아래와 같이 중괄호로 조건을 추가할 수 있다.

prometheus_target_interval_length_seconds{quantile="0.99"}

또한 사용할 수 있는 promQL은 우측 지구모양 아이콘을 누르면 볼 수 있다.

promQL에 대한 자세한 설명은 공식 문서를 참고하면 된다.

그래프 인터페이스

http://localhost:9090/graph의 Graph라는 탭으로 이동하여 그래프를 볼 수 있다.

PromQL을 입력한 뒤, Execute를 하면 그래프로 표현되는 것을 볼 수 있다.
아래 표현식은 수집 시 몇 초가 걸리는지 나타내는 표현식이다.

scrape_duration_seconds

아래 사진과 같이 표현식의 결과 값이 그래프로 보이는 것을 알 수 있다.

이와같이 수집된 지표 데이터로 PromQL로 가공하여 시각화된 그래프를 볼 수 있다.


마무리하며

이번 글에서 프로메테우스를 설치하고, 구성하고, 실행을 해보았다.
이번에 설치한 프로메테우스는 지표를 수집하기 위한 에이전트이고, 서버의 cpu, memory, filesystem 사용량 등 모니터링하고자 하는 데이터를 수집하기 위해서 exporter를 설치해주어야한다.
다음 글에서는 어떤 exporter가 있는지 알아보겠다.


참고
https://prometheus.io/docs/prometheus/latest/getting_started/

profile
개발도 하고 싶은 클라우드 엔지니어

0개의 댓글