Cloud Monitoring

Cloud Monitoring 可帮助您了解云应用的性能、正常运行时间和整体运行状况。Google Cloud 的运维套件从 Dataproc 集群收集并提取指标、事件和元数据(包括每个集群的 HDFS、YARN、作业和操作指标),以通过信息中心和图表生成数据分析(请参阅 Cloud Monitoring Dataproc 指标)。

使用 Cloud Monitoring 集群指标监控 Dataproc 集群的性能表现和运行状况。

Dataproc 集群指标

Dataproc 集群上会自动启用 Dataproc 集群资源指标。使用 Monitoring 查看这些指标。

查看集群指标

您可以通过 Google Cloud Console 或使用 Monitoring API 检查 Monitoring。

控制台

  1. 创建集群后,请转到 Google Cloud Console 中的 Monitoring 以查看集群监控数据。

    出现 Monitoring 控制台后,您可以在项目中的虚拟机上安装 Monitoring 代理,作为额外的设置步骤。您无需在 Dataproc 集群中的虚拟机上安装代理,因为创建 Dataproc 集群时系统会为您执行此步骤。

  2. 选择 Metrics Explorer,从“查找资源类型和指标”下拉列表中,选择“Cloud Dataproc 集群”资源(或在框中键入“cloud_dataproc_cluster”)。
  3. 再次点击输入框,然后从下拉列表中选择一个指标。 在下一个屏幕截图中,已选择“YARN memory size”。将鼠标悬停在指标名称上可显示指标的相关信息。

    您可以选择过滤条件,按指标标签分组,执行聚合,以及选择图表查看选项(请参阅 Monitoring 文档)。

API

您可以使用 Monitoring timeSeries.list API 来捕获和列出由 filter 表达式定义的指标。使用 API 页面上的试用此 API 模板发送 API 请求并显示响应。

示例:下面大致介绍了模板化请求以及针对以下 Monitoring timeSeries.list 参数返回的 JSON 响应:

  • name: projects/example-project-id
  • filter: metric.type="dataproc.googleapis.com/cluster/hdfs/storage_capacity"
  • interval.endTime: 2018-02-27T11:54:00.000-08:00
  • interval.startTime: 2018-02-20T00:00:00.000-08:00

OSS 指标

然后,Dataproc 将 Dataproc 集群 OSS 组件指标集成到 Monitoring 中。Dataproc OSS 指标采用以下格式收集:

custom.googleapis.com/OSS_COMPONENT/METRIC

OSS 指标示例:

custom.googleapis.com/spark/driver/DAGScheduler/job/allJobs
custom.googleapis.com/hiveserver2/memory/MaxNonHeapMemory

可用的 OSS 指标

您可以启用 Dataproc 来收集下表中列出的 OSS 指标。如果您在启用关联的指标来源时默认收集指标,则默认收集列将以“y”标记。如果您替换指标来源的默认指标集合,则可以为指标来源启用任何指标以及所有 Spark 指标(请参阅启用 OSS 指标收集)。

Hadoop 指标

HDFS 指标

