Go 用の Stackdriver Trace の設定

は、

Stackdriver Trace は、Go 用の OpenCensus パッケージを使用する Go アプリケーションで使用できます。

Stackdriver Trace での Go サポートは、複数のバックエンドで動作するトレースおよびアプリケーション メトリックのインストゥルメンテーション ライブラリ セットである OpenCensus によって提供されます。Go 用の OpenCensus に関する最新情報、追加のドキュメントとサンプルについては、GitHub ページをご覧ください。

パッケージのインストール

OpenCensus パッケージを使用するには、次のコマンドを実行して取得します。

go get -u go.opencensus.io/trace

Stackdriver Trace エクスポータの設定

収集したデータをエクスポートするには、Stackdriver Trace エクスポータを使用します。エクスポータでは、認証にアプリケーションのデフォルト認証情報を使用します。Google Cloud Platform でコードが実行されている場合は、プロジェクト ID を省略できます。

import (
	"log"
	"os"

	"contrib.go.opencensus.io/exporter/stackdriver"
	"go.opencensus.io/trace"
)

func main() {
	// Create and register a OpenCensus Stackdriver Trace exporter.
	exporter, err := stackdriver.NewExporter(stackdriver.Options{
		ProjectID: os.Getenv("GOOGLE_CLOUD_PROJECT"),
	})
	if err != nil {
		log.Fatal(err)
	}
	trace.RegisterExporter(exporter)
}

Google Cloud Platform での実行

OpenCensus クライアント ライブラリは、Stackdriver Trace API アクセス スコープが VM インスタンスで有効にされている限り、Google Cloud Platform で実行されているそのインスタンスの認証情報を手動で提供しなくても動作します。

App Engine

Google App Engine フレキシブル環境では、デフォルトで Stackdriver Trace API アクセス スコープが有効になっており、認証情報やプロジェクト ID を提供せずに OpenCensus クライアント ライブラリを使用できます。

Kubernetes Engine

Google Kubernetes Engine で、クラスタの作成時に trace.append OAuth アクセス スコープを追加します。

gcloud container clusters create example-cluster-name --scopes https://www.googleapis.com/auth/trace.append

Compute Engine

Google Compute Engine のインスタンスでは、各インスタンスの trace.append Stackdriver Trace API アクセス スコープを明示的に有効にする必要があります。Google Cloud Platform Console から新しいインスタンスを作成する場合は、[ID と API へのアクセス] の下でこれを行うことができます。Compute Engine のデフォルト サービス アカウントを使用し、[アクセス スコープ] の [すべての Cloud API に完全アクセス権を許可] を選択します。

Compute Engine のデフォルト以外のサービス アカウントを使用するには、インスタンスのサービス アカウントの作成と有効化と、以下のその他の場所での実行をご覧ください。重要なのは、使用するサービス アカウントに Cloud Trace Agent の役割があることです。

Go 用の Stackdriver Trace サンプル アプリケーション

// Sample trace_quickstart traces incoming and outgoing requests.
package main

import (
	"log"
	"net/http"
	"os"

	"contrib.go.opencensus.io/exporter/stackdriver"
	"contrib.go.opencensus.io/exporter/stackdriver/propagation"
	"go.opencensus.io/plugin/ochttp"
	"go.opencensus.io/trace"
)

func main() {
	// Create and register a OpenCensus Stackdriver Trace exporter.
	exporter, err := stackdriver.NewExporter(stackdriver.Options{
		ProjectID: os.Getenv("GOOGLE_CLOUD_PROJECT"),
	})
	if err != nil {
		log.Fatal(err)
	}
	trace.RegisterExporter(exporter)

	client := &http.Client{
		Transport: &ochttp.Transport{
			// Use Google Cloud propagation format.
			Propagation: &propagation.HTTPFormat{},
		},
	}

	handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		req, _ := http.NewRequest("GET", "https://metadata/users", nil)

		// The trace ID from the incoming request will be
		// propagated to the outgoing request.
		req = req.WithContext(r.Context())

		// The outgoing request will be traced with r's trace ID.
		if _, err := client.Do(req); err != nil {
			log.Fatal(err)
		}
	})
	http.Handle("/foo", handler)
	log.Fatal(http.ListenAndServe(":6060", &ochttp.Handler{}))
}

トレースの表示

デプロイ後、GCP Console Trace Viewer でトレースを表示できます。

Trace Viewer のページに移動

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。