[[cluster-nodes-stats]]
=== Nodes stats API
++++
Nodes stats
++++
Returns cluster nodes statistics.
[[cluster-nodes-stats-api-request]]
==== {api-request-title}
`GET /_nodes/stats` +
`GET /_nodes//stats` +
`GET/_nodes/stats/` +
`GET/_nodes//stats/` +
`GET /_nodes/stats//` +
`GET /_nodes//stats//`
[[cluster-nodes-stats-api-desc]]
==== {api-description-title}
You can use the cluster nodes stats API to retrieve statistics for nodes in a cluster.
All the nodes selective options are explained <>.
By default, all stats are returned. You can limit the returned information by
using metrics.
[[cluster-nodes-stats-api-path-params]]
==== {api-path-parms-title}
``::
(Optional, string) Limits the information returned to the specific metrics.
A comma-separated list of the following options:
+
--
`adaptive_selection`::
Statistics about <>.
`breaker`::
Statistics about the field data circuit breaker.
`discovery`::
Statistics about the discovery.
`fs`::
File system information, data path, free disk space, read/write
stats.
`http`::
HTTP connection information.
`indices`::
Indices stats about size, document count, indexing and deletion times,
search times, field cache size, merges and flushes.
`ingest`::
Statistics about ingest preprocessing.
`jvm`::
JVM stats, memory pool information, garbage collection, buffer
pools, number of loaded/unloaded classes.
`os`::
Operating system stats, load average, mem, swap.
`process`::
Process statistics, memory consumption, cpu usage, open
file descriptors.
`thread_pool`::
Statistics about each thread pool, including current size, queue and
rejected tasks.
`transport`::
Transport statistics about sent and received bytes in cluster
communication.
--
``::
(Optional, string) Limit the information returned for `indices` metric to
the specific index metrics. It can be used only if `indices` (or `all`)
metric is specified. Supported metrics are:
+
--
* `completion`
* `docs`
* `fielddata`
* `flush`
* `get`
* `indexing`
* `merge`
* `query_cache`
* `recovery`
* `refresh`
* `request_cache`
* `search`
* `segments`
* `store`
* `translog`
* `warmer`
--
include::{docdir}/rest-api/common-parms.asciidoc[tag=node-id]
[[cluster-nodes-stats-api-query-params]]
==== {api-query-parms-title}
include::{docdir}/rest-api/common-parms.asciidoc[tag=completion-fields]
include::{docdir}/rest-api/common-parms.asciidoc[tag=fielddata-fields]
include::{docdir}/rest-api/common-parms.asciidoc[tag=fields]
include::{docdir}/rest-api/common-parms.asciidoc[tag=groups]
include::{docdir}/rest-api/common-parms.asciidoc[tag=level]
`types`::
(Optional, string) A comma-separated list of document types for the
`indexing` index metric.
include::{docdir}/rest-api/common-parms.asciidoc[tag=timeoutparms]
include::{docdir}/rest-api/common-parms.asciidoc[tag=include-segment-file-sizes]
[[cluster-nodes-stats-api-response-body]]
==== {api-response-body-title}
[[cluster-nodes-stats-api-response-body-indices]]
===== `indices` section
`indices.docs.count`::
(integer)
include::{docdir}/rest-api/common-parms.asciidoc[tag=docs-count]
`indices.docs.deleted`::
(integer)
include::{docdir}/rest-api/common-parms.asciidoc[tag=docs-deleted]
`indices.store.size_in_bytes`::
(integer)
Size, in bytes, of the store.
`indices.indexing.index_total`::
(integer)
Total number of indexing operations.
`indices.indexing.index_time_in_millis`::
(integer)
Total time in milliseconds
spent performing indexing operations.
`indices.indexing.index_current`::
(integer)
Number of indexing operations currently running.
`indices.indexing.index_failed`::
(integer)
Number of failed indexing operations.
`indices.indexing.delete_total`::
(integer)
Total number of deletion operations.
`indices.indexing.delete_time_in_millis`::
(integer)
Time in milliseconds
spent performing deletion operations.
`indices.indexing.delete_current`::
(integer)
Number of deletion operations currently running.
`indices.indexing.noop_update_total`::
(integer)
Total number of noop operations.
`indices.indexing.is_throttled`::
(boolean)
Number of times
operations were throttled.
`indices.indexing.throttle_time_in_millis`::
(integer)
Total time in milliseconds
spent throttling operations.
`indices.get.total`::
(integer)
Total number of get operations.
`indices.get.time_in_millis`::
(integer)
Time in milliseconds
spent performing get operations.
`indices.get.exists_total`::
(integer)
Total number of successful get operations.
`indices.get.exists_time_in_millis`::
(integer)
Time in milliseconds
spent performing successful get operations.
`indices.get.missing_total`::
(integer)
Total number of failed get operations.
`indices.get.missing_time_in_millis`::
(integer)
Time in milliseconds
spent performing failed get operations.
`indices.get.current`::
(integer)
Number of get operations currently running.
`indices.search.open_context`::
(integer)
Number of open search contexts.
`indices.search.query_total`::
(integer)
Total number of query operations.
`indices.search.query_time_in_millis`::
(integer)
Time in milliseconds
spent performing query operations.
`indices.search.query_current`::
(integer)
Number of query operations currently running.
`indices.search.fetch_total`::
(integer)
Total number of fetch operations.
`indices.search.fetch_time_in_millis`::
(integer)
Time in milliseconds
spent performing fetch operations.
`indices.search.fetch_current`::
(integer)
Number of fetch operations currently running.
`indices.search.scroll_total`::
(integer)
Total number of scroll operations.
`indices.search.scroll_time_in_millis`::
(integer)
Time in milliseconds
spent performing scroll operations.
`indices.search.scroll_current`::
(integer)
Number of scroll operations currently running.
`indices.search.suggest_total`::
(integer)
Total number of suggest operations.
`indices.search.suggest_time_in_millis`::
(integer)
Time in milliseconds
spent performing suggest operations.
`indices.search.suggest_current`::
(integer)
Number of suggest operations currently running.
`indices.merges.current`::
(integer)
Number of merge operations currently running.
`indices.merges.current_docs`::
(integer)
Number of document merges currently running.
`indices.merges.current_size_in_bytes`::
(integer)
Memory, in bytes, used performing current document merges.
`indices.merges.total`::
(integer)
Total number of merge operations.
`indices.merges.total_time_in_millis`::
(integer)
Total time in milliseconds
spent performing merge operations.
`indices.merges.total_docs`::
(integer)
Total number of merged documents.
`indices.merges.total_size_in_bytes`::
(integer)
Total size of document merges in bytes.
`indices.merges.total_stopped_time_in_millis`::
(integer)
Total time in milliseconds
spent stopping merge operations.
`indices.merges.total_throttled_time_in_millis`::
(integer)
Total time in milliseconds
spent throttling merge operations.
`indices.merges.total_auto_throttle_in_bytes`::
(integer)
Total time in milliseconds
spent automatically throttling merge operations.
`indices.refresh.total`::
(integer)
Total number of refresh operations.
`indices.refresh.total_time_in_millis`::
(integer)
Total time in milliseconds
spent performing refresh operations.
`indices.refresh.external_total`::
(integer)
Total number of external refresh operations.
`indices.refresh.external_total_time_in_millis`::
(integer)
Total time in milliseconds
spent performing external operations.
`indices.refresh.listeners`::
(integer)
Number of refresh listeners.
`indices.flush.total`::
(integer)
Number of flush operations.
`indices.flush.periodic`::
(integer)
Number of flush periodic operations.
`indices.flush.total_time_in_millis`::
(integer)
Total time in milliseconds
spent performing flush operations.
`indices.warmer.current`::
(integer)
Number of active index warmers.
`indices.warmer.total`::
(integer)
Total number of index warmers.
`indices.warmer.total_time_in_millis`::
(integer)
Total time in milliseconds
spent performing index warming operations.
`indices.query_cache.memory_size_in_bytes`::
(integer)
Memory, in bytes, used for query cache.
`indices.query_cache.total_count`::
(integer)
Total count of hits, misses, and cached queries
in the query cache.
`indices.query_cache.hit_count`::
(integer)
Number of query cache hits.
`indices.query_cache.miss_count`::
(integer)
Number of query cache misses.
`indices.query_cache.cache_size`::
(integer)
Size, in bytes, of the query cache.
`indices.query_cache.cache_count`::
(integer)
Count of queries
in the query cache.
`indices.query_cache.evictions`::
(integer)
Number of query cache evictions.
`indices.fielddata.memory_size_in_bytes`::
(integer)
Memory, in bytes, used for fielddata cache.
`indices.fielddata.evictions`::
(integer)
Number of fielddata evictions.
`indices.completion.size_in_bytes`::
(integer)
Memory, in bytes, used for completion.
`indices.segments.count`::
(integer)
Number of segments.
`indices.segments.memory_in_bytes`::
(integer)
Size, in bytes, of segments.
`indices.segments.terms_memory_in_bytes`::
(integer)
Memory, in bytes, used of terms
in segments.
`indices.segments.stored_fields_memory_in_bytes`::
(integer)
Size, in bytes, of stored fields
in segments.
`indices.segments.term_vectors_memory_in_bytes`::
(integer)
Size, in bytes, of term vectors
in segments.
`indices.segments.norms_memory_in_bytes`::
(integer)
Size, in bytes, of normalization factors
in segments.
`indices.segments.points_memory_in_bytes`::
(integer)
Size, in bytes, of points
in segments.
`indices.segments.doc_values_memory_in_bytes`::
(integer)
Size, in bytes, of doc values
in segments.
`indices.segments.index_writer_memory_in_bytes`::
(integer)
Memory, in bytes, used by the index writer.
`indices.segments.version_map_memory_in_bytes`::
(integer)
Memory, in bytes, used by the version map.
`indices.segments.fixed_bit_set_memory_in_bytes`::
(integer)
Memory, in bytes,
used by fixed bit sets
for nested object field types
and type filters
for <> fields.
`indices.segments.max_unsafe_auto_id_timestamp`::
(integer)
Timestamp of the
most recent retry request.
`indices.segments.file_sizes.size_in_bytes`::
(integer)
Size, in bytes,
of the segment file.
`indices.segments.file_sizes.description`::
(string)
Description of the segment file.
`indices.translog.operations`::
(integer)
Number of transaction log operations.
`indices.translog.size_in_bytes`::
(integer)
Size, in bytes, of the transaction log.
`indices.translog.uncommitted_operations`::
(integer)
Number of uncommitted transaction log operations.
`indices.translog.uncommitted_size_in_bytes`::
(integer)
Size, in bytes, of uncommitted transaction log operations.
`indices.translog.earliest_last_modified_age`::
(integer)
Earliest last modified age
for the transaction log.
`indices.request_cache.memory_size_in_bytes`::
(integer)
Memory, in bytes, used by the request cache.
`indices.request_cache.evictions`::
(integer)
Number of request cache operations.
`indices.request_cache.hit_count`::
(integer)
Number of request cache hits.
`indices.request_cache.miss_count`::
(integer)
Number of request cache misses.
`indices.recovery.current_as_source`::
(integer)
Number of recoveries
that used an index shard as a source.
`indices.recovery.current_as_target`::
(integer)
Number of recoveries
that used an index shard as a target.
`indices.recovery.throttle_time_in_millis`::
(integer)
Time in milliseconds
recovery operations were delayed due to throttling.
[[cluster-nodes-stats-api-response-body-fs]]
===== `fs` section
`fs.timestamp`::
Last time the file stores statistics have been refreshed.
`fs.total.total_in_bytes`::
Total size (in bytes) of all file stores.
`fs.total.free_in_bytes`::
Total number of unallocated bytes in all file stores.
`fs.total.available_in_bytes`::
Total number of bytes available to this Java virtual machine on all file
stores. Depending on OS or process level restrictions, this might appear
less than `fs.total.free_in_bytes`. This is the actual amount of free disk
space the {es} node can utilise.
`fs.data`::
List of all file stores.
`fs.data.path`::
Path to the file store.
`fs.data.mount`::
Mount point of the file store (ex: /dev/sda2).
`fs.data.type`::
Type of the file store (ex: ext4).
`fs.data.total_in_bytes`::
Total size (in bytes) of the file store.
`fs.data.free_in_bytes`::
Total number of unallocated bytes in the file store.
`fs.data.available_in_bytes`::
Total number of bytes available to this Java virtual machine on this file
store.
`fs.io_stats.devices` (Linux only)::
Array of disk metrics for each device that is backing an {es} data path.
These disk metrics are probed periodically and averages between the last
probe and the current probe are computed.
`fs.io_stats.devices.device_name` (Linux only)::
The Linux device name.
`fs.io_stats.devices.operations` (Linux only)::
The total number of read and write operations for the device completed since
starting {es}.
`fs.io_stats.devices.read_operations` (Linux only)::
The total number of read operations for the device completed since starting
{es}.
`fs.io_stats.devices.write_operations` (Linux only)::
The total number of write operations for the device completed since starting
{es}.
`fs.io_stats.devices.read_kilobytes` (Linux only)::
The total number of kilobytes read for the device since starting {es}.
`fs.io_stats.devices.write_kilobytes` (Linux only)::
The total number of kilobytes written for the device since starting {es}.
`fs.io_stats.operations` (Linux only)::
The total number of read and write operations across all devices used by
{es} completed since starting {es}.
`fs.io_stats.read_operations` (Linux only)::
The total number of read operations for across all devices used by {es}
completed since starting {es}.
`fs.io_stats.write_operations` (Linux only)::
The total number of write operations across all devices used by {es}
completed since starting {es}.
`fs.io_stats.read_kilobytes` (Linux only)::
The total number of kilobytes read across all devices used by {es} since
starting {es}.
`fs.io_stats.write_kilobytes` (Linux only)::
The total number of kilobytes written across all devices used by {es} since
starting {es}.
[[cluster-nodes-stats-api-response-body-os]]
===== `os` section
`os.timestamp`::
Last time the operating system statistics have been refreshed.
`os.cpu.percent`::
Recent CPU usage for the whole system, or -1 if not supported.
`os.cpu.load_average.1m`::
One-minute load average on the system (field is not present if one-minute
load average is not available).
`os.cpu.load_average.5m`::
Five-minute load average on the system (field is not present if five-minute
load average is not available).
`os.cpu.load_average.15m`::
Fifteen-minute load average on the system (field is not present if
fifteen-minute load average is not available).
`os.mem.total_in_bytes`::
Total amount of physical memory in bytes.
`os.mem.free_in_bytes`::
Amount of free physical memory in bytes.
`os.mem.free_percent`::
Percentage of free memory.
`os.mem.used_in_bytes`::
Amount of used physical memory in bytes.
`os.mem.used_percent`::
Percentage of used memory.
`os.swap.total_in_bytes`::
Total amount of swap space in bytes.
`os.swap.free_in_bytes`::
Amount of free swap space in bytes.
`os.swap.used_in_bytes`::
Amount of used swap space in bytes.
`os.cgroup.cpuacct.control_group` (Linux only)::
The `cpuacct` control group to which the {es} process belongs.
`os.cgroup.cpuacct.usage_nanos` (Linux only)::
The total CPU time (in nanoseconds) consumed by all tasks in the same cgroup
as the {es} process.
`os.cgroup.cpu.control_group` (Linux only)::
The `cpu` control group to which the {es} process belongs.
`os.cgroup.cpu.cfs_period_micros` (Linux only)::
The period of time (in microseconds) for how regularly all tasks in the same
cgroup as the {es} process should have their access to CPU resources
reallocated.
`os.cgroup.cpu.cfs_quota_micros` (Linux only)::
The total amount of time (in microseconds) for which all tasks in
the same cgroup as the {es} process can run during one period
`os.cgroup.cpu.cfs_period_micros`.
`os.cgroup.cpu.stat.number_of_elapsed_periods` (Linux only)::
The number of reporting periods (as specified by
`os.cgroup.cpu.cfs_period_micros`) that have elapsed.
`os.cgroup.cpu.stat.number_of_times_throttled` (Linux only)::
The number of times all tasks in the same cgroup as the {es} process have
been throttled.
`os.cgroup.cpu.stat.time_throttled_nanos` (Linux only)::
The total amount of time (in nanoseconds) for which all tasks in the same
cgroup as the {es} process have been throttled.
`os.cgroup.memory.control_group` (Linux only)::
The `memory` control group to which the {es} process belongs.
`os.cgroup.memory.limit_in_bytes` (Linux only)::
The maximum amount of user memory (including file cache) allowed for all
tasks in the same cgroup as the {es} process. This value can be too big to
store in a `long`, so is returned as a string so that the value returned can
exactly match what the underlying operating system interface returns. Any
value that is too large to parse into a `long` almost certainly means no
limit has been set for the cgroup.
`os.cgroup.memory.usage_in_bytes` (Linux only)::
The total current memory usage by processes in the cgroup (in bytes) by all
tasks in the same cgroup as the {es} process. This value is stored as a
string for consistency with `os.cgroup.memory.limit_in_bytes`.
NOTE: For the cgroup stats to be visible, cgroups must be compiled into the
kernel, the `cpu` and `cpuacct` cgroup subsystems must be configured and stats
must be readable from `/sys/fs/cgroup/cpu` and `/sys/fs/cgroup/cpuacct`.
[[cluster-nodes-stats-api-response-body-process]]
===== `process` section
`process.timestamp`::
Last time the process statistics have been refreshed.
`process.open_file_descriptors`::
Number of opened file descriptors associated with the current process, or -1
if not supported.
`process.max_file_descriptors`::
Maximum number of file descriptors allowed on the system, or -1 if not
supported.
`process.cpu.percent`::
CPU usage in percent, or -1 if not known at the time the stats are computed
`process.cpu.total_in_millis`::
CPU time (in milliseconds) used by the process on which the Java virtual
machine is running, or -1 if not supported.
`process.mem.total_virtual_in_bytes`::
Size in bytes of virtual memory that is guaranteed to be available to the
running process.
[[cluster-nodes-stats-api-response-body-ingest]]
===== `ingest` section
`ingest.total.count`::
(integer)
Total number of documents ingested during the lifetime of this node.
`ingest.total.time_in_millis`::
(integer)
Total time spent preprocessing ingest documents during the lifetime of this
node.
`ingest.total.current`::
(integer)
Total number of documents currently being ingested.
`ingest.total.failed`::
(integer)
Total number of failed ingest operations during the lifetime of this node.
`ingest.pipelines..count`::
(integer)
Number of documents preprocessed by the ingest pipeline.
`ingest.pipelines..time_in_millis`::
(integer)
Total time spent preprocessing documents in the ingest pipeline.
`ingest.pipelines..failed`::
(integer)
Total number of failed operations for the ingest pipeline.
`ingest.pipelines...count`::
(integer)
Number of documents transformed by the processor.
`ingest.pipelines...time_in_millis`::
(integer)
Time spent by the processor transforming documents.
`ingest.pipelines...current`::
(integer)
Number of documents currently being transformed by the processor.
`ingest.pipelines...failed`::
(integer)
Number of failed operations for the processor.
[[cluster-nodes-stats-api-response-body-adaptive-selection]]
===== `adaptive_selection` section
The `adaptive_selection` statistics are keyed by node. For each node:
`adaptive_selection.outgoing_searches`::
The number of outstanding search requests from the node these stats are for
to the keyed node.
`avg_queue_size`::
The exponentially weighted moving average queue size of search requests on
the keyed node.
`avg_service_time_ns`::
The exponentially weighted moving average service time of search requests on
the keyed node.
`avg_response_time_ns`::
The exponentially weighted moving average response time of search requests
on the keyed node.
`rank`::
The rank of this node; used for shard selection when routing search
requests.
[[cluster-nodes-stats-api-example]]
==== {api-examples-title}
[source,console]
--------------------------------------------------
# return just indices
GET /_nodes/stats/indices
# return just os and process
GET /_nodes/stats/os,process
# return just process for node with IP address 10.0.0.1
GET /_nodes/10.0.0.1/stats/process
--------------------------------------------------
All stats can be explicitly requested via `/_nodes/stats/_all` or
`/_nodes/stats?metric=_all`.
You can get information about indices stats on `node`, `indices`, or `shards`
level.
[source,console]
--------------------------------------------------
# Fielddata summarized by node
GET /_nodes/stats/indices/fielddata?fields=field1,field2
# Fielddata summarized by node and index
GET /_nodes/stats/indices/fielddata?level=indices&fields=field1,field2
# Fielddata summarized by node, index, and shard
GET /_nodes/stats/indices/fielddata?level=shards&fields=field1,field2
# You can use wildcards for field names
GET /_nodes/stats/indices/fielddata?fields=field*
--------------------------------------------------
You can get statistics about search groups for searches executed
on this node.
[source,console]
--------------------------------------------------
# All groups with all stats
GET /_nodes/stats?groups=_all
# Some groups from just the indices stats
GET /_nodes/stats/indices?groups=foo,bar
--------------------------------------------------
[[cluster-nodes-stats-ingest-ex]]
===== Retrieve ingest statistics only
To return only ingest-related node statistics, set the `` path
parameter to `ingest` and use the
<> query parameter.
[source,console]
--------------------------------------------------
GET /_nodes/stats/ingest?filter_path=nodes.*.ingest
--------------------------------------------------
You can use the `metric` and `filter_path` query parameters to get the same
response.
[source,console]
--------------------------------------------------
GET /_nodes/stats?metric=ingest&filter_path=nodes.*.ingest
--------------------------------------------------
To further refine the response, change the `filter_path` value.
For example, the following request only returns ingest pipeline statistics.
[source,console]
--------------------------------------------------
GET /_nodes/stats?metric=ingest&filter_path=nodes.*.ingest.pipelines
--------------------------------------------------