Cloud Logging

Dataproc ジョブとクラスタのログは、Cloud Logging で表示、検索、フィルタ、アーカイブを行えます。

Logging の Dataproc ジョブのログ

Dataproc ジョブを実行すると、ジョブドライバ出力が Cloud Console にストリーミングされ、コマンド ターミナル ウィンドウに表示され(コマンドラインから送信されたジョブ用)、Cloud Storage に保存されます(ジョブドライバ出力へのアクセスをご覧ください)。このセクションでは、Dataproc で Logging のジョブドライバのログの保存を有効にする方法について説明します。

Cloud Logging でジョブドライバのログを有効にする

Logging でジョブドライバのログを有効にするには、クラスタの作成時に次のクラスタ プロパティを設定します。

dataproc:dataproc.logging.stackdriver.job.driver.enable=true

次のクラスタ プロパティも必須です。クラスタの作成時にデフォルトで設定されます。

dataproc:dataproc.logging.stackdriver.enable=true
dataproc:jobs.file-backed-output.enable=true

Cloud Logging で YARN コンテナログを有効にする

YARN コンテナログのジョブのリソース手配を有効にするには、クラスタの作成時に次のクラスタ プロパティを設定します。

dataproc:dataproc.logging.stackdriver.job.yarn.container.enable=true

次のプロパティも必須です。クラスタの作成時にデフォルトで設定されます。

dataproc:dataproc.logging.stackdriver.enable=true

Cloud Logging でジョブログにアクセスする

Logging にアクセスするには、Logging コンソールgcloud logging コマンド、または Logging API を使用できます。

コンソール

Cloud Dataproc ジョブリソースの下に、Dataproc ジョブドライバと YARN コンテナのログが一覧表示されます。

ジョブドライバのログの例:

YARN コンテナログの例:

gcloud

ジョブのログエントリは、gcloud logging read コマンドを使用して読み取ることが可能です。次のコマンドでは、クラスタラベルを使用して、返されたログエントリをフィルタします。

gcloud logging read \
    resource.type=cloud_dataproc_job \
    resource.labels.region=cluster-region \
    resource.labels.job_id=my-job-id

出力例(一部):

jsonPayload:
  class: org.apache.hadoop.hdfs.StateChange
  filename: hadoop-hdfs-namenode-test-dataproc-resize-cluster-20190410-38an-m-0.log
  ,,,
logName: projects/project-id/logs/hadoop-hdfs-namenode
---
jsonPayload:
  class: SecurityLogger.org.apache.hadoop.security.authorize.ServiceAuthorizationManager
  filename: cluster-name-dataproc-resize-cluster-20190410-38an-m-0.log
  ...
logName: projects/google.com:hadoop-cloud-dev/logs/hadoop-hdfs-namenode

REST API

Logging REST API を使用してログエントリを一覧表示できます(entries.list をご覧ください)。

Logging の Dataproc クラスタログ

Dataproc では、次の Apache Hadoop、Spark、Hive、Zookeeper などの Dataproc クラスタログを Cloud Logging にエクスポートします。

ログタイプ ログ名 説明
マスター デーモンのログ hadoop-hdfs
hadoop-hdfs-namenode
hadoop-hdfs-secondary namenode
hadoop-hdfs-zkfc
hive-metastore
hive-server2
mapred-mapred-historyserver
yarn-yarn-resourcemanager
yarn-yarn-timelineserver
zookeeper
ジャーナル ノード
HDFS namenode
HDFS セカンダリ namenode
Zookeeper フェイルオーバー コントローラ
Hive メタストア
Hive サーバー 2
Mapreduce ジョブヒストリ サーバー
YARN Resource Manager
YARN Timeline Server
Zookeeper サーバー
ワーカー デーモンのログ hadoop-hdfs-datanode
yarn-yarn-nodemanager
HDFS datanode
YARN nodemanager
システムログ autoscaler
google.dataproc.agent
google.dataproc.startup
Dataproc オートスケーラー ログ
Dataproc エージェント ログ
Dataproc 起動スクリプトログ + 初期化アクションログ

Cloud Logging でのクラスタログへのアクセス

Logging にアクセスするには、Logging コンソールgcloud logging コマンド、または Logging API を使用できます。

コンソール

Dataproc クラスタログは、Cloud Dataproc Cluster リソースの下に一覧表示されます。プルダウン リストからログタイプを選択します。

gcloud

クラスタのログエントリは、gcloud logging read コマンドを使用して読み取ることが可能です。次のコマンドでは、クラスタラベルを使用して、返されたログエントリをフィルタします。

gcloud logging read <<'EOF'
    resource.type=cloud_dataproc_cluster
    resource.labels.region=cluster-region
    resource.labels.cluster_name=cluster-name
    resource.labels.cluster_uuid=cluster-uuid
EOF

出力例(一部):

jsonPayload:
  class: org.apache.hadoop.yarn.server.resourcemanager.RMAuditLogger
  filename: yarn-yarn-resourcemanager-cluster-name-m.log
  ...
logName: projects/project-id/logs/yarn-yarn-resourcemanager
---
jsonPayload:
  class: org.apache.hadoop.yarn.server.resourcemanager.RMAuditLogger
  filename: yarn-yarn-resourcemanager-component-gateway-cluster-m.log
  ...
logName: projects/project-name/logs/yarn-yarn-resourcemanager

REST API

Logging REST API を使用してログエントリを一覧表示できます(entries.list をご覧ください)。

権限

Logging にログを書き込むには、Dataproc VM サービスアカウントに logging.logWriter ロール IAM ロールが必要です。デフォルトの Dataproc サービス アカウントは、このロールを持っています。カスタム サービス アカウントを使用する場合は、このロールをサービス アカウントに割り当てる必要があります。

次のステップ