프로메테우스는 Cloud Native Computing Foundation(CNCF) 프로젝트로, 시스템 및 서비스 모니터링 시스템입니다. 프로메테우스는 구성된 대상으로부터 지정된 간격으로 메트릭을 수집하고 규칙 표현식을 평가하여 결과를 표시하며, 지정된 조건이 관찰되면 알림을 트리거할 수 있습니다.
프로메테우스를 다른 메트릭 및 모니터링 시스템과 구별하는 기능은 다음과 같습니다.
- 다차원 데이터 모델 (메트릭 이름 및 키/값 차원 세트에 의해 정의된 시계열 데이터)
- PromQL이라는 강력하고 유연한 쿼리 언어를 사용하여 이 다차원성을 활용
- 분산 저장에 대한 종속성이 없으며, 단일 서버 노드는 자체적으로 동작
- 시계열 데이터 수집을 위한 HTTP 풀 모델
- 배치 작업을 위한 중간 게이트웨이를 통해 시계열 데이터 푸시 지원
- 서비스 검색 또는 정적 구성을 통해 대상 검색
- 그래프 및 대시보드 지원을 위한 다양한 그래픽 및 대시보드 모드
- 계층적 및 수평 연합을 지원하는 기능
아키텍처 개요
프로메테우스의 아키텍처는 다음과 같습니다.
- 데이터 수집: 프로메테우스는 구성된 대상에서 메트릭을 주기적으로 수집합니다.
- 메트릭 저장: 수집된 메트릭은 다차원 데이터 모델을 기반으로 저장됩니다.
- PromQL 쿼리: PromQL 쿼리 언어를 사용하여 메트릭을 질의하고 평가합니다.
- 결과 표시: 쿼리 결과는 그래프 및 대시보드를 통해 시각적으로 표시됩니다.
- 알림: 지정된 조건이 충족되면 알림이 트리거됩니다.
설치
프로메테우스를 설치하는 여러 가지 방법이 있습니다. 여기에는 몇 가지 설치 방법을 소개합니다.
- Precompiled Binaries (미리 컴파일된 바이너리): 공식 웹사이트에서 릴리스된 버전의 미리 컴파일된 바이너리를 다운로드하여 설치할 수 있습니다. 이것은 프로메테우스를 설치하는 권장 방법입니다. 자세한 내용은 공식 문서의 Installing 장을 참조하세요.
- Docker Images (도커 이미지): 도커 이미지는 Quay.io 또는 Docker Hub에서 사용 가능합니다. 도커 컨테이너로 프로메테우스를 실행하려면 다음 명령어를 사용할 수 있습니다.
docker run --name prometheus -d -p 127.0.0.1:9090:9090 prom/prometheus
- 프로메테우스는 이제 http://localhost:9090/에서 접속할 수 있습니다.
- 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를 빌드합니다.
- 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
댓글