原英文版地址: https://www.elastic.co/guide/en/elasticsearch/reference/7.7/monitoring-settings.html, 原文档版权归 www.elastic.co 所有
本地英文版地址: ../en/monitoring-settings.html

监控设置 (Monitoring settings in Elasticsearch)

默认情况下,监控是开启的,但数据收集是禁用的。 要开启数据收集,使用 xpack.monitoring.collection.enabled 设置。

你可以在文件 elasticsearch.yml 中配置这些监控设置。 你还可以使用集群更新设置 API动态的更新一部分设置。

集群设置优先于elasticsearch.yml文件中的设置。

要调整监控数据在监控UI中的显示方式,请在kibana.yml中配置xpack.monitoring 设置。 若要控制如何从 Logstash 收集监控数据,请在logstash.yml中配置监控设置。

更多信息请参考 监控一个集群

常规监控设置

xpack.monitoring.enabled

设置为 true(默认) 以在节点上启用 Elasticsearch X-Pack 对 Elasticsearch 的监控。

要启用数据收集,必须设置 xpack.monitoring.collection.enabledtrue。默认为 false

监控收集设置 (Monitoring Collection Settings)

xpack.monitoring.collection 设置控制如何从 Elasticsearch 节点收集数据。可以使用 集群更新设置 API 动态地更新所有监控收集的设置。

xpack.monitoring.collection.enabled (动态)
[6.3.0] 在 6.3.0 版本中添加的。 设置为 true 以开启监控数据的收集。当这个设置为 false (默认值)时,Elasticsearch 监控数据不会被收集,且所有来自其他源(比如Kibana,Beats和 Logstash)的监控数据都会被忽略。
xpack.monitoring.collection.interval (动态)

从 7.0.0 开始,不再支持设置为-1以禁用数据收集。[6.3.0]在 6.3.0 版本中废弃。请使用 设置xpack.monitoring.collection.enabledfalse 代替之。

控制收集数据样本的频率。默认为 10s。如果你修改了收集的间隔时间,请在kibana.yml中将xpack.monitoring.min_interval_seconds选项设置为相同的值。

xpack.monitoring.elasticsearch.collection.enabled (动态)
控制是否应收集有关 Elasticsearch 集群的统计数据。默认为 true。与 xpack.monitoring.collection.enabled 不同的是,它允许你启用或禁用所有监控的数据收集。然而,该设置只是禁用 Elasticsearch 数据的收集,仍然允许其他数据(例如,Kibana、Logstash、Beats 或 APM 服务器监控数据)通过该集群。
xpack.monitoring.collection.cluster.stats.timeout (动态)
(time value) 收集集群统计信息的超时时间。默认为 10s
xpack.monitoring.collection.node.stats.timeout (动态)
(time value) 收集节点统计信息的超时时间。默认为 10s
xpack.monitoring.collection.indices (动态)
控制监控要从哪些索引收集数据。默认为所有索引。 以逗号分隔的列表形式指定索引名称,例如 test1,test2,test3。 名称可以包含通配符,比如 test*。可以用-作为前缀来显式指定要排除的索引。 比如,test*,-test3 将监控所有以 test 开头的索引,但是test3除外。 系统索引,像 .security* 或 .kibana* 总是以.开头的,通常是应该被监控的。 考虑添加.*到索引列表中,以确保对系统索引的监控,比如.*,test*,-test3
xpack.monitoring.collection.index.stats.timeout (动态)
(time value) 收集索引的统计信息的超时时间。默认为 10s
xpack.monitoring.collection.index.recovery.active_only (动态)
控制是否要收集所有的 恢复(reovery)。设置为 true,只收集活动中的恢复。默认为 false.
xpack.monitoring.collection.index.recovery.timeout (动态)
(time value) 收集恢复信息的超时时间。默认为 10s
xpack.monitoring.history.duration (动态)

(time value) 保留期限,超过该期限,由监控导出程序创建的索引将被自动删除。默认为7d (7天)。

这个设置有一个最小值 1d (1天),以确保有一些内容受到监控,且不可以禁用。