指标 Metrics Explorer 名称 默认收集
hdfs:NameNode:FSNamesystem:CapacityTotalGB dfs/FSNamesystem/CapacityTotalGB y
hdfs:NameNode:FSNamesystem:CapacityUsedGB dfs/FSNamesystem/CapacityUsedGB y
hdfs:NameNode:FSNamesystem:CapacityRemainingGB dfs/FSNamesystem/CapacityRemainingGB y
hdfs:NameNode:FSNamesystem:FilesTotal dfs/FSNamesystem/FilesTotal y
hdfs:NameNode:FSNamesystem:MissingBlocks dfs/FSNamesystem/MissingBlocks n
hdfs:NameNode:FSNamesystem:ExpiredHeartbeats dfs/FSNamesystem/ExpiredHeartbeats n
hdfs:NameNode:FSNamesystem:TransactionsSinceLastCheckpoint dfs/FSNamesystem/TransactionsSinceLastCheckpoint n
hdfs:NameNode:FSNamesystem:TransactionsSinceLastLogRoll dfs/FSNamesystem/TransactionsSinceLastLogRoll n
hdfs:NameNode:FSNamesystem:LastWriterTransactionId dfs/FSNamesystem/LastWriterTransactionId n
hdfs:NameNode:FSNamesystem:CapacityTotal dfs/FSNamesystem/CapacityTotal n
hdfs:NameNode:FSNamesystem:CapacityUsed dfs/FSNamesystem/CapacityUsed n
hdfs:NameNode:FSNamesystem:CapacityRemaining dfs/FSNamesystem/CapacityRemaining 接口中的方法 n
hdfs:NameNode:FSNamesystem:CapacityUsedNonDFS dfs/FSNamesystem/CapacityUsedNonDFS n
hdfs:NameNode:FSNamesystem:TotalLoad dfs/FSNamesystem/TotalLoad n
hdfs:NameNode:FSNamesystem:SnapshottableDirectories dfs/FSNamesystem/SnapshottableDirectories n
hdfs:NameNode:FSNamesystem:Snapshots dfs/FSNamesystem/Snapshots n
hdfs:NameNode:FSNamesystem:BlocksTotal dfs/FSNamesystem/BlocksTotal n
hdfs:NameNode:FSNamesystem:PendingReplicationBlocks dfs/FSNamesystem/PendingReplicationBlocks n
hdfs:NameNode:FSNamesystem:UnderReplicatedBlocks dfs/FSNamesystem/UnderReplicatedBlocks n
hdfs:NameNode:FSNamesystem:CorruptBlocks dfs/FSNamesystem/CorruptBlocks n
hdfs:NameNode:FSNamesystem:ScheduledReplicationBlocks dfs/FSNamesystem/ScheduledReplicationBlocks n
hdfs:NameNode:FSNamesystem:PendingDeletionBlocks dfs/FSNamesystem/PendingDeletionBlocks n
hdfs:NameNode:FSNamesystem:ExeaseBlocks dfs/FSNamesystem/ExextraBlocks n
hdfs:NameNode:FSNamesystem:PostponedMisreplicatedBlocks dfs/FSNamesystem/PostponedMisreplicatedBlocks n
hdfs:NameNode:FSNamesystem:PendingDataNodeMessageCourt dfs/FSNamesystem/PendingDataNodeMessageCourt n
hdfs:NameNode:FSNamesystem:MillisSinceLastLoadedEdits dfs/FSNamesystem/MillisSinceLastLoadedEdits n
hdfs:NameNode:FSNamesystem:BlockCapacity dfs/FSNamesystem/BlockCapacity n
hdfs:NameNode:FSNamesystem:StaleDataNodes dfs/FSNamesystem/StaleDataNodes n
hdfs:NameNode:FSNamesystem:TotalFiles dfs/FSNamesystem/TotalFiles n
hdfs:NameNode:JvmMetrics:MemHeapUsedM dfs/jvm/MemHeapUsedM n
hdfs:NameNode:JvmMetrics:MemHeapCommittedM dfs/jvm/MemHeapCommittedM n
hdfs:NameNode:JvmMetrics:MemHeapMaxM dfs/jvm/MemHeapMaxM n
hdfs:NameNode:JvmMetrics:MemMaxM dfs/jvm/MemMaxM n

YARN 指标

