The cluster nodes stats API allows to retrieve one or more (or all) of the cluster nodes statistics.
GET /_nodes/stats GET /_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
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:
|
Indices stats about size, document count, indexing and deletion times, search times, field cache size, merges and flushes |
|
File system information, data path, free disk space, read/write stats (see FS information) |
|
HTTP connection information |
|
JVM stats, memory pool information, garbage collection, buffer pools, number of loaded/unloaded classes |
|
Operating system stats, load average, mem, swap (see OS statistics) |
|
Process statistics, memory consumption, cpu usage, open file descriptors (see Process statistics) |
|
Statistics about each thread pool, including current size, queue and rejected tasks |
|
Transport statistics about sent and received bytes in cluster communication |
|
Statistics about the field data circuit breaker |
|
Statistics about the discovery |
|
Statistics about ingest preprocessing |
|
Statistics about adaptive replica selection. See adaptive selection statistics. |
# 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
.
The fs
flag can be set to retrieve
information that concern the file system:
fs.timestamp
fs.total.total_in_bytes
fs.total.free_in_bytes
fs.total.available_in_bytes
fs.total.free_in_bytes
.
This is the actual amount of free disk space the Elasticsearch node can utilise.
fs.data
fs.data.path
fs.data.mount
fs.data.type
fs.data.total_in_bytes
fs.data.free_in_bytes
fs.data.available_in_bytes
fs.data.spins
(Linux only)
null
means we could not determine it, true
means the device possibly spins
and false
means it does not (ex: solid-state disks).
fs.io_stats.devices
(Linux only)
fs.io_stats.devices.device_name
(Linux only)
fs.io_stats.devices.operations
(Linux only)
fs.io_stats.devices.read_operations
(Linux only)
fs.io_stats.devices.write_operations
(Linux only)
fs.io_stats.devices.read_kilobytes
(Linux only)
fs.io_stats.devices.write_kilobytes
(Linux only)
fs.io_stats.operations
(Linux only)
fs.io_stats.read_operations
(Linux only)
fs.io_stats.write_operations
(Linux only)
fs.io_stats.read_kilobytes
(Linux only)
fs.io_stats.write_kilobytes
(Linux only)
The os
flag can be set to retrieve statistics that concern
the operating system:
os.timestamp
os.cpu.percent
os.cpu.load_average.1m
os.cpu.load_average.5m
os.cpu.load_average.15m
os.mem.total_in_bytes
os.mem.free_in_bytes
os.mem.free_percent
os.mem.used_in_bytes
os.mem.used_percent
os.swap.total_in_bytes
os.swap.free_in_bytes
os.swap.used_in_bytes
os.cgroup.cpuacct.control_group
(Linux only)
cpuacct
control group to which the Elasticsearch process
belongs
os.cgroup.cpuacct.usage_nanos
(Linux only)
os.cgroup.cpu.control_group
(Linux only)
cpu
control group to which the Elasticsearch process belongs
os.cgroup.cpu.cfs_period_micros
(Linux only)
os.cgroup.cpu.cfs_quota_micros
(Linux only)
os.cgroup.cpu.cfs_period_micros
os.cgroup.cpu.stat.number_of_elapsed_periods
(Linux only)
os.cgroup.cpu.cfs_period_micros
) that have elapsed
os.cgroup.cpu.stat.number_of_times_throttled
(Linux only)
os.cgroup.cpu.stat.time_throttled_nanos
(Linux only)
os.cgroup.memory.control_group
(Linux only)
memory
control group to which the Elasticsearch process
belongs
os.cgroup.memory.limit_in_bytes
(Linux only)
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)
os.cgroup.memory.limit_in_bytes
.
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
.
The process
flag can be set to retrieve statistics that concern
the current running process:
process.timestamp
process.open_file_descriptors
process.max_file_descriptors
process.cpu.percent
process.cpu.total_in_millis
process.mem.total_virtual_in_bytes
You can get information about indices stats on node
, indices
, or shards
level.
# Fielddata summarised by node GET /_nodes/stats/indices/fielddata?fields=field1,field2 # Fielddata summarised by node and index GET /_nodes/stats/indices/fielddata?level=indices&fields=field1,field2 # Fielddata summarised 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*
Supported metrics are:
completion
docs
fielddata
flush
get
indexing
merge
query_cache
recovery
refresh
request_cache
search
segments
store
translog
warmer
You can get statistics about search groups for searches executed on this node.
# All groups with all stats GET /_nodes/stats?groups=_all # Some groups from just the indices stats GET /_nodes/stats/indices?groups=foo,bar
The ingest
flag can be set to retrieve statistics that concern ingest:
ingest.total.count
ingest.total.time_in_millis
ingest.total.current
ingest.total.failed
On top of these overall ingest statistics, these statistics are also provided on a per pipeline basis.
The adaptive_selection
flag can be set to retrieve statistics that concern
adaptive replica selection. These statistics are
keyed by node. For each node:
adaptive_selection.outgoing_searches
avg_queue_size
avg_service_time_ns
avg_response_time_ns
rank