这个设置只影响local类型的导出程序。使用http导出程序建立的索引不会被自动删除。

xpack.monitoring.exporters
配置代理存储监控数据的位置。默认情况下,代理使用本地导出器,该导出器在其安装的集群上索引监控数据。使用 HTTP 导出器将数据发送到单独的监控集群。 更多信息,请参考 本地导出器设置, HTTP 导出器设置 以及 监控是如何工作的.

本地导出器设置 (Local Exporter Settings)

local导出器是监控使用的默认的导出器。顾名思义,它将数据导出到本地(local)集群,这意味着不需要太多配置。

如果你未提供任何(any)导出器,那么监控会自动为你创建一个。只要提供了任意一个导出器,都不会再添加默认值。

xpack.monitoring.exporters.my_local:
  type: local
type
本地导出器的值必须始终是 local,且是必需的。
use_ingest
是否为集群提供 占位符管道(placeholder pipeline),并为每个批量请求提供 管道处理器(pipeline processor)。默认为 true。如果禁用,则意味着它将不会使用管道,这意味着未来的版本无法自动将批量请求升级为 符合未来要求的(future-proof) 请求。
cluster_alerts.management.enabled
是否为此集群创建集群警报。默认值为 true。要使用此特性,必须启用 Watcher。如果你用的是基础许可证,集群警报不会显示。

HTTP导出器设置 (HTTP Exporter Settings)

下面列出了http导出器可以提供的设置。所有设置都在选择了导出器名称之后显示:

xpack.monitoring.exporters.my_remote:
  type: http
  host: ["host:port", ...]
type
HTTP 导出器的值必须始终是http,且是必需的。
host

host支持多种格式,既可以是数组,也可以是单个值。 支持的格式包括 hostname, hostname:porthttp://hostname http://hostname:porthttps://hostname 以及 https://hostname:port。主机不能被假设,必须真实存在。 如果未在host字符串中指定,则默认的 模式(schema) 始终是 http,默认的 端口(port) 始终是9200

xpack.monitoring.exporters:
  example1:
    type: http
    host: "10.1.2.3"
  example2:
    type: http
    host: ["http://10.1.2.4"]
  example3:
    type: http
    host: ["10.1.2.5", "10.1.2.6"]
  example4:
    type: http
    host: ["https://10.1.2.3:9200"]
auth.username
如果提供了auth.secure_password Huo auth.password,则 username 是必须的。
auth.secure_password (安全设置, 可重新加载的)
auth.username的密码。 如果还指定了auth.password,则它优先级更高。
auth.password
auth.username的密码。 如果还指定了auth.secure_password,则它会被忽略。

在 7.7.0 中废弃!

请使用 auth.secure_password 替代之。

connection.timeout
(time value) HTTP 连接等待套接字为请求打开的时间。默认值为 6s
connection.read_timeout
(time value) HTTP 连接等待套接字发回响应的时间。默认为 10 * connection.timeout (当 time_out 和 real_timeout 两个都未设置时为60s)。
ssl
每个 HTTP 导出器可以定义自己的 TLS / SSL 设置或继承它们。 参考下面的 TLS / SSL 部分。
proxy.base_path
作为任何传出请求前缀的基本路径,诸如/base/path(例如,批量请求将作为/base/path/_bulk发送)。没有默认值。
headers

添加到每个请求中的可选的 header,有助于通过代理路由请求。

xpack.monitoring.exporters.my_remote:
  headers:
    X-My-Array: [abc, def, xyz]
    X-My-Header: abc123

基于数组的 header 被发送n次,其中n是数组的大小。 不能设置Content-TypeContent-Length。 监控代理创建的任何 header 都将覆盖此处定义的任何内容。

index.name.time_format
一种机制,用于更改默认情况下每日监控索引的默认日期后缀。 默认为 yyyy.MM.dd,这就是每天创建索引的原因。
use_ingest
是否为集群提供 占位符管道(placeholder pipeline),并为每个批量请求提供 管道处理器(pipeline processor)。默认为 true。如果禁用,则意味着它将不会使用管道,这意味着未来的版本无法自动将批量请求升级为 符合未来要求的(future-proof) 请求。
cluster_alerts.management.enabled
是否为此集群创建集群警报。默认为 true。 要使用此特性,必须启用 Watcher。如果你用的是基础许可证,集群警报不会显示。
cluster_alerts.management.blacklist

