184 lines
5.8 KiB
Plaintext
184 lines
5.8 KiB
Plaintext
[role="xpack"]
|
|
[[monitoring-metricbeat]]
|
|
=== Monitoring {kib} with {metricbeat}
|
|
|
|
beta[] In 6.4 and later, you can use {metricbeat} to collect data about {kib}
|
|
and ship it to the monitoring cluster, rather than routing it through the
|
|
production cluster as described in <<monitoring-kibana>>.
|
|
|
|
image::monitoring/images/metricbeat.png[Example monitoring architecture]
|
|
|
|
To learn about monitoring in general, see
|
|
{stack-ov}/xpack-monitoring.html[Monitoring the {stack}].
|
|
|
|
. Enable the collection of monitoring data. Set
|
|
`xpack.monitoring.collection.enabled` to `true` on the production cluster. +
|
|
+
|
|
--
|
|
For example, you can use the following APIs to review and change this setting:
|
|
|
|
[source,js]
|
|
----------------------------------
|
|
GET _cluster/settings
|
|
|
|
PUT _cluster/settings
|
|
{
|
|
"persistent": {
|
|
"xpack.monitoring.collection.enabled": true
|
|
}
|
|
}
|
|
----------------------------------
|
|
|
|
For more information, see {ref}/monitoring-settings.html[Monitoring settings in {es}]
|
|
and {ref}/cluster-update-settings.html[Cluster update settings].
|
|
--
|
|
|
|
. Disable the default collection of {kib} monitoring metrics. +
|
|
+
|
|
--
|
|
Add the following setting in the {kib} configuration file (`kibana.yml`):
|
|
|
|
[source,yaml]
|
|
----------------------------------
|
|
xpack.monitoring.kibana.collection.enabled: false
|
|
----------------------------------
|
|
|
|
Leave the `xpack.monitoring.enabled` set to its default value (`true`).
|
|
|
|
For more information, see
|
|
<<monitoring-settings-kb,Monitoring settings in {kib}>>.
|
|
--
|
|
|
|
. {metricbeat-ref}/metricbeat-installation.html[Install {metricbeat}] on the
|
|
same server as {kib}.
|
|
|
|
. Enable the {kib} module in {metricbeat}. +
|
|
+
|
|
--
|
|
For example, to enable the default configuration in the `modules.d` directory,
|
|
run the following command:
|
|
|
|
["source","sh",subs="attributes,callouts"]
|
|
----------------------------------------------------------------------
|
|
metricbeat modules enable kibana
|
|
----------------------------------------------------------------------
|
|
|
|
For more information, see
|
|
{metricbeat-ref}/configuration-metricbeat.html[Specify which modules to run] and
|
|
{metricbeat-ref}/metricbeat-module-kibana.html[{kib} module].
|
|
--
|
|
|
|
. Configure the {kib} module in {metricbeat}. +
|
|
+
|
|
--
|
|
You must specify the following settings in the `modules.d/kibana.yml` file:
|
|
|
|
[source,yaml]
|
|
----------------------------------
|
|
- module: kibana
|
|
metricsets:
|
|
- stats
|
|
period: 10s
|
|
hosts: ["http://localhost:5601"] <1>
|
|
xpack.enabled: true
|
|
----------------------------------
|
|
<1> This setting identifies the host and port number that are used to access {kib}.
|
|
|
|
--
|
|
|
|
. If {security} is enabled, you must also provide a user ID and password so that
|
|
{metricbeat} can collect metrics successfully.
|
|
|
|
.. Create or identify a user that you want to use to collect the metrics.
|
|
+
|
|
--
|
|
TIP: There is a `remote_monitoring_user` built-in user that grants the privileges
|
|
necessary for {metricbeat} to monitor {stack} products. See
|
|
{stack-ov}/built-in-users.html[Built-in users].
|
|
|
|
Alternatively, you can choose a different user and give them the
|
|
`remote_monitoring_collector` {stack-ov}/built-in-roles.html[built-in role].
|
|
--
|
|
|
|
.. Add the `username` and `password` settings to the {kib} module configuration
|
|
file.
|
|
+
|
|
--
|
|
For example, add the following settings in the `modules.d/kibana.yml` file:
|
|
|
|
[source,yaml]
|
|
----------------------------------
|
|
- module: kibana
|
|
...
|
|
username: remote_monitoring_user
|
|
password: YOUR_PASSWORD
|
|
----------------------------------
|
|
--
|
|
|
|
. If you configured {kib} to use <<configuring-tls,encrypted communications>>,
|
|
you must access it via HTTPS. For example, use a `hosts` setting like
|
|
`https://localhost:5601` in the `modules.d/kibana.yml` file.
|
|
|
|
. Identify where to send the monitoring data. +
|
|
+
|
|
--
|
|
TIP: In production environments, we strongly recommend using a separate cluster
|
|
(referred to as the _monitoring cluster_) to store the data. Using a separate
|
|
monitoring cluster prevents production cluster outages from impacting your
|
|
ability to access your monitoring data. It also prevents monitoring activities
|
|
from impacting the performance of your production cluster.
|
|
|
|
For example, specify the {es} output information in the {metricbeat}
|
|
configuration file (`metricbeat.yml`):
|
|
|
|
[source,yaml]
|
|
----------------------------------
|
|
output.elasticsearch:
|
|
hosts: ["http://es-mon-1:9200", "http://es-mon2:9200"] <1>
|
|
----------------------------------
|
|
<1> In this example, the data is stored on a monitoring cluster with nodes
|
|
`es-mon-1` and `es-mon-2`.
|
|
|
|
For more information about these configuration options, see
|
|
{metricbeat-ref}/elasticsearch-output.html[Configure the {es} output].
|
|
|
|
--
|
|
|
|
. If {security} is enabled on the monitoring cluster, you must provide a valid
|
|
user ID and password so that {metricbeat} can send metrics successfully.
|
|
|
|
.. Create or identify a user that you want to use to send the metrics.
|
|
+
|
|
--
|
|
TIP: There is a `remote_monitoring_user` built-in user that grants the privileges
|
|
necessary for {metricbeat} to monitor {stack} products. See
|
|
{stack-ov}/built-in-users.html[Built-in users].
|
|
|
|
Alternatively, you can choose a different user and give them the
|
|
`remote_monitoring_agent` {stack-ov}/built-in-roles.html[built-in role].
|
|
--
|
|
|
|
.. Add the `username` and `password` settings to the {es} output information in
|
|
the {metricbeat} configuration file (`metricbeat.yml`):
|
|
+
|
|
--
|
|
[source,yaml]
|
|
----------------------------------
|
|
output.elasticsearch:
|
|
...
|
|
username: remote_monitoring_user
|
|
password: YOUR_PASSWORD
|
|
----------------------------------
|
|
--
|
|
|
|
. If you configured the monitoring cluster to use
|
|
{ref}/configuring-tls.html[encrypted communications], you must access it via
|
|
HTTPS. For example, use a `hosts` setting like `https://es-mon-1:9200` in the
|
|
`metricbeat.yml` file.
|
|
|
|
. <<start-stop,Start {kib}>>.
|
|
|
|
. {metricbeat-ref}/metricbeat-starting.html[Start {metricbeat}].
|
|
|
|
. <<monitoring-data,View the monitoring data in {kib}>>.
|