본문 바로가기
서버구축 (WEB,DB)

Prometheus 시스템 및 서비스 모니터링 시스템

by 날으는물고기 2023. 10. 2.

Prometheus 시스템 및 서비스 모니터링 시스템

프로메테우스는 Cloud Native Computing Foundation(CNCF) 프로젝트로, 시스템 및 서비스 모니터링 시스템입니다. 프로메테우스는 구성된 대상으로부터 지정된 간격으로 메트릭을 수집하고 규칙 표현식을 평가하여 결과를 표시하며, 지정된 조건이 관찰되면 알림을 트리거할 수 있습니다.

 

프로메테우스를 다른 메트릭 및 모니터링 시스템과 구별하는 기능은 다음과 같습니다.

  1. 다차원 데이터 모델 (메트릭 이름 및 키/값 차원 세트에 의해 정의된 시계열 데이터)
  2. PromQL이라는 강력하고 유연한 쿼리 언어를 사용하여 이 다차원성을 활용
  3. 분산 저장에 대한 종속성이 없으며, 단일 서버 노드는 자체적으로 동작
  4. 시계열 데이터 수집을 위한 HTTP 풀 모델
  5. 배치 작업을 위한 중간 게이트웨이를 통해 시계열 데이터 푸시 지원
  6. 서비스 검색 또는 정적 구성을 통해 대상 검색
  7. 그래프 및 대시보드 지원을 위한 다양한 그래픽 및 대시보드 모드
  8. 계층적 및 수평 연합을 지원하는 기능

 

아키텍처 개요

프로메테우스의 아키텍처는 다음과 같습니다.

  1. 데이터 수집: 프로메테우스는 구성된 대상에서 메트릭을 주기적으로 수집합니다.
  2. 메트릭 저장: 수집된 메트릭은 다차원 데이터 모델을 기반으로 저장됩니다.
  3. PromQL 쿼리: PromQL 쿼리 언어를 사용하여 메트릭을 질의하고 평가합니다.
  4. 결과 표시: 쿼리 결과는 그래프 및 대시보드를 통해 시각적으로 표시됩니다.
  5. 알림: 지정된 조건이 충족되면 알림이 트리거됩니다.

 

설치

프로메테우스를 설치하는 여러 가지 방법이 있습니다. 여기에는 몇 가지 설치 방법을 소개합니다.

  1. Precompiled Binaries (미리 컴파일된 바이너리): 공식 웹사이트에서 릴리스된 버전의 미리 컴파일된 바이너리를 다운로드하여 설치할 수 있습니다. 이것은 프로메테우스를 설치하는 권장 방법입니다. 자세한 내용은 공식 문서의 Installing 장을 참조하세요.
  2. Docker Images (도커 이미지): 도커 이미지는 Quay.io 또는 Docker Hub에서 사용 가능합니다. 도커 컨테이너로 프로메테우스를 실행하려면 다음 명령어를 사용할 수 있습니다.
docker run --name prometheus -d -p 127.0.0.1:9090:9090 prom/prometheus
  • 프로메테우스는 이제 http://localhost:9090/에서 접속할 수 있습니다.
  1. Building from Source (소스 코드에서 빌드): 프로메테우스를 소스 코드에서 빌드하려면 Go, NodeJS 및 npm을 설치해야 합니다. 아래는 소스 코드에서 프로메테우스를 빌드하는 단계입니다.
    • 먼저 리포지토리를 클론합니다.
    git clone https://github.com/prometheus/prometheus.git
    cd prometheus
    • go 도구를 사용하여 프로메테우스와 promtool 바이너리를 빌드하고 GOPATH에 설치합니다.
    GO111MODULE=on go install github.com/prometheus/prometheus/cmd/...
    prometheus --config.file=your_config.yml
    • 주의: go install을 사용하여 프로메테우스를 빌드할 때, 프로메테우스는 로컬 파일 시스템 디렉터리 아래의 웹 에셋(assets)을 읽을 수 있도록 예상합니다. 이러한 디렉터리에는 React UI가 포함되어 있지 않으므로 필요한 경우 make assets 또는 make build를 사용하여 빌드해야 합니다.
    • 또는 make build를 사용하여 웹 에셋을 컴파일하고 어디서든 프로메테우스를 실행할 수 있도록 합니다.
    make build
    ./prometheus --config.file=your_config.yml
    • Makefile은 다음과 같은 여러 타겟을 제공합니다.
      • build: prometheus 및 promtool 바이너리를 빌드합니다.(웹 에셋을 빌드 및 컴파일 포함)
      • test: 테스트를 실행합니다.
      • test-short: 짧은 테스트를 실행합니다.
      • format: 소스 코드 포맷을 정리합니다.
      • vet: 공통 오류를 확인합니다.
      • assets: React UI를 빌드합니다.
  2. Service Discovery Plugins (서비스 검색 플러그인): 프로메테우스는 다양한 서비스 검색 플러그인과 함께 제공됩니다. 소스 코드에서 프로메테우스를 빌드할 때, plugins.yml 파일을 수정하여 일부 서비스 검색을 비활성화할 수 있습니다.

 

Docker 이미지 빌드

Docker 이미지를 빌드하는 방법은 다음과 같습니다.

make promu
promu crossbuild -p linux/amd64
make npm_licenses
make common-docker-amd64

 

프로메테우스를 Go 라이브러리로 사용하기

프로메테우스를 Go 라이브러리로 사용하려면 다음 단계를 따를 수 있습니다.

go get go.buf.build/protocolbuffers/go/prometheus/prometheus

 

프로메테우스 코드 베이스

프로메테우스의 Go 모듈 릴리스와 정확히 일치하지 않으므로 주의해야 합니다. 프로메테우스 v2.y.z 릴리스를 라이브러리로 사용하려면 다음과 같이 할 수 있습니다.

go get github.com/prometheus/prometheus@v0.35.0

 

React UI 개발

React 기반 UI에 대한 빌드, 실행 및 개발에 대한 자세한 정보는 React 앱의 README.md를 참조하세요.

 

더 많은 정보

더 많은 정보와 문서는 공식 프로메테우스 웹사이트에서 확인할 수 있습니다.

728x90

댓글