mirror of
https://github.com/elastic/elasticsearch.git
synced 2025-06-29 01:44:36 -04:00
The docs for `GET _nodes/<node>/<metric>` omitted a couple of metrics and indicated that this API returned dynamic stats rather than static info. They also didn't mention that `_all` is a legal value, nor did it give a way to suppress all metrics even though this is possible. This commit adjusts the docs and adds tests to ensure that selecting metrics works as expected and to ensure that there is a future-proof legal way to suppress all metrics. Backport of #79223 Closes #79187 Co-authored-by: James Rodewig <40268737+jrodewig@users.noreply.github.com> Co-authored-by: James Rodewig <40268737+jrodewig@users.noreply.github.com>
367 lines
9.9 KiB
Text
367 lines
9.9 KiB
Text
[[cluster-nodes-info]]
|
|
=== Nodes info API
|
|
++++
|
|
<titleabbrev>Nodes info</titleabbrev>
|
|
++++
|
|
|
|
Returns cluster nodes information.
|
|
|
|
|
|
[[cluster-nodes-info-api-request]]
|
|
==== {api-request-title}
|
|
|
|
`GET /_nodes` +
|
|
|
|
`GET /_nodes/<node_id>` +
|
|
|
|
`GET /_nodes/<metric>` +
|
|
|
|
`GET /_nodes/<node_id>/<metric>`
|
|
|
|
[[cluster-nodes-info-api-prereqs]]
|
|
==== {api-prereq-title}
|
|
|
|
* If the {es} {security-features} are enabled, you must have the `monitor` or
|
|
`manage` <<privileges-list-cluster,cluster privilege>> to use this API.
|
|
|
|
|
|
[[cluster-nodes-info-api-desc]]
|
|
==== {api-description-title}
|
|
|
|
The cluster nodes info API allows to retrieve one or more (or all) of
|
|
the cluster nodes information. All the nodes selective options are explained
|
|
<<cluster-nodes,here>>.
|
|
|
|
By default, it returns all attributes and core settings for a node.
|
|
|
|
[role="child_attributes"]
|
|
[[cluster-nodes-info-api-path-params]]
|
|
==== {api-path-parms-title}
|
|
|
|
`<metric>`::
|
|
(Optional, string)
|
|
Limits the information returned to the specific metrics. Supports a
|
|
comma-separated list, such as `http,ingest`.
|
|
+
|
|
[%collapsible%open]
|
|
.Valid values for `<metric>`
|
|
====
|
|
`aggregations`::
|
|
Information about the available types of aggregation.
|
|
|
|
`http`::
|
|
Information about the HTTP interface of this node.
|
|
|
|
`indices`::
|
|
+
|
|
--
|
|
Node-level configuration related to indexing:
|
|
|
|
* `total_indexing_buffer`: the maximum size of the indexing buffer on this node.
|
|
--
|
|
|
|
`ingest`::
|
|
Information about ingest pipelines and processors.
|
|
|
|
`jvm`::
|
|
JVM information, including its name, its version, and its configuration.
|
|
|
|
`os`::
|
|
Operating system information, including its name and version.
|
|
|
|
`plugins`::
|
|
+
|
|
--
|
|
Details about the installed plugins and modules per node. The following
|
|
information is available for each plugin and module:
|
|
|
|
* `name`: plugin name
|
|
* `version`: version of Elasticsearch the plugin was built for
|
|
* `description`: short description of the plugin's purpose
|
|
* `classname`: fully-qualified class name of the plugin's entry point
|
|
* `has_native_controller`: whether or not the plugin has a native controller
|
|
process
|
|
--
|
|
|
|
`process`::
|
|
Process information, including the numeric process ID.
|
|
|
|
`settings`::
|
|
Lists all node settings in use as defined in the `elasticsearch.yml` file.
|
|
|
|
`thread_pool`::
|
|
Information about the configuration of each thread pool.
|
|
|
|
`transport`::
|
|
Information about the transport interface of the node.
|
|
====
|
|
|
|
If you use the full `GET /_nodes/<node_id>/<metric>` form of this API then you
|
|
can also request the metric `_all` to retrieve all metrics, or you can request
|
|
the metric `_none` to suppress all metrics and retrieve only the identity of
|
|
the node.
|
|
|
|
include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=node-id]
|
|
|
|
[[cluster-nodes-info-api-response-body]]
|
|
==== {api-response-body-title}
|
|
|
|
`build_hash`::
|
|
Short hash of the last git commit in this release.
|
|
|
|
`host`::
|
|
The node's host name.
|
|
|
|
`ip`::
|
|
The node's IP address.
|
|
|
|
`name`::
|
|
The node's name.
|
|
|
|
`total_indexing_buffer`::
|
|
Total heap allowed to be used to hold recently indexed
|
|
documents before they must be written to disk. This size is
|
|
a shared pool across all shards on this node, and is
|
|
controlled by <<indexing-buffer,Indexing Buffer settings>>.
|
|
|
|
`total_indexing_buffer_in_bytes`::
|
|
Same as `total_indexing_buffer`, but expressed in bytes.
|
|
|
|
`transport_address`::
|
|
Host and port where transport HTTP connections are accepted.
|
|
|
|
`version`::
|
|
{es} version running on this node.
|
|
|
|
The `os` flag can be set to retrieve information that concern the operating
|
|
system:
|
|
|
|
`os.refresh_interval_in_millis`::
|
|
Refresh interval for the OS statistics
|
|
|
|
`os.name`::
|
|
Name of the operating system (ex: Linux, Windows, Mac OS X)
|
|
|
|
`os.arch`::
|
|
Name of the JVM architecture (ex: amd64, x86)
|
|
|
|
`os.version`::
|
|
Version of the operating system
|
|
|
|
`os.available_processors`::
|
|
Number of processors available to the Java virtual machine
|
|
|
|
`os.allocated_processors`::
|
|
The number of processors actually used to calculate thread pool size. This
|
|
number can be set with the <<node.processors, `node.processors`>>
|
|
setting of a node and defaults to the number of processors reported by
|
|
the OS.
|
|
|
|
The `process` flag can be set to retrieve information that concern the current
|
|
running process:
|
|
|
|
`process.refresh_interval_in_millis`::
|
|
Refresh interval for the process statistics
|
|
|
|
`process.id`::
|
|
Process identifier (PID)
|
|
|
|
`process.mlockall`::
|
|
Indicates if the process address space has been successfully locked in memory
|
|
|
|
|
|
[[cluster-nodes-info-api-query-params]]
|
|
==== {api-query-parms-title}
|
|
|
|
include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=flat-settings]
|
|
|
|
include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=timeoutparms]
|
|
|
|
|
|
[[cluster-nodes-info-api-example]]
|
|
==== {api-examples-title}
|
|
|
|
[source,console]
|
|
--------------------------------------------------
|
|
# return just process
|
|
GET /_nodes/process
|
|
|
|
# same as above
|
|
GET /_nodes/_all/process
|
|
|
|
# return just jvm and process of only nodeId1 and nodeId2
|
|
GET /_nodes/nodeId1,nodeId2/jvm,process
|
|
|
|
# same as above
|
|
GET /_nodes/nodeId1,nodeId2/info/jvm,process
|
|
|
|
# return all the information of only nodeId1 and nodeId2
|
|
GET /_nodes/nodeId1,nodeId2/_all
|
|
--------------------------------------------------
|
|
|
|
The `_all` flag can be set to return all the information - or you can omit it.
|
|
|
|
|
|
[[cluster-nodes-info-api-example-plugins]]
|
|
===== Example for plugins metric
|
|
|
|
If `plugins` is specified, the result will contain details about the installed
|
|
plugins and modules:
|
|
|
|
[source,console]
|
|
--------------------------------------------------
|
|
GET /_nodes/plugins
|
|
--------------------------------------------------
|
|
// TEST[setup:node]
|
|
|
|
The API returns the following response:
|
|
|
|
[source,console-result]
|
|
--------------------------------------------------
|
|
{
|
|
"_nodes": ...
|
|
"cluster_name": "elasticsearch",
|
|
"nodes": {
|
|
"USpTGYaBSIKbgSUJR2Z9lg": {
|
|
"name": "node-0",
|
|
"transport_address": "192.168.17:9300",
|
|
"host": "node-0.elastic.co",
|
|
"ip": "192.168.17",
|
|
"version": "{version}",
|
|
"build_flavor": "{build_flavor}",
|
|
"build_type": "{build_type}",
|
|
"build_hash": "587409e",
|
|
"roles": [
|
|
"master",
|
|
"data",
|
|
"ingest"
|
|
],
|
|
"attributes": {},
|
|
"plugins": [
|
|
{
|
|
"name": "analysis-icu",
|
|
"version": "{version}",
|
|
"description": "The ICU Analysis plugin integrates Lucene ICU module into elasticsearch, adding ICU relates analysis components.",
|
|
"classname": "org.elasticsearch.plugin.analysis.icu.AnalysisICUPlugin",
|
|
"has_native_controller": false
|
|
}
|
|
],
|
|
"modules": [
|
|
{
|
|
"name": "lang-painless",
|
|
"version": "{version}",
|
|
"description": "An easy, safe and fast scripting language for Elasticsearch",
|
|
"classname": "org.elasticsearch.painless.PainlessPlugin",
|
|
"has_native_controller": false
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
--------------------------------------------------
|
|
// TESTRESPONSE[s/"_nodes": \.\.\./"_nodes": $body.$_path,/]
|
|
// TESTRESPONSE[s/"elasticsearch"/$body.cluster_name/]
|
|
// TESTRESPONSE[s/"USpTGYaBSIKbgSUJR2Z9lg"/\$node_name/]
|
|
// TESTRESPONSE[s/"name": "node-0"/"name": $body.$_path/]
|
|
// TESTRESPONSE[s/"transport_address": "192.168.17:9300"/"transport_address": $body.$_path/]
|
|
// TESTRESPONSE[s/"host": "node-0.elastic.co"/"host": $body.$_path/]
|
|
// TESTRESPONSE[s/"ip": "192.168.17"/"ip": $body.$_path/]
|
|
// TESTRESPONSE[s/"build_hash": "587409e"/"build_hash": $body.$_path/]
|
|
// TESTRESPONSE[s/"roles": \[[^\]]*\]/"roles": $body.$_path/]
|
|
// TESTRESPONSE[s/"attributes": \{[^\}]*\}/"attributes": $body.$_path/]
|
|
// TESTRESPONSE[s/"plugins": \[[^\]]*\]/"plugins": $body.$_path/]
|
|
// TESTRESPONSE[s/"modules": \[[^\]]*\]/"modules": $body.$_path/]
|
|
|
|
|
|
[[cluster-nodes-info-api-example-ingest]]
|
|
===== Example for ingest metric
|
|
|
|
If `ingest` is specified, the response contains details about the available
|
|
processors per node:
|
|
|
|
[source,console]
|
|
--------------------------------------------------
|
|
GET /_nodes/ingest
|
|
--------------------------------------------------
|
|
// TEST[setup:node]
|
|
|
|
The API returns the following response:
|
|
|
|
[source,console-result]
|
|
--------------------------------------------------
|
|
{
|
|
"_nodes": ...
|
|
"cluster_name": "elasticsearch",
|
|
"nodes": {
|
|
"USpTGYaBSIKbgSUJR2Z9lg": {
|
|
"name": "node-0",
|
|
"transport_address": "192.168.17:9300",
|
|
"host": "node-0.elastic.co",
|
|
"ip": "192.168.17",
|
|
"version": "{version}",
|
|
"build_flavor": "{build_flavor}",
|
|
"build_type": "{build_type}",
|
|
"build_hash": "587409e",
|
|
"roles": [],
|
|
"attributes": {},
|
|
"ingest": {
|
|
"processors": [
|
|
{
|
|
"type": "date"
|
|
},
|
|
{
|
|
"type": "uppercase"
|
|
},
|
|
{
|
|
"type": "set"
|
|
},
|
|
{
|
|
"type": "lowercase"
|
|
},
|
|
{
|
|
"type": "gsub"
|
|
},
|
|
{
|
|
"type": "convert"
|
|
},
|
|
{
|
|
"type": "remove"
|
|
},
|
|
{
|
|
"type": "fail"
|
|
},
|
|
{
|
|
"type": "foreach"
|
|
},
|
|
{
|
|
"type": "split"
|
|
},
|
|
{
|
|
"type": "trim"
|
|
},
|
|
{
|
|
"type": "rename"
|
|
},
|
|
{
|
|
"type": "join"
|
|
},
|
|
{
|
|
"type": "append"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
--------------------------------------------------
|
|
// TESTRESPONSE[s/"_nodes": \.\.\./"_nodes": $body.$_path,/]
|
|
// TESTRESPONSE[s/"elasticsearch"/$body.cluster_name/]
|
|
// TESTRESPONSE[s/"USpTGYaBSIKbgSUJR2Z9lg"/\$node_name/]
|
|
// TESTRESPONSE[s/"name": "node-0"/"name": $body.$_path/]
|
|
// TESTRESPONSE[s/"transport_address": "192.168.17:9300"/"transport_address": $body.$_path/]
|
|
// TESTRESPONSE[s/"host": "node-0.elastic.co"/"host": $body.$_path/]
|
|
// TESTRESPONSE[s/"ip": "192.168.17"/"ip": $body.$_path/]
|
|
// TESTRESPONSE[s/"build_hash": "587409e"/"build_hash": $body.$_path/]
|
|
// TESTRESPONSE[s/"roles": \[[^\]]*\]/"roles": $body.$_path/]
|
|
// TESTRESPONSE[s/"attributes": \{[^\}]*\}/"attributes": $body.$_path/]
|
|
// TESTRESPONSE[s/"processors": \[[^\]]*\]/"processors": $body.$_path/]
|