토리맘의 한글라이즈 프로젝트 logo 토리맘의 한글라이즈 프로젝트

프로메테우스 공식 레퍼런스를 한글로 번역한 문서입니다.

전체 목차는 여기에 있습니다.


프로메테우스는 Go 애플리케이션을 계측하는 데 사용할 수 있는 공식 Go 클라이언트 라이브러리를 제공한다. 이 가이드에선 HTTP를 통해 프로메테우스 메트릭을 노출하는 간단한 Go 애플리케이션을 만들어본다.

참고: 종합 API 문서는 프로메테우스의 다양한 Go 라이브러리들을 설명하고 있는 GoDoc을 참고하면 된다.

목차


Installation

이 가이드에서 필요한 prometheus, promauto, promhttp 라이브러리는 go get을 이용해 설치할 수 있다:

go get github.com/prometheus/client_golang/prometheus
go get github.com/prometheus/client_golang/prometheus/promauto
go get github.com/prometheus/client_golang/prometheus/promhttp

How Go exposition works

Go 애플리케이션에서 프로메테우스 메트릭을 노출하려면 /metrics HTTP 엔드포인트를 제공해야 한다. 이땐 prometheus/promhttp 라이브러리의 HTTP Handler를 핸들러 함수로 활용하면 된다.

아래 예시는 http://localhost:2112/metrics를 통해 Go 애플리케이션의 디폴트 메트릭을 노출하는 가장 간단한 애플리케이션이다:

package main

import (
        "net/http"

        "github.com/prometheus/client_golang/prometheus/promhttp"
)

func main() {
        http.Handle("/metrics", promhttp.Handler())
        http.ListenAndServe(":2112", nil)
}

이 애플리케이션을 시작해보자:

go run main.go

메트릭에 접근하려면:

curl http://localhost:2112/metrics

Adding your own metrics

위에서 보여준 애플리케이션은 디폴트 Go 메트릭만 노출하고 있다. 애플리케이션 전용으로 사용할 자체 커스텀 메트릭도 등록할 수 있다. 이 예제 애플리케이션은 지금까지 이벤트를 처리한 횟수를 계산한 myapp_processed_ops_total 카운터를 노출한다. 이 카운터는 2초마다 1씩 증가한다.

package main

import (
        "net/http"
        "time"

        "github.com/prometheus/client_golang/prometheus"
        "github.com/prometheus/client_golang/prometheus/promauto"
        "github.com/prometheus/client_golang/prometheus/promhttp"
)

func recordMetrics() {
        go func() {
                for {
                        opsProcessed.Inc()
                        time.Sleep(2 * time.Second)
                }
        }()
}

var (
        opsProcessed = promauto.NewCounter(prometheus.CounterOpts{
                Name: "myapp_processed_ops_total",
                Help: "The total number of processed events",
        })
)

func main() {
        recordMetrics()

        http.Handle("/metrics", promhttp.Handler())
        http.ListenAndServe(":2112", nil)
}

이 애플리케이션을 시작해보자:

go run main.go

메트릭에 접근하려면:

curl http://localhost:2112/metrics

메트릭 출력에선 myapp_processed_ops_total 카운터의 help 텍스트와 type 정보, 현재 값을 조회할 수 있다:

# HELP myapp_processed_ops_total The total number of processed events
# TYPE myapp_processed_ops_total counter
myapp_processed_ops_total 5

프로메테우스에 설정을 추가하고, 로컬에서 인스턴스를 실행해서 이 애플리케이션의 메트릭을 스크랩해보자. 다음은 prometheus.yml 설정 예시다:

scrape_configs:
- job_name: myapp
  scrape_interval: 10s
  static_configs:
  - targets:
    - localhost:2112

Other Go client features

이 가이드에선 프로메테우스 Go 클라이언트 라이브러리에서 이용할 수 있는 기능 중 극히 일부만 다뤘다. 게이지, 히스토그램 등 다른 메트릭 타입들도 노출할 수 있으며, 비전역 레지스트리, 프로메테우스 PushGateway메트릭을 푸시하는 함수, 프로메테우스와 Graphite를 연결bridge해주는 함수 등, 다른 기능들도 다양하게 지원하고 있다.


Summary

이 가이드에선 프로메테우스에 메트릭을 노출하는 두 가지 Go 샘플 애플리케이션을 만들어봤다. 첫 번째 애플리케이션은 디폴트 Go 메트릭들만 노출했고, 두 번째 애플리케이션은 커스텀 프로메테우스 카운터도 함께 노출했다. 이 애플리케이션들에서 메트릭을 스크랩할 수 있도록 프로메테우스 인스턴스도 함께 설정해봤다.


Next :
Monitoring Linux host metrics with the Node Exporter
노드 익스포터 연동 가이드

전체 목차는 여기에 있습니다.

<< >>

TOP