Stay organized with collections
Save and categorize content based on your preferences.
Client-side metrics descriptions
Client-side metrics are available when you use the Bigtable client
library for Java or the Bigtable HBase client for Java. This page
provides a detailed description of each client-side metric.
Metrics are published to the region of the Bigtable cluster that
they are for. If Bigtable can't resolve the cluster for a metric,
like when an operation fails, then the metric is published to the global region
and the cluster tag has the value unspecified.
Use client-side metrics in conjunction with server-side metrics for performance debugging. For a comprehensive list of Bigtable server-side and client-side metrics, see Metrics.
The total end-to-end latency across all RPC attempts associated with
a Bigtable operation. This metric measures an
operation's round trip from the client to Bigtable and
back to the client and includes all retries.
For ReadRows requests, the operation latencies include
the application processing time for each returned message.
Supported Bigtable operations
ReadRow
ReadRows
MutateRow
MutateRows
SampleRowKeys
CheckAndMutateRow
BulkReadRows
BulkMutateRows
Type
Distribution
Available dimensions
project ID
instance ID
table
cluster
zone
app profile ID
method name
final operation status
streaming operation
client name
Attempt latencies
Attribute
Description
Full metric
bigtable.googleapis.com/client/attempt_latencies
Definition
The latencies of a client RPC attempt.
Under normal circumstances, this value is identical to
operation_latencies. If the client receives transient
errors, however, then operation_latencies is the sum of
all attempt_latencies and the exponential delays.
Supported Bigtable operations
ReadRow
ReadRows
MutateRow
MutateRows
SampleRowKeys
CheckAndMutateRow
BulkReadRows
BulkMutateRows
Type
Distribution
Available dimensions
project ID
instance ID
table
cluster
zone
app profile ID
method name
attempt status
streaming operation
client name
Retry count
Attribute
Description
Full metric
bigtable.googleapis.com/client/retry_count
Definition
A counter that records the number of attempts that an operation
required to complete. Under normal circumstances, this value is empty.
The time from when the client receives the response to a
request until the application reads the response. This metric is most
relevant for ReadRows requests. The start and stop times
for this metric depend on the way that you send the read request; see
Application blocking latencies timer
examples for details.
Supported Bigtable operations
ReadRow
ReadRows
MutateRow
MutateRows
SampleRowKeys
CheckAndMutateRow
BulkReadRows
BulkMutateRows
Type
Distribution
Available dimensions
project ID
instance ID
table
cluster
zone
app profile ID
method name
client name
Application blocking latencies timer examples
ReadRows requests are typically sent in one of three ways: iteratively,
asynchronously, or as a future call. The following examples demonstrate the
start and stop times for the application blocking latencies for each type of
ReadRows operation.
Iterative
longtotaLatency=0;ServerStream<Row>stream=bigtableDataClient.readRows(query);for(Rowrow:stream){timer.start();// Do something with rowtimer.stop();totalLatency+=timer.elapsed();}
Asynchronous
client.readRowsAsync(query,newResponseObserver<Row>(){@OverridepublicvoidonStart(StreamControllerstreamController){}@OverridepublicvoidonResponse(Rowrow){timer.start();// Do something with the rowtimer.stop();totalLatency+=timer.elapsed();}@OverridepublicvoidonError(Throwablethrowable){// Do something with the error}@OverridepublicvoidonComplete(){}});
Future call
The application blocking latencies should be approximately 0 (no timer) for
this type of ReadRows request.
The number of requests that failed to reach Google's network. In
normal cases, this number is 0. When the number is not 0, it can
indicate connectivity issues between the application and the Google
network.
Latencies introduced when the client blocks the sending of more
requests to the server because of too many pending requests in a bulk
operation. For versions 2.21.0 and later, this metric also includes
the latencies of requests queued on gRPC channels.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-09-02 UTC."],[[["\u003cp\u003eClient-side metrics, available for Java Bigtable clients, provide detailed insights into operation performance and are used alongside server-side metrics for comprehensive debugging.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eoperation_latencies\u003c/code\u003e metric measures the end-to-end latency of Bigtable operations, including retries, while \u003ccode\u003eattempt_latencies\u003c/code\u003e measures the latency of individual RPC attempts.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eRetry_count\u003c/code\u003e tracks the number of attempts an operation requires, while \u003ccode\u003eapplication_blocking_latencies\u003c/code\u003e gauges the time an application takes to process a response.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eFirst_response_latencies\u003c/code\u003e measures the time it takes to receive the first response row, and \u003ccode\u003eserver_latencies\u003c/code\u003e measures the latency between when Google's frontend receives a request and when it sends the first response byte.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eConnectivity_error_count\u003c/code\u003e tracks the number of requests that fail to reach Google's network, and \u003ccode\u003eclient_blocking_latencies\u003c/code\u003e measures delays caused by client-side request blocking or queuing.\u003c/p\u003e\n"]]],[],null,["# Client-side metrics descriptions\n================================\n\nClient-side metrics are available when you use the Bigtable client\nlibrary for Java or the Bigtable HBase client for Java. This page\nprovides a detailed description of each client-side metric.\n\nTo learn how to set up and configure client-side metrics, see\n[Set up client-side metrics](/bigtable/docs/client-side-metrics-setup). For an overview, see the [Client-side metrics overview](/bigtable/docs/client-side-metrics).\n\nMetrics are published to the region of the Bigtable cluster that\nthey are for. If Bigtable can't resolve the cluster for a metric,\nlike when an operation fails, then the metric is published to the global region\nand the `cluster` tag has the value `unspecified`.\n\nUse client-side metrics in conjunction with server-side metrics for performance debugging. For a comprehensive list of Bigtable server-side and client-side metrics, see [Metrics](/bigtable/docs/metrics).\n\nOperation latencies\n-------------------\n\nAttempt latencies\n-----------------\n\nRetry count\n-----------\n\nApplication blocking latencies\n------------------------------\n\n### Application blocking latencies timer examples\n\n`ReadRows` requests are typically sent in one of three ways: iteratively,\nasynchronously, or as a future call. The following examples demonstrate the\nstart and stop times for the application blocking latencies for each type of\n`ReadRows` operation.\n\n#### Iterative\n\n long totaLatency=0;\n ServerStream\u003cRow\u003e stream = bigtableDataClient.readRows(query);\n\n for (Row row : stream) {\n timer.start();\n // Do something with row\n timer.stop();\n totalLatency += timer.elapsed();\n }\n\n#### Asynchronous\n\n client.readRowsAsync(query, new ResponseObserver\u003cRow\u003e() {\n @Override\n public void onStart(StreamController streamController) {\n\n }\n\n @Override\n public void onResponse(Row row) {\n timer.start();\n // Do something with the row\n timer.stop();\n totalLatency += timer.elapsed();\n }\n\n @Override\n public void onError(Throwable throwable) {\n // Do something with the error\n }\n\n @Override\n public void onComplete() {\n }\n });\n\n#### Future call\n\nThe application blocking latencies should be approximately 0 (no timer) for\nthis type of `ReadRows` request. \n\n List\u003cRow\u003e rows = bigtableDataClient.readRowsCallable().all().call(query);\n\nFirst-response latencies\n------------------------\n\nServer latencies\n----------------\n\nConnectivity error count\n------------------------\n\nClient blocking latencies\n-------------------------\n\nWhat's next\n-----------\n\n- [See all\n Google Cloud metrics](/monitoring/api/metrics_gcp).\n- [Install and configure client-side metrics.](/bigtable/docs/client-side-metrics-setup)"]]