mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-03-06 19:09:14 +00:00
This commit adds functionality so that aliases that are manipulated on leader indices are replicated by the shard follow tasks to the follower indices. Note that we ignore write indices. This is due to the fact that follower indices do not receive direct writes so the concept is not useful. Relates #41815
266 lines
11 KiB
Plaintext
266 lines
11 KiB
Plaintext
[role="xpack"]
|
|
[testenv="platinum"]
|
|
[[ccr-get-follow-stats]]
|
|
=== Get follower stats API
|
|
++++
|
|
<titleabbrev>Get follower stats</titleabbrev>
|
|
++++
|
|
|
|
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?wait_for_active_shards=1
|
|
{
|
|
"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 Parameters
|
|
`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
|
|
|
|
`indices[].shards[].follower_settings_version`::
|
|
(long) the index settings version the follower is synced up to
|
|
|
|
`indices[].shards[].follower_aliases_version`::
|
|
(long) the index aliases version the follower is synced up to
|
|
|
|
`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>>
|
|
|
|
==== 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].
|
|
|
|
==== Example
|
|
|
|
This example retrieves follower stats:
|
|
|
|
[source,js]
|
|
--------------------------------------------------
|
|
GET /follower_index/_ccr/stats
|
|
--------------------------------------------------
|
|
// CONSOLE
|
|
|
|
The API returns the following results:
|
|
|
|
[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,
|
|
"follower_settings_version" : 2,
|
|
"follower_aliases_version" : 8,
|
|
"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/]
|
|
// TESTRESPONSE[s/"follower_settings_version" : 2/"follower_settings_version" : $body.indices.0.shards.0.follower_settings_version/]
|
|
// TESTRESPONSE[s/"follower_aliases_version" : 8/"follower_aliases_version" : $body.indices.0.shards.0.follower_aliases_version/]
|
|
// 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/]
|