防止创建特定的集群警报。它还会删除当前集群中已经存在的任何可用的观察器。

可以将以下任何观察标识符添加到阻止的警报列表中:

  • elasticsearch_cluster_status
  • elasticsearch_version_mismatch
  • elasticsearch_nodes
  • kibana_version_mismatch
  • logstash_version_mismatch
  • xpack_license_expiration

比如:["elasticsearch_version_mismatch","xpack_license_expiration"]

X-Pack 监控 TLS/SSL 的设置

可以配置以下 TLS/SSL 设置。

xpack.monitoring.exporters.$NAME.ssl.supported_protocols

支持的协议版本。可用的协议有: SSLv2HelloSSLv3TLSv1TLSv1.1TLSv1.2TLSv1.3。 如果 JVM 的提供者支持 TLSv1.3,则默认为 TLSv1.3,TLSv1.2,TLSv1.1。 否则,默认为 TLSv1.2,TLSv1.1

如果 xpack.security.fips_mode.enabledtrue,则你不能使用 SSLv2HelloSSLv3。 参考 FIPS 140-2

xpack.monitoring.exporters.$NAME.ssl.verification_mode

控制证书的验证。有效值包括:

  • full,验证所提供的证书是否由可信机构(CA)签名,还验证服务器的主机名(或IP地址)是否与证书中标识的名称匹配。
  • certificate,用于验证所提供的证书是否由可信机构(CA)签名,但不执行任何主机名验证。
  • none不验证服务器的证书。 这种模式禁用了 SSL/TLS 的许多安全优势,并且应该在非常谨慎的考虑之后才使用。 它主要用作尝试解决 TLS 错误时的临时诊断机制;强烈建议不要在生产集群上使用它。

    默认为 full

xpack.monitoring.exporters.$NAME.ssl.cipher_suites

支持的密码套件因使用的 Java 版本而异。例如,对于版本11,默认值为 TLS_AES_256_GCM_SHA384, TLS_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_256_GCM_SHA384, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA.

上面列出的默认密码套件包括 TLSv1.3 密码和需要 Java 加密扩展(JCE)无限强度权限策略文件进行256位 AES 加密的密码。 如果 TLSv1.3 不可用,则 TLSv1.3 密码 TLS_AES_256_GCM_SHA384TLS_AES_128_GCM_SHA256 不会包括在默认列表中。 如果 256-bit AES 不可用,则名字中有AES_256的密码不会包含在默认列表中。 最后,AES GCM 在 Java 11 之前的版本中存在已知的性能问题,只有在使用 Java 11 或更高版本时才会包含在默认列表中。

有关更多信息,请参见Oracle的 Java加密体系结构文档

X-Pack监控TLS/SSL密钥和可信证书设置 (X-Pack monitoring TLS/SSL key and trusted certificate settings)

下列设置用于指定通过SSL/TLS连接通信时应使用的私钥、证书和可信证书。 私钥和证书是可选的,如果服务器需要客户端身份验证来进行PKI身份验证,就会使用它们。

PEM编码文件 (PEM encoded files)

使用PEM编码文件时,请使用以下设置:

xpack.monitoring.exporters.$NAME.ssl.key
包含私钥的PEM编码文件的路径。
xpack.monitoring.exporters.$NAME.ssl.key_passphrase
用于解密私钥的密码。因为密钥可能没有加密,所以这个值是可选的。
xpack.monitoring.exporters.$NAME.ssl.secure_key_passphrase (安全设置)
用于解密私钥的密码。 因为密钥可能没有加密,所以这个值是可选的。
xpack.monitoring.exporters.$NAME.ssl.certificate
指定与密钥关联的 PEM 编码证书(或证书链)的路径。
xpack.monitoring.exporters.$NAME.ssl.certificate_authorities
应该受信任的 PEM 编码证书文件的路径列表。

Java密钥库文件 (Java keystore files)

