报告客户端指标

Java 版 Cloud Bigtable HBase 客户端可以收集客户端指标,让您能够监控 Cloud Bigtable 的性能。其他 Cloud Bigtable 客户端库不提供客户端指标。本页介绍了如何启用客户端指标,并且列出了可用的指标。

启用指标

Cloud Bigtable 的 Java 版 HBase 客户端使用 Dropwizard 指标来收集和报告客户端指标。由于收集指标的过程会为每个请求增加极为少量的延迟(几微秒),因此,默认情况下不会启用指标。以下各节介绍了如何启用客户端指标。

使用 Log4j 报告器

如需启用指标,最简单的方法是将以下行添加到您的 Log4j 配置文件中:

log4j.category.com.google.cloud.bigtable.metrics=DEBUG

此配置设置将打开指标收集功能,并使用 SLF4J 日志记录器来记录 Cloud Bigtable 指标。

使用其他报告器

您可以通过更新应用的代码来使用其他类型的报告器。例如,以下报告器会将指标发送到 Graphite 服务器:

Graphite pickledGraphite = new PickledGraphite(new InetSocketAddress("graphite.example.com", 2004));
DropwizardMetricRegistry registry = new DropwizardMetricRegistry();
GraphiteReporter reporter =
    GraphiteReporter.forRegistry(registry.getRegistry())
        .convertRatesTo(TimeUnit.SECONDS)
        .convertDurationsTo(TimeUnit.MILLISECONDS)
        .filter(MetricFilter.ALL)
        .build(pickledGraphite);
reporter.start(1, TimeUnit.MINUTES);
BigtableClientMetrics.setMetricRegistry(registry);

您可以使用 Dropwizard Metrics 提供的报告器来处理 JMX、控制台日志记录、SLF4J 和 CSV。此外,您还可以使用各种第三方报告器

可用指标

本节介绍了启用客户端指标时可用的指标。每个指标都具有以下类型之一:

  • 计数器:每个 Java 虚拟机 (JVM) 的累积计数。
  • 计量器:计数信息外加吞吐量信息(每最后一分钟的计数、每 5 分钟的计数或每 15 分钟的计数)
  • 计时器:计量器信息外加延迟信息(比如中间值、平均值和第 95 百分位数)

系统仅会针对每种类型的请求收集特定指标。如需查看在执行 Put 请求期间收集的指标示例,请参阅“示例:适用于 Put 请求的指标”。

通道级指标

类型 名称 说明
计数器 google-cloud-bigtable.sessions.active 已打开的 BigtableSession 数量。每个 HBase Connection 都有一个 BigtableSession
计数器 google-cloud-bigtable.grpc.channel.active 打开的低级层 gRPC/Netty 通道数量。每个 BigtableSession 都有许多条 gRPC 通道。

常规 RPC 指标

类型 名称 说明
计数器 google-cloud-bigtable.grpc.rpc.active 当前处于活动状态的远程过程调用 (RPC) 的数量。
计量器 google-cloud-bigtable.grpc.rpc.performed RPC 吞吐量。

数据方法指标

对于以下数据方法,系统会收集数据方法指标:

  • ReadRows:实现获取和扫描方法。
  • MutateRow:实现放置和删除方法。
  • MutateRows:实现批量写入方法。
  • CheckAndMutateRow:实现 HBase 的 checkAnd* 方法。
  • ReadModifyWrite:实现 HBase 的 AppendIncrement 方法。
  • SampleRowKeys:检索用于 MapReduce 操作的区域信息。
类型 名称 说明
计时器 google-cloud-bigtable.grpc.method.[METHOD_TYPE].operation.latency 单个操作耗费的时长。操作耗费的时间包含执行的所有 RPC 耗费的总延迟时间。(通常只执行一个 RPC。如果发生暂时性错误,则在客户端执行重试时,可能会导致同一 RPC 被执行多次。)
计时器 google-cloud-bigtable.grpc.method.ReadRows.firstResponse.latency 接收扫描请求的第一个响应所需的时长。
计量器 google-cloud-bigtable.grpc.method.[METHOD_TYPE].retries.performed 已执行的重试次数。
计量器 google-cloud-bigtable.grpc.method.[METHOD_TYPE].failures 不可重试的失败次数。
计量器 google-cloud-bigtable.grpc.method.[METHOD_TYPE].retries.exhausted 由于重试失败次数过多而导致重试被中止的次数。

批量指标

为返回多个响应的方法(例如批量写入)提供了批量指标。

类型 名称 说明
计量器 google-cloud-bigtable.scanner.results 扫描返回的单个行的吞吐量。
计量器 google-cloud-bigtable.bulk-mutator.mutations.added 为每个 MutateRows 请求添加的个别更改的吞吐量。
计量器 google-cloud-bigtable.bulk-mutator.mutations.retried 随着时间推移,已重试的单个更改的数量。

Cloud Bigtable 表指标

将 Cloud Bigtable 对象转换为 HBase 对象的操作可能会增加请求的延迟时间。您可以搭配使用以下计时器和指定的 *.operation.latency 计时器来测量这种转换的成本。

类型 名称 说明
计时器 google-cloud-bigtable.table.put.latency 个别 Put 操作花费的时长。 与 google-cloud-bigtable.grpc.method.MutateRow.operation.latency 搭配使用。
计时器 google-cloud-bigtable.table.get.latency 个别 Get 操作花费的时长。 与 google-cloud-bigtable.grpc.method.ReadRows.operation.latency 搭配使用。

示例:适用于 Put 请求的指标

启用客户端指标后,系统会针对未重试的成功 Put 请求收集以下指标:

  • 计数器google-cloud-bigtable.grpc.rpc.active
  • 计量器google-cloud-bigtable.grpc.rpc.performed
  • 计时器google-cloud-bigtable.grpc.method.MutateRow.operation.latency
  • 计时器google-cloud-bigtable.table.put.latency

收集这些指标会导致 Put 操作约增加 1 微秒(即 1/1000 毫秒)的时间。假设整个 Put 操作包含约 1 KB 数据,该操作所需的时间可以低至 2 到 3 毫秒。