您可以在 Cloud Logging 中查看、搜尋、篩選及封存 Dataproc 工作和叢集記錄檔。
請參閱 Google Cloud Observability 定價瞭解相關費用。
如需瞭解記錄保留期限,請參閱「記錄檔保留期限」一文。
如要停用所有記錄檔或從 Logging 排除記錄檔,請參閱「記錄檔排除」。
如要將記錄檔從 Cloud Logging 傳送至 Cloud Storage、BigQuery 或 Pub/Sub,請參閱「轉送和儲存空間簡介」。
元件記錄層級
建立叢集時,可以使用元件專屬的 log4j 叢集屬性 (例如 hadoop-log4j) 來設定 Spark、Hadoop、Flink 和其他 Dataproc 元件的記錄層級。基於叢集的元件記錄層級適用於服務 Daemon (例如 YARN ResourceManager) 以及在叢集上執行的工作。
如果元件 (例如 Presto 元件) 不支援 log4j 屬性,請編寫初始化動作以編輯元件的 log4j.properties 或 log4j2.properties 檔案。
工作專屬的元件記錄層級:您也可以在提交工作時設定元件記錄層級。這些記錄層級會套用至工作,且優先於建立叢集時設定的記錄層級。詳情請參閱「叢集與工作屬性」。
Spark 和 Hive 元件版本記錄層級:
Spark 3.3.X 和 Hive 3.X 元件使用 log4j2 屬性,而這些元件的舊版則使用 log4j 屬性 (請參閱 Apache Log4j2)。設定叢集的 Spark 記錄層級時,請使用 spark-log4j: 前置字元。
範例:Dataproc 映像檔版本 2.0 搭配 Spark 3.1,用於設定
log4j.logger.org.apache.spark:gcloud dataproc clusters create ... \ --properties spark-log4j:log4j.logger.org.apache.spark=DEBUG
範例:Dataproc 映像檔版本 2.1 搭配 Spark 3.3,用於設定
logger.sparkRoot.level:gcloud dataproc clusters create ...\ --properties spark-log4j:logger.sparkRoot.level=debug
工作驅動程式記錄層級
Dataproc 會使用工作驅動程式的預設 INFO 記錄層級。如要變更一或多個套件的這項設定,請使用 gcloud dataproc jobs submit
--driver-log-levels 旗標。
範例:
提交讀取 Cloud Storage 檔案的 Spark 工作時,請設定 DEBUG 記錄層級。
gcloud dataproc jobs submit spark ...\ --driver-log-levels org.apache.spark=DEBUG,com.google.cloud.hadoop.gcsio=DEBUG
範例:
將 root 記錄器層級設為 WARN,並將 com.example 記錄器層級設為 INFO。
gcloud dataproc jobs submit hadoop ...\ --driver-log-levels root=WARN,com.example=INFO
Spark 執行器記錄層級
如要設定 Spark 執行器記錄層級,請按照下列步驟操作:
準備 log4j 設定檔,然後上傳至 Cloud Storage
。提交工作時,請參照設定檔。
範例:
gcloud dataproc jobs submit spark ...\ --file gs://my-bucket/path/spark-log4j.properties \ --properties spark.executor.extraJavaOptions=-Dlog4j.configuration=file:spark-log4j.properties
Spark 會將 Cloud Storage 屬性檔案下載到工作在本機的工作目錄,並在 -Dlog4j.configuration 中使用 file:<name> 格式指定路徑。
Logging 中的 Dataproc 工作記錄檔
如要瞭解如何在 Logging 中啟用 Dataproc 工作驅動程式記錄檔,請參閱「Dataproc 工作輸出內容和記錄檔」。
在 Logging 中存取工作記錄檔
要存取 Dataproc 工作記錄檔,可以使用 Logs Explorer、gcloud logging 指令或 Logging API。
控制台
Dataproc 工作驅動程式和 YARN 容器記錄檔列於「Cloud Dataproc Job」(Cloud Dataproc 工作) 資源下方。
範例:執行 Logs Explorer 查詢後的工作驅動程式記錄檔,選取下列項目:
- 資源:
Cloud Dataproc Job - 記錄檔名稱:
dataproc.job.driver
範例:執行 Logs Explorer 查詢後的 YARN 容器記錄檔,選取下列項目:
- 資源:
Cloud Dataproc Job - 記錄檔名稱:
dataproc.job.yarn.container
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。
| 記錄檔類型 | 記錄檔名稱 | 說明 | 附註 |
|---|---|---|---|
| 主要執行個體 Daemon 記錄 | hadoop-hdfs hadoop-hdfs-namenode hadoop-hdfs-secondarynamenode hadoop-hdfs-zkfc hadoop-yarn-resourcemanager hadoop-yarn-timelineserver hive-metastore hive-server2 hadoop-mapred-historyserver zookeeper |
日誌節點 HDFS namenode HDFS secondary namenode Zookeeper 容錯移轉控制器 YARN Resource Manager YARN 時間軸伺服器 Hive metastore Hive server2 Mapreduce 工作歷史記錄伺服器 Zookeeper 伺服器 |
|
| Worker Daemon 記錄檔 |
hadoop-hdfs-datanode hadoop-yarn-nodemanager |
HDFS datanode YARN nodemanager |
|
| 系統記錄檔 |
autoscaler google.dataproc.agent google.dataproc.startup |
Dataproc 自動配置器記錄檔 Dataproc 代理程式記錄檔 Dataproc 開機指令碼記錄檔 + 初始化動作記錄檔 |
|
| 擴充 (額外) 記錄檔 |
knox gateway-audit zeppelin ranger-usersync jupyter_notebook jupyter_kernel_gateway spark-history-server |
/var/log/ 子目錄中所有符合下列條件的記錄:knox (含 gateway-audit.log) zeppelin ranger-usersync jupyter_notebook jupyter_kernel_gateway spark-history-server |
設定
dataproc:dataproc.logging.extended.enabled=false 屬性會停用叢集上的擴充記錄檔收集功能
|
| VM syslog |
syslog |
叢集主要節點和 worker 節點中的 syslog |
設定
dataproc:dataproc.logging.syslog.enabled=false 屬性會停用叢集上的 VM syslog 收集功能 |
在 Cloud Logging 中存取叢集記錄
要存取 Dataproc 叢集記錄,可以使用 Logs Explorer、gcloud logging 指令或 Logging API。
控制台
在 Logs Explorer 中查看叢集日誌時,請選取下列查詢條件:
- 資源:
Cloud Dataproc Cluster - 記錄檔名稱: log name
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.ResourceTrackerService filename: hadoop-yarn-resourcemanager-cluster-name-m.log ... logName: projects/project-id/logs/hadoop-yarn-resourcemanager --- jsonPayload: class: org.apache.hadoop.yarn.server.resourcemanager.ResourceTrackerService filename: hadoop-yarn-resourcemanager-component-gateway-cluster-m.log ... logName: projects/project-id/logs/hadoop-yarn-resourcemanager
REST API
您可以使用 Logging REST API 列出記錄項目 (請參閱 entries.list)。
權限
如要將記錄檔寫入 Cloud Logging,Dataproc VM 服務帳戶必須具備 logging.logWriter 身分與存取權管理角色。預設的 Dataproc 服務帳戶已具備此角色。如果您使用自訂服務帳戶,請務必將該角色指派給服務帳戶。
保護記錄檔
根據預設,Logging 中的記錄檔會經過靜態資料加密處理。您可以啟用客戶自行管理的加密金鑰 (CMEK) 來加密記錄檔。有關 CMEK 支援的詳細資訊請參閱「管理記錄檔路由器資料的保護金鑰」和「管理記錄儲存空間資料的保護金鑰」。