본문 바로가기
Hello World/DevOps

Golang application 에 prometheus 및 custom metric 적용하기

by Run DaramG 2022. 8. 30.

golang application 에 promethues 연동하고 custom metric 을 적용하는 방법을 정리해보았습니다.

 

프로메테우스 library를 적용하고 /metrics 에 핸들러를 expose(노출)한후

어플리케이션을 시작하고 localhost:8080/metrics 로 이동하면 기본 내장 메트릭을 볼 수 있습니다.

 

이러한 metric은 너무 low-level metric 이라 유용하게 쓸 수 없습니다.

어플리케이션 내부의 상태를 확인할 수 있는 custom metric을 적용하는 방법을 공유합니다.

 

1. Prometheus 클라이언트 라이브러리 설치

가장 먼저, Golang 애플리케이션에서 Prometheus 메트릭을 적용하기 위해 Prometheus 클라이언트 라이브러리를 설치해야 합니다. 대표적인 Prometheus 클라이언트 라이브러리로는 "prometheus/client_golang" 패키지가 있습니다. 이 패키지는 Prometheus 메트릭 수집기를 생성하고, HTTP 핸들러를 등록하여 메트릭을 노출하는 데 도움이 됩니다.

go get github.com/prometheus/client_golang/prometheus

2. 메트릭 정의

애플리케이션에서 수집하려는 메트릭을 정의해야 합니다. 예를 들어, "requests_total"이라는 샘플 카운터 메트릭을 생성하고 수집하려면 다음과 같이 할 수 있습니다:

import (
    "github.com/prometheus/client_golang/prometheus"
)

var (
    requestsTotal = prometheus.NewCounter(
        prometheus.CounterOpts{
            Name: "requests_total",
            Help: "Total number of requests",
        },
    )
)

func init() {
    prometheus.MustRegister(requestsTotal)
}

3. 메트릭 업데이트

애플리케이션 코드에서 메트릭을 업데이트하는 곳에 해당 메트릭을 호출하여 값을 증가시키는 코드를 추가해야 합니다. 예를 들어, HTTP 핸들러에서 요청이 발생할 때마다 "requests_total" 메트릭을 증가시킬 수 있습니다.

func handler(w http.ResponseWriter, r *http.Request) {
    // Handle the request

    requestsTotal.Inc()
}

댓글