指标 Metrics Explorer 名称 默认收集
yarn:ResourceManager:ClusterMetrics:NumActiveNMs yarn/ClusterMetrics/NumActiveNM y
yarn:ResourceManager:ClusterMetrics:NumDecommissionedNM yarn/ClusterMetrics/NumDecommissionedNM n
yarn:ResourceManager:ClusterMetrics:NumLostNMs yarn/ClusterMetrics/NumLostNMs n
yarn:ResourceManager:ClusterMetrics:NumUnhealthyNMs yarn/ClusterMetrics/NumUnhealthyNM n
yarn:ResourceManager:ClusterMetrics:NumRebootedNMs yarn/ClusterMetrics/NumRebootedNM n
yarn:ResourceManager:QueueMetrics:running_0 yarn/QueueMetrics/running_0 y
yarn:ResourceManager:QueueMetrics:running_60 yarn/QueueMetrics/running_60 y
yarn:ResourceManager:QueueMetrics:running_300 yarn/QueueMetrics/running_300 y
yarn:ResourceManager:QueueMetrics:running_1440 yarn/QueueMetrics/running_1440 y
yarn:ResourceManager:QueueMetrics:AppsSubmitted yarn/QueueMetrics/AppsSubmitted y
yarn:ResourceManager:QueueMetrics:AvailableMB yarn/QueueMetrics/AvailableMB y
yarn:ResourceManager:QueueMetrics:PendingContainers yarn/QueueMetrics/PendingContainers y
yarn:ResourceManager:QueueMetrics:AppsRunning yarn/QueueMetrics/AppsRunning n
yarn:ResourceManager:QueueMetrics:AppsPending yarn/QueueMetrics/AppsPending n
yarn:ResourceManager:QueueMetrics:AppsComplete yarn/QueueMetrics/AppsComplete n
yarn:ResourceManager:QueueMetrics:AppsKilled yarn/QueueMetrics/AppsKilled n
yarn:ResourceManager:QueueMetrics:AppsFailed yarn/QueueMetrics/AppsFailed n
yarn:ResourceManager:QueueMetrics:AllocatedMB yarn/QueueMetrics/AllocatedMB n
yarn:ResourceManager:QueueMetrics:AllocatedVCores yarn/QueueMetrics/AllocatedVCores n
yarn:ResourceManager:QueueMetrics:AllocatedContainers yarn/QueueMetrics/AllocatedContainers n
yarn:ResourceManager:QueueMetrics:AggregateContainersAllocated yarn/QueueMetrics/AggregateContainersAllocated n
yarn:ResourceManager:QueueMetrics:AggregateContainersReleased yarn/QueueMetrics/AggregateContainersReleased n
yarn:ResourceManager:QueueMetrics:AvailableVCores yarn/QueueMetrics/AvailableVCores n
yarn:ResourceManager:QueueMetrics:PendingMB yarn/QueueMetrics/PendingMB n
yarn:ResourceManager:QueueMetrics:PendingVCores yarn/QueueMetrics/PendingVCores n
yarn:ResourceManager:QueueMetrics:ReservedMB yarn/QueueMetrics/ReservedMB n
yarn:ResourceManager:QueueMetrics:ReservedVCores yarn/QueueMetrics/ReservedVCores n
yarn:ResourceManager:QueueMetrics:ReservedContainers yarn/QueueMetrics/ReservedContainers n
yarn:ResourceManager:QueueMetrics:ActiveUsers yarn/QueueMetrics/ActiveUsers n
yarn:ResourceManager:QueueMetrics:ActiveApplications yarn/QueueMetrics/ActiveApplications n
yarn:ResourceManager:QueueMetrics:FairShareMB yarn/QueueMetrics/FairShareMB n
yarn:ResourceManager:QueueMetrics:FairShareVCores yarn/QueueMetrics/FairShareVCores n
yarn:ResourceManager:QueueMetrics:MinShareMB yarn/QueueMetrics/MinShareMB n
yarn:ResourceManager:QueueMetrics:MinShareVCores yarn/QueueMetrics/MinShareVCores n
yarn:ResourceManager:QueueMetrics:MaxShareMB yarn/QueueMetrics/MaxShareMB n
yarn:ResourceManager:QueueMetrics:MaxShareVCores yarn/QueueMetrics/MaxShareVCores n
yarn:ResourceManager:JvmMetrics:MemHeapUsedM yarn/jvm/MemHeapUsedM n
yarn:ResourceManager:JvmMetrics:MemHeapCommittedM yarn/jvm/MemHeapCommittedM n
yarn:ResourceManager:JvmMetrics:MemHeapMaxM yarn/jvm/MemHeapMaxM n
yarn:ResourceManager:JvmMetrics:MemMaxM yarn/jvm/MemMaxM n

Spark 指标

Spark 驱动程序指标

指标 Metrics Explorer 名称 默认收集
spark:driver:BlockManager:disk.diskSpaceUsed_MB spark/driver/BlockManager/disk/diskSpaceUsed_MB y
spark:driver:BlockManager:memory.maxMem_MB spark/driver/BlockManager/memory/maxMem_MB y
spark:driver:BlockManager:Memory.memUsed_MB spark/driver/BlockManager/memory/memUsed_MB y
spark:driver:DAGScheduler:job.allJobs spark/driver/DAGScheduler/job/allJobs y
spark:driver:DAGScheduler:stage.failedStages spark/driver/DAGScheduler/stage/failedStages y
spark:driver:DAGScheduler:stage.waitingStages spark/driver/DAGScheduler/stage/waitingStages y

Spark 执行器指标

指标 Metrics Explorer 名称 默认收集
spark:executor:executor:bytesRead spark/executor/bytesRead y
spark:executor:executor:bytesWriter spark/executor/bytesWriter y
spark:executor:executor:cpuTime spark/executor/cpuTime y
spark:executor:executor:diskBytesSpilled spark/executor/diskBytesSpilled y
spark:executor:executor:recordsRead spark/executor/recordsRead y
spark:executor:executor:recordsWrite Spark/执行程序/记录 y
spark:executor:executor:runTime spark/executor/runTime y
spark:executor:executor:shuffleRecordsRead spark/executor/shuffleRecordsRead y
spark:executor:executor:shuffleRecordsWriter spark/executor/shuffleRecordsWriter y

Spark 历史记录服务器指标

Dataproc 收集以下 Spark 历史记录服务 JVM 内存指标:

指标 Metrics Explorer 名称 默认收集
sparkHistoryServer:JVM:Memory:HeapMemoryUsage.committed sparkHistoryServer/Memory/CommittedHeapMemory y
sparkHistoryServer:JVM:Memory:HeapMemoryUsage sparkHistoryServer/Memory/UsedHeapMemory y
sparkHistoryServer:JVM:Memory:HeapMemoryUsage sparkHistoryServer/Memory/MaxHeapMemory y
sparkHistoryServer:JVM:Memory:NonHeapMemoryUsage.committed sparkHistoryServer/Memory/CommittedNonHeapMemory y
sparkHistoryServer:JVM:Memory:NonHeapMemoryUsage sparkHistoryServer/Memory/UsedNonHeapMemory y
sparkHistoryServer:JVM:Memory:NonHeapMemoryUsage sparkHistoryServer/Memory/MaxNonHeapMemory y

HiveServer 2 指标

指标 Metrics Explorer 名称 默认收集
hiveserver2:JVM:Memory:HeapMemoryUsage.committed hiveserver2/memory/CommittedHeapMemory y
hiveserver2:JVM:Memory:HeapMemoryUsage.used hiveserver2/Memory/UsedHeapMemory y
hiveserver2:JVM:Memory:HeapMemoryUsage hiveserver2/Memory/MaxHeapMemory y
hiveserver2:JVM:Memory:NonHeapMemoryUsage.committed hiveserver2/Memory/CommittedNonHeapMemory y
hiveserver2:JVM:Memory:NonHeapMemoryUsage.used hiveserver2/Memory/UsedNonHeapMemory y
hiveserver2:JVM:Memory:NonHeapMemoryUsage hiveserver2/Memory/MaxNonHeapMemory y

Dataproc 监控代理指标

默认情况下,Dataproc 收集以下 Dataproc 监控代理默认指标(这些指标使用 agent.googleapis.com 前缀发布):

CPU
agent.googleapis.com/cpu/load_15m
agent.googleapis.com/cpu/load_1m
agent.googleapis.com/cpu/load_5m
agent.googleapis.com/cpu/usage_time
agent.googleapis.com/cpu/utilization

磁盘
agent.googleapis.com/disk/bytes_used
agent.googleapis.com/disk/io_time
agent.googleapis.com/disk/merged_operations
agent.googleapis.com/disk/operation_count
agent.googleapis.com/disk/operation_time
agent.googleapis.com/disk/pending_operations
agent.googleapis.com/disk/percent_used_used

交换
agent.googleapis.com/swap/bytes_used
agent.googleapis.com/swap/io
agent.googleapis.com/swap/percent_used

内存
agent.googleapis.com/memory/bytes_used
agent.googleapis.com/memory/percent_used

进程 -(遵循为极少数属性而略有差别的配额政策)
agent.googleapis.com/processes/count_by_state
agent.googleapis.com/processes/cpu_time
agent.googleapis.com/processes/disk/read_bytes_count
agent.googleapis.com/processes/disk/write_bytes_count
agent.googleapis.com/processes/processk/fork_countes processk/processes/fork_countes.processk/processes/fork_countes.processk/processes/fork_processes/fork_countes processk.

接口
agent.googleapis.com/interface/errors
agent.googleapis.com/interface/packets
agent.googleapis.com/interface/traffic

网络
agent.googleapis.com/network/tcp_connections

启用 OSS 指标收集

创建 Dataproc 集群时,您可以使用 gcloud CLI 或 Dataproc API 通过以下两种方式启用 OSS 指标收集(您可以使用一种或两种收集方法):

  1. 仅收集一个或多个 OSS 指标来源的默认指标
  2. 启用仅从一个或多个 OSS 指标来源收集指定(“替换”指标)的指标

gcloud 命令

默认指标收集

使用 gcloud dataproc clusters create --metric-sources 标志启用从一个或多个指标来源收集默认可用的 OSS 指标

gcloud dataproc clusters create cluster-name \
    --metric-sources=METRIC_SOURCE(s) \
    ... other flags

注意:

  • --metric-sources:启用默认指标收集所必需的属性。指定以下一个或多个指标来源:sparkhdfsyarnspark-history-serverhiveserver2monitoring-agent-defaults。指标来源名称不区分大小写(例如,“yarn”或“YARN”均可)。

覆盖指标收集

