[[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-fs]] ===== `fs` section The `fs` flag can be set to retrieve information that concern the file system: `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 The `os` flag can be set to retrieve statistics that concern the operating system: `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 The `process` flag can be set to retrieve statistics that concern the current running process: `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 The `ingest` flag can be set to retrieve statistics that concern ingest: `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` flag can be set to retrieve statistics that concern <>. These 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 --------------------------------------------------