[[cluster-nodes-stats]]
== Nodes Stats

[float]
=== Nodes statistics

The cluster nodes stats API allows to retrieve one or more (or all) of
the cluster nodes statistics.

[source,js]
--------------------------------------------------
curl -XGET 'http://localhost:9200/_nodes/stats'
curl -XGET 'http://localhost:9200/_nodes/nodeId1,nodeId2/stats'
--------------------------------------------------

The first command retrieves stats of all the nodes in the cluster. The
second command selectively retrieves nodes stats of only `nodeId1` and
`nodeId2`. All the nodes selective options are explained
<<cluster-nodes,here>>.

By default, all stats are returned. You can limit this by combining any
of `indices`, `os`, `process`, `jvm`, `transport`, `http`,
`fs`, `breaker` and `thread_pool`. For example:

[horizontal]
`indices`::
	Indices stats about size, document count, indexing and
	deletion times, search times, field cache size, merges and flushes

`fs`::
	File system information, data path, free disk space, read/write
	stats (see <<fs-info,FS information>>)

`http`::
	HTTP connection information

`jvm`::
	JVM stats, memory pool information, garbage collection, buffer
	pools, number of loaded/unloaded classes

`os`::
	Operating system stats, load average, mem, swap
	(see <<os-stats,OS statistics>>)

`process`::
	Process statistics, memory consumption, cpu usage, open
	file descriptors (see <<process-stats,Process statistics>>)

`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

`breaker`::
	Statistics about the field data circuit breaker

`discovery`::
	Statistics about the discovery

[source,js]
--------------------------------------------------
# return indices and os
curl -XGET 'http://localhost:9200/_nodes/stats/os'
# return just os and process
curl -XGET 'http://localhost:9200/_nodes/stats/os,process'
# specific type endpoint
curl -XGET 'http://localhost:9200/_nodes/stats/process'
curl -XGET 'http://localhost:9200/_nodes/10.0.0.1/stats/process'
--------------------------------------------------

The `all` flag can be set to return all the stats.

[float]
[[fs-info]]
==== FS information

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

`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.data.spins` (Linux only)::
	Indicates if the file store is backed by spinning storage.
	`null` means we could not determine it, `true` means the device possibly spins
	 and `false` means it does not (ex: solid-state disks).

[float]
[[os-stats]]
==== Operating System statistics

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`::
	Array of system load averages for the last one minute, five
	minute and fifteen minutes (value of -1 indicates not supported)

`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


[float]
[[process-stats]]
==== Process statistics

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


[float]
[[field-data]]
=== Field data statistics

You can get information about field data memory usage on node
level or on index level.

[source,js]
--------------------------------------------------
# Node Stats
curl -XGET 'http://localhost:9200/_nodes/stats/indices/?fields=field1,field2&pretty'

# Indices Stat
curl -XGET 'http://localhost:9200/_stats/fielddata/?fields=field1,field2&pretty'

# You can use wildcards for field names
curl -XGET 'http://localhost:9200/_stats/fielddata/?fields=field*&pretty'
curl -XGET 'http://localhost:9200/_nodes/stats/indices/?fields=field*&pretty'
--------------------------------------------------

[float]
[[search-groups]]
=== Search groups

You can get statistics about search groups for searches executed
on this node.

[source,js]
--------------------------------------------------
# All groups with all stats
curl -XGET 'http://localhost:9200/_nodes/stats?pretty&groups=_all'

# Some groups from just the indices stats
curl -XGET 'http://localhost:9200/_nodes/stats/indices?pretty&groups=foo,bar'
--------------------------------------------------