(可选)添加 --metric-overrides--metric-overrides-file 标志,以收集来自一个或多个指标来源的一个或多个可用的 OSS 指标

  • 任何可用的 OSS 指标和所有 Spark 指标均可作为指标替换列出。“替换指标”值区分大小写,因而必须视情况以“驼峰式大小写”格式提供。

    示例

    • sparkHistoryServer:JVM:Memory:NonHeapMemoryUsage.committed
    • hiveserver2:JVM:Memory:NonHeapMemoryUsage.used
    • yarn:ResourceManager:JvmMetrics:MemHeapMaxM
  • 系统只会从指定的指标来源收集指定的替换指标。例如,如果将一个或多个 spark:executive 指标列为指标替换值,则不会收集其他 SPARK 指标。来自其他指标来源的默认 OSS 指标的收集不受影响。例如,如果同时启用了 SPARKYARN 指标来源,并且仅为 Spark 指标提供了替换值,则系统会收集所有默认的 YARN 指标。
  • 必须启用指定指标替换值的来源。例如,如果将一个或多个 spark:driver 指标作为指标替换项提供,则必须启用 spark 指标来源 (--metric-sources=spark)。

替换指标列表

gcloud dataproc clusters create cluster-name \
    --metric-sources=METRIC_SOURCE(s) \
    --metric-overrides=LIST_OF_METRIC_OVERRIDES \
    ... other flags

注意:

  • --metric-sources:启用默认指标收集所必需的属性。指定以下一个或多个指标来源:sparkhdfsyarnspark-history-serverhiveserver2monitoring-agent-defaults。 指标来源名称不区分大小写,例如可以输入“yarn”或“YARN”
  • --metric-overrides:请按以下格式提供指标列表:

    METRIC_SOURCE:INSTANCE:GROUP:METRIC

    酌情使用驼峰式格式。

    示例:--metric-overrides=sparkHistoryServer:JVM:Memory:NonHeapMemoryUsage.committed

  • 此标志可替代 --metric-overrides-file 标志,但不能与其一起使用。

替换指标文件

gcloud dataproc clusters create cluster-name \
    --metric-sources=METRIC-SOURCE(s) \
    --metric-overrides-file=METRIC_OVERRIDES_FILENAME \
    ... other flags

注意:

  • --metric-sources:启用默认指标收集所必需的属性。指定以下一个或多个指标来源:sparkhdfsyarnspark-history-serverhiveserver2monitoring-agent-defaults。 指标来源名称不区分大小写,例如,“yarn”或“YARN”可以是可接受的。
  • --metric-overrides-file:按以下格式指定包含一个或多个指标的本地或 Cloud Storage 文件 (gs://bucket/filename):

    METRIC_SOURCE:INSTANCE:GROUP:METRIC

    酌情使用驼峰式格式。

    示例:--metric-overrides=sparkHistoryServer:JVM:Memory:NonHeapMemoryUsage.committed

  • 此标志可替代 --metric-overrides-file 标志,但不能与其一起使用。

REST API

使用 DataprocMetricConfig 作为 clusters.create 请求的一部分,以启用 OSS 指标收集。

构建 Monitoring 信息中心

您可以构建自定义 Monitoring 信息中心,以显示所选 Cloud Dataproc 集群指标的图表。

  1. 从 Monitoring Dashboards Overview 页面中选择 + CREATE DASHBOARD。为信息中心提供一个名称,然后点击右上方菜单中的 Add Chart 以打开 Add Chart 窗口。选择“Cloud Dataproc Cluster”作为资源类型。 选择一个或多个指标以及指标和图表属性。然后保存该图表。

  2. 您可以将其他图表添加到信息中心。保存信息中心后,其标题会显示在 Monitoring Dashboards Overview 页面中。您可以在信息中心显示页面中查看、更新和删除信息中心图表。

创建提醒

您可以创建 Monitoring 提醒,以便在 Dataproc 集群或作业指标超过指定阈值时(例如,当 HDFS 可用容量较低时)收到通知。

  1. 在 Google Cloud Console 中打开 Monitoring Alerting。点击 + CREATE POLICY 以打开 Create new alerting policy 表单。通过添加提醒条件、政策触发条件、通知渠道和文档来定义提醒。

  2. 选择 ADD CONDITION 以打开提醒条件表单并选择 Metric 标签页。填写各个字段以定义提醒条件,然后点击 ADD。如果 Dataproc 集群 HDFS 容量低于指定的 930 GiB(二进制 GB)阈值(998,579,896,320 字节)达到 1 分钟,则会触发下面显示的示例警报条件。

  3. 添加提醒条件后,请完善提醒政策,只需设置通知渠道、政策触发条件、文档以及提醒政策名称。

查看提醒

每次指标阈值条件触发提醒时,Monitoring 都会创建一个突发事件和相应的事件。您可以在 Google Cloud Console 的 Monitoring Alerting 页面中查看突发事件。如果您在提醒政策中定义了通知机制(例如电子邮件或短信通知),Monitoring 还会发送事件通知。

后续步骤