このドキュメントでは、バッチジョブの Cloud Logging でログを有効にして生成し、表示する方法について説明します。
ログを使用して、ジョブの分析に役立つ情報を取得できます。たとえば、失敗したジョブのデバッグに役立ちます。
特に、ログはジョブの実行が開始された後、およびジョブでロギングが有効になっている場合にのみ生成されます。ログなしでジョブを分析する必要がある場合は、代わりにステータス イベントを表示します。
準備
- Batch を以前に使用したことがない場合は、Batch を使ってみるを確認し、プロジェクトとユーザーの前提条件を完了して Batch を有効にします。
-
ログを使用してジョブを分析するために必要な権限を取得するには、管理者に次の IAM のロールを付与するように依頼してください。
-
ジョブを作成するには:
-
プロジェクトのバッチジョブ編集者(
roles/batch.jobsEditor
) -
ジョブのサービス アカウントのサービス アカウント ユーザー(
roles/iam.serviceAccountUser
)。デフォルトでは Compute Engine のデフォルトのサービス アカウントです。
-
プロジェクトのバッチジョブ編集者(
-
ログを表示するには:
プロジェクトに対するログビューア(
roles/logging.viewer
)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。
-
ジョブを作成するには:
ジョブのロギングを有効にする
ジョブのログを生成できるようにするには、ジョブを作成するときに Cloud Logging のログを有効にします。
- Google Cloud コンソールを使用してジョブを作成する場合は、Cloud Logging のログが常に有効になります。
gcloud CLI または Batch API を使用してジョブを作成する場合は、デフォルトで Cloud Logging のログが無効になります。Cloud Logging からのログを有効にするには、ジョブの作成時に
logsPolicy
フィールドに次の構成を含めます。{ ... "logsPolicy": { "destination": "CLOUD_LOGGING" } ... }
ジョブのログを書き込んで生成する
ジョブで Cloud Logging からのログが有効になっている場合、Cloud Logging はジョブ用に書き込まれたログを自動的に生成します。具体的には、Batch ジョブには次のログタイプがあります。
エージェント ログ(
batch_agent_logs
): Batch サービス エージェントのアクティビティのログ。バッチは、ロギングが有効になっているすべてのジョブのエージェント ログを自動的に書き込みます。
タスクログ(
batch_task_logs
): 標準出力(stdout
)ストリームまたは標準エラー(stderr
)ストリームに書き込むようにジョブの runnable を構成したデータのログ。必要に応じて、ロギングを有効にしたジョブごとにタスクログを書き込むことができます。
ジョブのログを表示する
ジョブのログは、Google Cloud コンソール、gcloud CLI、Logging API、Go、Java、Python、C++ を使用して表示できます。
コンソール
Google Cloud コンソールを使用してジョブのログを表示する手順は次のとおりです。
Google Cloud コンソールで、[ジョブリスト] ページに移動します。
[ジョブ名] 列で、ジョブの名前をクリックします。ジョブの詳細ページが開きます。
[ログ] タブをクリックします。 バッチには、ジョブに関連付けられているすべてのログが表示されます。
省略可: ログをフィルタするには、次のいずれかを行います。
filter を入力します。
Filterフィールドに[重大度] リストで、重大度を選択します。
バッチ フィルタ パラメータを使用して、ログ エクスプローラのクエリを作成するにします。
ログ エクスプローラで表示をクリックして、
gcloud
gcloud CLI を使用してログを表示するには、gcloud logging read
コマンドを使用します。
gcloud logging read "QUERY"
ここで、QUERY
は、バッチフィルタ パラメータを含むバッチログのクエリです。
API
Logging API を使用してログを表示するには、entries.list
メソッドを使用します。
POST https://logging.googleapis.com/v2/entries:list
{
"resourceNames": [
"projects/PROJECT_ID"
],
"filter": "QUERY"
"orderBy": "timestamp desc"
}
以下を置き換えます。
PROJECT_ID
: プロジェクトのプロジェクト ID。QUERY
: バッチ フィルタ パラメータを含むバッチログのクエリ。
Go
Go
詳細については、Batch Go API のリファレンス ドキュメントをご覧ください。
Batch への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
Java
詳細については、Batch Java API のリファレンス ドキュメントをご覧ください。
Batch への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Python
詳細については、Batch Python API のリファレンス ドキュメントをご覧ください。
Batch への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
C++
C++
詳細については、Batch C++ API のリファレンス ドキュメントをご覧ください。
Batch への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
バッチログをフィルタする
Batch ログをフィルタするには、次のフィルタ パラメータ 1 つ以上と、0 個以上のブール演算子(AND
、OR
、NOT
)を含むクエリを作成します。
特定のジョブのログをフィルタするには、ジョブの一意の ID(UID)を指定します。
labels.job_uid=JOB_UID
ここで、
JOB_UID
はジョブの UID です。ジョブの UID を取得するには、ジョブの詳細を表示します。特定のタイプの Batch ログをフィルタするには、ログタイプを指定します。
logName=projects/PROJECT_ID/logs/BATCH_LOG_TYPE
以下を置き換えます。
PROJECT_ID
: ログを表示するプロジェクトのプロジェクト ID。BATCH_LOG_TYPE
: 表示する Batch ログのタイプ(タスクログの場合はbatch_task_logs
、エージェント ログの場合はbatch_agent_logs
)。
カスタム ステータス イベントを含むログをフィルタするには、ログで
jsonPayload.batch/custom/event
フィールドを定義する必要があることを指定します。jsonPayload.batch"/"custom"/"event!=NULL_VALUE
1 つ以上の特定の重大度のログをフィルタするには、次の比較を指定します。
severityCOMPARISON_OPERATORSEVERITY_ENUM
次のように置き換えます。
COMPARISON_OPERATOR
: 比較演算子(例:>=
)。SEVERITY_ENUM
: ログの重大度を表すLogSeverity
列挙型(例:ERROR
)。
その他のフィルタ オプションについては、Cloud Logging のクエリ言語のドキュメントをご覧ください。
次のステップ
- トラブルシューティングの詳細を確認する。
- Cloud Logging の詳細を確認する。
- タスクログの書き込み方法を学習する。
- ジョブ情報をエクスポートする方法を確認する。
- ジョブを削除する方法を学習する。