このドキュメントでは、Batch ジョブの 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 では、ロギングが有効になっているすべてのジョブのエージェント ログが自動的に書き込まれます。
タスクログ(
batch_task_logs
): 標準出力(stdout
)ストリームに書き込むようにジョブの実行可能ファイルを構成したデータのログまたは標準エラー(stderr
)ストリームにダウンロードされます。必要に応じて、ロギングが有効になっているジョブごとにタスクログを書き込むことができます。
ジョブのログを表示する
ジョブのログは、Google Cloud コンソール、gcloud CLI、Logging API、Go、Java、Python、C++ を使用して表示できます。
コンソール
Google Cloud コンソールを使用してジョブのログを表示する手順は次のとおりです。
Google Cloud コンソールで、[ジョブリスト] ページに移動します。
[ジョブ名] 列で、ジョブの名前をクリックします。ジョブの詳細ページが開きます。
[ログ] タブをクリックします。 Batch では、ジョブに関連するすべてのログが表示されます。
省略可: ログをフィルタリングするには、次のいずれかを行います。
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 ログをフィルタする
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
enum。ログの重大度を記述します(例:ERROR
)。
他のフィルタ オプションについては、Cloud Logging のクエリ言語のドキュメントをご覧ください。
次のステップ
- トラブルシューティングの詳細を確認する。
- Cloud Logging の詳細を確認する。
- タスクログを書き込む方法を学習する。
- ジョブの削除とエクスポートの方法を確認する。