2018-10-26 11:23:35 -04:00
|
|
|
[role="xpack"]
|
|
|
|
[testenv="platinum"]
|
|
|
|
[[ccr-get-follow-stats]]
|
|
|
|
=== Get Follower Stats API
|
|
|
|
++++
|
|
|
|
<titleabbrev>Get Follower Stats</titleabbrev>
|
|
|
|
++++
|
|
|
|
|
2018-11-10 14:37:14 -05:00
|
|
|
beta[]
|
|
|
|
|
2018-10-26 11:23:35 -04:00
|
|
|
Get follower stats.
|
|
|
|
|
|
|
|
==== Description
|
|
|
|
|
|
|
|
This API gets follower stats. This API will return shard-level stats about the
|
|
|
|
following tasks associated with each shard for the specified indices.
|
|
|
|
|
|
|
|
==== Request
|
|
|
|
|
|
|
|
//////////////////////////
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
|
|
|
PUT /follower_index/_ccr/follow
|
|
|
|
{
|
|
|
|
"remote_cluster" : "remote_cluster",
|
|
|
|
"leader_index" : "leader_index"
|
|
|
|
}
|
|
|
|
--------------------------------------------------
|
|
|
|
// CONSOLE
|
|
|
|
// TESTSETUP
|
|
|
|
// TEST[setup:remote_cluster_and_leader_index]
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
|
|
|
POST /follower_index/_ccr/pause_follow
|
|
|
|
--------------------------------------------------
|
|
|
|
// CONSOLE
|
|
|
|
// TEARDOWN
|
|
|
|
|
|
|
|
//////////////////////////
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
|
|
|
GET /<index>/_ccr/stats
|
|
|
|
--------------------------------------------------
|
|
|
|
// CONSOLE
|
|
|
|
// TEST[s/<index>/follower_index/]
|
|
|
|
|
|
|
|
==== Path Parmeters
|
|
|
|
`index` ::
|
|
|
|
(string) a comma-delimited list of index patterns
|
|
|
|
|
|
|
|
==== Results
|
|
|
|
|
|
|
|
This API returns the following information:
|
|
|
|
|
|
|
|
`indices`::
|
|
|
|
(array) an array of follower index statistics
|
|
|
|
|
|
|
|
The `indices` array consists of objects containing two fields:
|
|
|
|
|
|
|
|
`indices[].index`::
|
|
|
|
(string) the name of the follower index
|
|
|
|
|
|
|
|
`indices[].shards`::
|
|
|
|
(array) an array of shard-level following task statistics
|
|
|
|
|
|
|
|
The `shards` array consists of objects containing the following fields:
|
|
|
|
|
|
|
|
`indices[].shards[].remote_cluster`::
|
|
|
|
(string) the <modules-remote-clusters,remote cluster>> containing the leader
|
|
|
|
index
|
|
|
|
|
|
|
|
`indices[].shards[].leader_index`::
|
|
|
|
(string) the name of the index in the leader cluster being followed
|
|
|
|
|
|
|
|
`indices[].shards[].follower_index`::
|
|
|
|
(string) the name of the follower index
|
|
|
|
|
|
|
|
`indices[].shards[].shard_id`::
|
|
|
|
(integer) the numerical shard ID, with values from 0 to one less than the
|
|
|
|
number of replicas
|
|
|
|
|
|
|
|
`indices[].shards[].leader_global_checkpoint`::
|
|
|
|
(long) the current global checkpoint on the leader known to the follower task
|
|
|
|
|
|
|
|
`indices[].shards[].leader_max_seq_no`::
|
|
|
|
(long) the current maximum sequence number on the leader known to the follower
|
|
|
|
task
|
|
|
|
|
|
|
|
`indices[].shards[].follower_global_checkpoint`::
|
|
|
|
(long) the current global checkpoint on the follower; the difference between the
|
|
|
|
`leader_global_checkpoint` and the `follower_global_checkpoint` is an
|
|
|
|
indication of how much the follower is lagging the leader
|
|
|
|
|
|
|
|
`indices[].shards[].follower_max_seq_no`::
|
|
|
|
(long) the current maximum sequence number on the follower
|
|
|
|
|
|
|
|
`indices[].shards[].last_requested_seq_no`::
|
|
|
|
(long) the starting sequence number of the last batch of operations requested
|
|
|
|
from the leader
|
|
|
|
|
|
|
|
`indices[].shards[].outstanding_read_requests`::
|
|
|
|
(integer) the number of active read requests from the follower
|
|
|
|
|
|
|
|
`indices[].shards[].outstanding_write_requests`::
|
|
|
|
(integer) the number of active bulk write requests on the follower
|
|
|
|
|
|
|
|
`indices[].shards[].write_buffer_operation_count`::
|
|
|
|
(integer) the number of write operations queued on the follower
|
|
|
|
|
|
|
|
`indices[].shards[].follower_mapping_version`::
|
|
|
|
(long) the mapping version the follower is synced up to
|
|
|
|
|
2018-11-07 21:20:51 -05:00
|
|
|
`indices[].shards[].follower_settings_version`::
|
|
|
|
(long) the index settings version the follower is synced up to
|
|
|
|
|
2018-10-26 11:23:35 -04:00
|
|
|
`indices[].shards[].total_read_time_millis`::
|
|
|
|
(long) the total time reads were outstanding, measured from the time a read
|
|
|
|
was sent to the leader to the time a reply was returned to the follower
|
|
|
|
|
|
|
|
`indices[].shards[].total_read_remote_exec_time_millis`::
|
|
|
|
(long) the total time reads spent executing on the remote cluster
|
|
|
|
|
|
|
|
`indices[].shards[].successful_read_requests`::
|
|
|
|
(long) the number of successful fetches
|
|
|
|
|
|
|
|
`indices[].shards[].failed_read_requests`::
|
|
|
|
(long) the number of failed reads
|
|
|
|
|
|
|
|
`indices[].shards[].operations_read`::
|
|
|
|
(long) the total number of operations read from the leader
|
|
|
|
|
|
|
|
`indices[].shards[].bytes_read`::
|
|
|
|
(long) the total of transferred bytes read from the leader (note this is only
|
|
|
|
an estimate, and does not account for compression if enabled)
|
|
|
|
|
|
|
|
`indices[].shards[].total_write_time_millis`::
|
|
|
|
(long) the total time spent writing on the follower
|
|
|
|
|
|
|
|
`indices[].shards[].write_buffer_size_in_bytes`::
|
|
|
|
(long) the total number of bytes of operations currently queued for writing
|
|
|
|
|
|
|
|
`indices[].shards[].successful_write_requests`::
|
|
|
|
(long) the number of bulk write requests executed on the follower
|
|
|
|
|
|
|
|
`indices[].shards[].failed_write_requests`::
|
|
|
|
(long) the number of failed bulk write requests executed on the follower
|
|
|
|
|
|
|
|
`indices[].shards[].operations_written`::
|
|
|
|
(long) the number of operations written on the follower
|
|
|
|
|
|
|
|
`indices[].shards[].read_exceptions`::
|
|
|
|
(array) an array of objects representing failed reads
|
|
|
|
|
|
|
|
The `read_exceptions` array consists of objects containing the following
|
|
|
|
fields:
|
|
|
|
|
|
|
|
`indices[].shards[].read_exceptions[].from_seq_no`::
|
|
|
|
(long) the starting sequence number of the batch requested from the leader
|
|
|
|
|
|
|
|
`indices[].shards[].read_exceptions[].retries`::
|
|
|
|
(integer) the number of times the batch has been retried
|
|
|
|
|
|
|
|
`indices[].shards[].read_exceptions[].exception`::
|
|
|
|
(object) represents the exception that caused the read to fail
|
|
|
|
|
|
|
|
Continuing with the fields from `shards`:
|
|
|
|
|
|
|
|
`indices[].shards[].time_since_last_read_millis`::
|
|
|
|
(long) the number of milliseconds since a read request was sent to the leader;
|
|
|
|
note that when the follower is caught up to the leader, this number will
|
|
|
|
increase up to the configured `read_poll_timeout` at which point another read
|
|
|
|
request will be sent to the leader
|
|
|
|
|
|
|
|
`indices[].fatal_exception`::
|
|
|
|
(object) an object representing a fatal exception that cancelled the following
|
|
|
|
task; in this situation, the following task must be resumed manually with the
|
|
|
|
<<ccr-post-resume-follow,resume follower API>>
|
|
|
|
|
2018-11-21 18:01:59 -05:00
|
|
|
==== Authorization
|
|
|
|
|
|
|
|
If the {es} {security-features} are enabled, you must have `monitor` cluster
|
|
|
|
privileges on the cluster that contains the follower index. For more information,
|
|
|
|
see {stack-ov}/security-privileges.html[Security privileges].
|
|
|
|
|
2018-10-26 11:23:35 -04:00
|
|
|
==== Example
|
|
|
|
|
|
|
|
This example retrieves follower stats:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
2018-10-29 02:45:27 -04:00
|
|
|
GET /follower_index/_ccr/stats
|
2018-10-26 11:23:35 -04:00
|
|
|
--------------------------------------------------
|
|
|
|
// CONSOLE
|
|
|
|
|
|
|
|
The API returns the following results:
|
2018-11-12 10:28:35 -05:00
|
|
|
|
2018-10-26 11:23:35 -04:00
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
|
|
|
{
|
|
|
|
"indices" : [
|
|
|
|
{
|
|
|
|
"index" : "follower_index",
|
|
|
|
"shards" : [
|
|
|
|
{
|
|
|
|
"remote_cluster" : "remote_cluster",
|
|
|
|
"leader_index" : "leader_index",
|
|
|
|
"follower_index" : "follower_index",
|
|
|
|
"shard_id" : 0,
|
|
|
|
"leader_global_checkpoint" : 1024,
|
|
|
|
"leader_max_seq_no" : 1536,
|
|
|
|
"follower_global_checkpoint" : 768,
|
|
|
|
"follower_max_seq_no" : 896,
|
|
|
|
"last_requested_seq_no" : 897,
|
|
|
|
"outstanding_read_requests" : 8,
|
|
|
|
"outstanding_write_requests" : 2,
|
|
|
|
"write_buffer_operation_count" : 64,
|
|
|
|
"follower_mapping_version" : 4,
|
2018-11-07 21:20:51 -05:00
|
|
|
"follower_settings_version" : 2,
|
2018-10-26 11:23:35 -04:00
|
|
|
"total_read_time_millis" : 32768,
|
|
|
|
"total_read_remote_exec_time_millis" : 16384,
|
|
|
|
"successful_read_requests" : 32,
|
|
|
|
"failed_read_requests" : 0,
|
|
|
|
"operations_read" : 896,
|
|
|
|
"bytes_read" : 32768,
|
|
|
|
"total_write_time_millis" : 16384,
|
|
|
|
"write_buffer_size_in_bytes" : 1536,
|
|
|
|
"successful_write_requests" : 16,
|
|
|
|
"failed_write_requests" : 0,
|
|
|
|
"operations_written" : 832,
|
|
|
|
"read_exceptions" : [ ],
|
|
|
|
"time_since_last_read_millis" : 8
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
--------------------------------------------------
|
|
|
|
// TESTRESPONSE[s/"leader_global_checkpoint" : 1024/"leader_global_checkpoint" : $body.indices.0.shards.0.leader_global_checkpoint/]
|
|
|
|
// TESTRESPONSE[s/"leader_max_seq_no" : 1536/"leader_max_seq_no" : $body.indices.0.shards.0.leader_max_seq_no/]
|
|
|
|
// TESTRESPONSE[s/"follower_global_checkpoint" : 768/"follower_global_checkpoint" : $body.indices.0.shards.0.follower_global_checkpoint/]
|
|
|
|
// TESTRESPONSE[s/"follower_max_seq_no" : 896/"follower_max_seq_no" : $body.indices.0.shards.0.follower_max_seq_no/]
|
|
|
|
// TESTRESPONSE[s/"last_requested_seq_no" : 897/"last_requested_seq_no" : $body.indices.0.shards.0.last_requested_seq_no/]
|
|
|
|
// TESTRESPONSE[s/"outstanding_read_requests" : 8/"outstanding_read_requests" : $body.indices.0.shards.0.outstanding_read_requests/]
|
|
|
|
// TESTRESPONSE[s/"outstanding_write_requests" : 2/"outstanding_write_requests" : $body.indices.0.shards.0.outstanding_write_requests/]
|
|
|
|
// TESTRESPONSE[s/"write_buffer_operation_count" : 64/"write_buffer_operation_count" : $body.indices.0.shards.0.write_buffer_operation_count/]
|
|
|
|
// TESTRESPONSE[s/"follower_mapping_version" : 4/"follower_mapping_version" : $body.indices.0.shards.0.follower_mapping_version/]
|
2018-11-07 21:20:51 -05:00
|
|
|
// TESTRESPONSE[s/"follower_settings_version" : 2/"follower_settings_version" : $body.indices.0.shards.0.follower_settings_version/]
|
2018-10-26 11:23:35 -04:00
|
|
|
// TESTRESPONSE[s/"total_read_time_millis" : 32768/"total_read_time_millis" : $body.indices.0.shards.0.total_read_time_millis/]
|
|
|
|
// TESTRESPONSE[s/"total_read_remote_exec_time_millis" : 16384/"total_read_remote_exec_time_millis" : $body.indices.0.shards.0.total_read_remote_exec_time_millis/]
|
|
|
|
// TESTRESPONSE[s/"successful_read_requests" : 32/"successful_read_requests" : $body.indices.0.shards.0.successful_read_requests/]
|
|
|
|
// TESTRESPONSE[s/"failed_read_requests" : 0/"failed_read_requests" : $body.indices.0.shards.0.failed_read_requests/]
|
|
|
|
// TESTRESPONSE[s/"operations_read" : 896/"operations_read" : $body.indices.0.shards.0.operations_read/]
|
|
|
|
// TESTRESPONSE[s/"bytes_read" : 32768/"bytes_read" : $body.indices.0.shards.0.bytes_read/]
|
|
|
|
// TESTRESPONSE[s/"total_write_time_millis" : 16384/"total_write_time_millis" : $body.indices.0.shards.0.total_write_time_millis/]
|
|
|
|
// TESTRESPONSE[s/"write_buffer_size_in_bytes" : 1536/"write_buffer_size_in_bytes" : $body.indices.0.shards.0.write_buffer_size_in_bytes/]
|
|
|
|
// TESTRESPONSE[s/"successful_write_requests" : 16/"successful_write_requests" : $body.indices.0.shards.0.successful_write_requests/]
|
|
|
|
// TESTRESPONSE[s/"failed_write_requests" : 0/"failed_write_requests" : $body.indices.0.shards.0.failed_write_requests/]
|
|
|
|
// TESTRESPONSE[s/"operations_written" : 832/"operations_written" : $body.indices.0.shards.0.operations_written/]
|
|
|
|
// TESTRESPONSE[s/"time_since_last_read_millis" : 8/"time_since_last_read_millis" : $body.indices.0.shards.0.time_since_last_read_millis/]
|