Java 密钥库文件(JKS)包含私钥、证书和应该信任的证书,使用时请使用以下设置:

xpack.monitoring.exporters.$NAME.ssl.keystore.path
包含私钥和证书的密钥库文件的路径。
xpack.monitoring.exporters.$NAME.ssl.keystore.password
密钥库的密码。
xpack.monitoring.exporters.$NAME.ssl.keystore.secure_password (安全设置)
密钥库的密码。
xpack.monitoring.exporters.$NAME.ssl.keystore.key_password
密钥库中密钥的密码。默认值是 密钥库密码(keystore password)。
xpack.monitoring.exporters.$NAME.ssl.keystore.secure_key_password (安全设置)
密钥库中密钥的密码。默认值是 密钥库密码(keystore password)。
xpack.monitoring.exporters.$NAME.ssl.truststore.path
包含要信任的证书的密钥库的路径。它必须是 Java密钥库(jks, Java keystore)或 PKCS#12 文件。
xpack.monitoring.exporters.$NAME.ssl.truststore.password
信任库(truststore) 的密码。
xpack.monitoring.exporters.$NAME.ssl.truststore.secure_password (安全设置)
信任库(truststore) 的密码。

PKCS#12 文件

Elasticsearch 可以配置为使用 PKCS#12 容器文件(.p12.pfx),它包含私钥、证书和应该被信任的证书。

PKCS#12 文件的配置方式与 Java 密钥库文件相同:

xpack.monitoring.exporters.$NAME.ssl.keystore.path
包含私钥和证书的密钥库文件的路径。
xpack.monitoring.exporters.$NAME.ssl.keystore.type
密钥库文件的格式。 它必须是jksPKCS12。 如果密钥库路径以 ".p12", ".pfx", or ".pkcs12" 结尾,则默认为PKCS12。否则默认jks
xpack.monitoring.exporters.$NAME.ssl.keystore.password
密钥库的密码。
xpack.monitoring.exporters.$NAME.ssl.keystore.secure_password (安全设置)
密钥库的密码。
xpack.monitoring.exporters.$NAME.ssl.keystore.key_password
密钥库中密钥的密码。默认值是 密钥库密码(keystore password)。
xpack.monitoring.exporters.$NAME.ssl.keystore.secure_key_password (安全设置)
密钥库中密钥的密码。默认值是 密钥库密码(keystore password)。
xpack.monitoring.exporters.$NAME.ssl.truststore.path
包含要信任的证书的密钥库的路径。它必须是 Java密钥库(jks, Java keystore)或 PKCS#12 文件。
xpack.monitoring.exporters.$NAME.ssl.truststore.type
将此项设置为 PKCS12 以表明信任库(truststore)是一个 PKCS#12 文件。
xpack.monitoring.exporters.$NAME.ssl.truststore.password
信任库(truststore) 的密码。
xpack.monitoring.exporters.$NAME.ssl.truststore.secure_password (安全设置)
信任库(truststore) 的密码。

PKCS#11 令牌

Elasticsearch 可以被配置为使用PKCS#11令牌,该令牌包含私钥、证书和应该被信任的证书。

PKCS#11 令牌需要在 JVM 级别进行额外配置,可以通过以下设置启用:

xpack.monitoring.exporters.$NAME.keystore.type
将此项设置为PKCS11,以指示应将 PKCS#11 令牌用作密钥库。
xpack.monitoring.exporters.$NAME.truststore.type
信任库(truststore) 文件的格式。 对于 Java 密钥库格式,使用jks。 对于 PKCS#12 文件,使用 PKCS12。对于 PKCS#11 令牌,使用 PKCS11。默认为 jks

在配置 PKCS#11 令牌(JVM 被配置为用作 Elasticsearch 的密钥库或信任库)时,可以通过在所配置的上下文中将适当的值设置为ssl.truststore.passwordssl.truststore.secure_password来配置令牌的PIN。 由于只能配置一个 PKCS#11 令牌,因此在 Elasticsearch 中只能配置一个密钥库和信任库。 这反过来意味着只有一个证书可用于传输层和 http 层的 TLS。