[모니터링] 프로메테우스와 Golang을 활용한 Metric 출력 실습

728x90
반응형

Prometheus와 Golang을 활용한 Metric 출력 실습

[모니터링] 메트릭(Metric) 유형과 관리 방안

 

[모니터링] 메트릭(Metric) 유형과 관리 방안

Metric 및 관측 가능성시스템의 안정성과 성능을 유지하기 위해, 우리는 시스템을 모니터링하고 관측할 수 있는 다양한 메트릭을 설정하고 관리해야 합니다.이러한 메트릭은 시스템의 상태를 정

ynslee627.tistory.com

지난 글에서 메트릭의 유형과 관리 방안에 대해서 알아보았는데요, 이어서 이번 시간에는 프로메테우스와 Go 언어를 활용하여 메트릭을 출력해보는 실습을 진행하였습니다.
실습은 AWS EC2 인스턴스 환경에서 애플리케이션을 실행하며, Go 언어를 활용해 Prometheus 포맷으로 데이터를 출력하는 과정을 학습합니다.

  • Prometheus: 오픈 소스 모니터링 및 경보 시스템으로, 주로 분산 환경에서 시스템의 상태를 추적하고 성능을 모니터링하기 위해 사용된다.
  • Golang: Google에서 개발한 프로그래밍 언어로, Prometheus와 같은 시스템 소프트웨어 개발에서 자주 사용된다.

1) EC2 인스턴스에 접속

SSH 클라이언트로 접속할 때는 보안그룹의 인바운드 규칙에 22번 포트가 개방되어 있어야 연결할 수 있다.

2) git 설치

sudo apt update
sudo apt install git

 

3) 데이터 가져오기

git clone https://github.com/itggangpae/prometheus.git

 

4) golang 설치

다운로드

wget https://golang.org/dl/go1.23.4.linux-amd64.tar.gz

압축 풀기

sudo tar -C /usr/local -xzf go1.23.4.linux-amd64.tar.gz

환경 변수 설정

nano .profile
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH

수정한 내용 적용

source ./.profile

 

5) main.go 파일 실행

모듈 생성

go mod init 이름

go mod init tidy
ubuntu@ip-<ip>:~/prometheus$ go mod init tidy
go: creating new go.mod: module tidy
go: to add module requirements and sums:
	go mod tidy
go mod tidy

빌드

go build

 

애플리케이션은 8080포트로 메트릭을 내보낸다.

실행

go run ./main.go

프롬프트 계속 실행중

리눅스에서 확인 방법

위의 실행 명령어를 실행 후, 다른 터미널을 새로 열어서 EC2 인스턴스에 연결한 후, 다음 명령어로 메트릭이 잘 나오는지 확인한다.

curl -H 'Accept: application/openmetrics-text' localhost:8080/metrics

브라우저에서 확인

EC2 인스턴스에서 8080 포트를 개방한 후 publicIP:8080 으로 접속한다.

728x90
반응형