Prometheus には公式の Go クライアントライブラリ があり、Go アプリケーションの計装に使用できます。このガイドでは、HTTP 経由で Prometheus メトリクスを公開する簡単な Go アプリケーションを作成します。
このガイドに必要な `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
Go アプリケーションで Prometheus メトリクスを公開するには、`/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
上記のアプリケーションは、デフォルトの 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 myapp_processed_ops_total The total number of processed events
# TYPE myapp_processed_ops_total counter
myapp_processed_ops_total 5
ローカルで実行されている Prometheus インスタンスを 設定 して、アプリケーションからメトリクスをスクレイプできます。`prometheus.yml` 設定の例を次に示します。
scrape_configs:
- job_name: myapp
scrape_interval: 10s
static_configs:
- targets:
- localhost:2112
このガイドでは、Prometheus Go クライアントライブラリで使用可能な機能のほんの一部について説明しました。ゲージ や ヒストグラム などの他のメトリクスタイプ、非グローバルレジストリ、Prometheus PushGateways への メトリクスのプッシュ 関数、Prometheus と Graphite のブリッジなど、さまざまな機能を使用できます。
このガイドでは、Prometheus にメトリクスを公開する 2 つのサンプル Go アプリケーション(デフォルトの Go メトリクスのみを公開するものと、カスタム Prometheus カウンターも公開するもの)を作成し、それらのアプリケーションからメトリクスをスクレイプするように Prometheus インスタンスを設定しました。
このドキュメントは オープンソース です。問題を報告したり、プルリクエストを送信して改善にご協力ください。