Cloud Logging の Go 向け設定

Cloud Logging には標準のライブラリ互換ロギング パッケージが用意されています。Go 用 Cloud Logging ライブラリによって、Cloud Logging を使用する際により高レベルのレイヤが提供されます。

Go 用 Cloud Logging ライブラリを Compute Engine VM インスタンスで使用するために、Cloud Logging エージェントをインストールする必要はありません。

始める前に

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. Cloud Console のプロジェクト セレクタページで、Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタのページに移動

  3. Google Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を学習する

  4. Cloud Logging API を有効にします。

    API を有効にする

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

go get -u cloud.google.com/go/logging

Go ロガーの使用


// Sample stdlogging writes log.Logger logs to the Stackdriver Logging.
package main

import (
	"context"
	"log"

	"cloud.google.com/go/logging"
)

func main() {
	ctx := context.Background()

	// Sets your Google Cloud Platform project ID.
	projectID := "YOUR_PROJECT_ID"

	// Creates a client.
	client, err := logging.NewClient(ctx, projectID)
	if err != nil {
		log.Fatalf("Failed to create client: %v", err)
	}
	defer client.Close()

	// Sets the name of the log to write to.
	logName := "my-log"

	logger := client.Logger(logName).StandardLogger(logging.Info)

	// Logs "hello world", log entry is visible at
	// Stackdriver Logs.
	logger.Println("hello world")
}

インストールの詳細については、Go 用 Cloud Logging ライブラリのドキュメントをご覧ください。公開バグトラッカーを使用して問題を報告することもできます。

Cloud クライアント ライブラリを直接使用する

Cloud Logging の Go 用 Cloud クライアント ライブラリを直接使用する方法については、Cloud Logging クライアント ライブラリをご覧ください。

Google Cloud での実行

Go 用 Cloud Logging ライブラリを使用するには、Google Cloud で IAM ログ書き込み役割が必要です。ほとんどの Google Cloud 環境では、このロールがデフォルトで付与されています。

App Engine

App Engine では、デフォルトでログ書き込みロールが付与されます。

Go 用 Cloud Logging ライブラリは、明示的に認証情報を提示しなくても使用できます。

App Engine のアプリケーションでは、Cloud Logging が自動的に有効になります。特別な設定は必要ありません。

Google Kubernetes Engine

Google Kubernetes Engine では、クラスタの作成時に logging.write アクセス スコープを追加する必要があります。

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

Compute Engine

Compute Engine VM インスタンスを使用する場合は、各インスタンスに cloud-platform アクセス スコープを追加します。Google Cloud Console から新しいインスタンスを作成する場合は、[インスタンスの作成] パネルの [ID と API へのアクセス] のセクションで作成します。Compute Engine のデフォルト サービス アカウントまたは別のサービス アカウントを使用し、[ID と API へのアクセス] セクションの [すべての Cloud API に完全アクセス権を許可] を選択します。どのサービス アカウントを選択する場合でも、Cloud Console の [IAM と管理] でログ書き込みロールが付与されていることを確認してください。

ローカルやその他の場所での実行

自分のワークステーション、データセンターのコンピュータ、別のクラウド プロバイダの VM インスタンスでライブラリを実行するなど、Google Cloud の外部で Go 用 Cloud Logging ライブラリを使用するには、Google Cloud プロジェクト ID と適切なサービス アカウント認証情報を Go 用 Cloud Logging ライブラリに直接提供する必要があります。

サービス アカウントの認証情報は手動で作成して取得できます。[ロール] フィールドを指定する場合は、ログ書き込み役割を使用します。Identity and Access Management のロールの詳細については、アクセス制御ガイドをご覧ください。

ログの表示

デプロイ後、Cloud Console のログビューアでログを表示できます。

ログビューアに移動

ログビューアでは 1 つ以上のリソースを指定する必要がありますが、どのリソースを選択すべきかを判断するのが難しい場合もあります。その場合は、次のヒントを参考にしてください。

  • アプリケーションを App Engine にデプロイしている場合や、App Engine 固有のライブラリを使用している場合は、リソースを GAE アプリケーションに設定します。

  • アプリケーションを Compute Engine にデプロイしている場合は、リソースを GCE VM インスタンスに設定します。

  • アプリケーションを Google Kubernetes Engine にデプロイしている場合は、クラスタのロギング構成に応じてログエントリのリソースタイプが異なります。レガシー Google Cloud のオペレーション スイートと Google Cloud のオペレーション スイート Kubernetes Monitoring ソリューションの詳細、およびこれらのオプションがリソースタイプに与える影響については、Google Cloud のオペレーション スイート Kubernetes Monitoring への移行をご覧ください。

  • アプリケーションが Cloud Logging API を直接使用している場合、リソースは API と構成に依存します。たとえば、アプリケーションでリソースを指定することも、デフォルトのリソースを使用することもできます。

  • ログビューアにログが表示されない場合にすべてのログエントリを表示するには、高度なクエリモードに切り替えて空のクエリを使用します。

    1. 高度なクエリモードに切り替えるには、ログビューアの上部にある [メニュー](▾)をクリックし、[高度なフィルタに変換] を選択します。
    2. フィルタ ボックスに表示されているコンテンツをクリアします。
    3. [フィルタを送信] をクリックします。

    個々のエントリを調べてリソースを特定します。

詳細については、ログの表示高度なログクエリをご覧ください。