es在默认情况下,监控是开启的,但是数据采集是关闭的。如果要开启数据采集使用xpack.monitoring.collection.enabled。可以在elasticsearch.yml文件里面配置监控的相关属性。
一般监控配置
xpack.monitoring.enabled
设置为true表示开启X-Pack来监控es节点。注意:如果要开启数据采集需要把xpack.monitoring.collection.enabled
设置为true
,默认是false。
监控采集配置
xpack.monitoring.collection开头的设置,表示是否在节点中配置采集相关的一些配置。
xpack.monitoring.collection.enabled
6.3.0之后才有这个配置,设置为true,表示开启数据采集。设置为false,表示不收集Elasticsearch监视数据,忽略来自其他数据源(如Kibana、Beats和Logstash)的所有监视数据。
xpack.monitoring.collection.interval
从7.0.0开始如果设置为-1表示不再收集数据。默认是10s,如果在es中修改了该值,那么需要把kibana.yml里的xpack.monitoring.min_interval_seconds也设置为相同的值。
xpack.monitoring.elasticsearch.collection.enabled
控制是否应该收集关于Elasticsearch集群的统计信息。默认是true,他跟xpack.monitoring.collection.enabled是不一样的,xpack.monitoring.collection.enabled表示禁用或者启用所有监控收集,该设置只是禁用es的数据采集,但是其他的数据(像 Kibana, Logstash, Beats或者APM服务监控数据)可以通过该集群。
xpack.monitoring.collection.cluster.stats.timeout
收集集群统计信息的超时时间,默认是10s。
xpack.monitoring.collection.node.stats.timeout
收集节点统计信息的超时时间,默认是10s。
xpack.monitoring.collection.indices
对哪些索引进行监控和收集数据,默认是对所有的索引,以逗号分隔来指定多个索引,如test1,test2,test3。也可以使用通配符,如test*,可以用-来排查具体某个索引,如test*,-test2,像一些系统索引如.security或者.kibana,应用总数被监控,他们都是以.开头,所以可以指定如.,test
xpack.monitoring.collection.index.stats.timeout
收集索引统计信息的超时时间,默认是10s。
xpack.monitoring.collection.index.recovery.active_only
控制是否收集所有回收,设置为true只收集活动回收,默认值为false。
xpack.monitoring.collection.index.recovery.timeout
收集恢复信息的超时时间,默认为10s。
xpack.monitoring.history.duration
保留期限,超过此期限,监视导出程序创建的索引将自动删除,默认是7天,最小值为1天。注意:这个设置目前只影响本地类型的导出器,使用http导出器创建的索引不会自动删除。
xpack.monitoring.exporters
配置代理存储监视数据的位置,默认情况下,代理使用本地导出器对安装它的集群上的监视数据进行索引。使用HTTP导出器将数据发送到单独的监视集群。
本地导出器设置
本地导出器是默认的导出器,顾名思义,他导出本地的集群数据,意味着不需要过多的配置,如果没有配置导出器,那么es会默认创建一个,如果配置了,那么不会默认添加。
xpack.monitoring.exporters.my_local:
type: local
type
如果是本地导出器,那么type必须都是local。
use_ingest
是否为集群提供占位符管道以及为每个批量请求提供管道处理器,默认值是true,如果禁用,则意味着它将不使用管道,这意味着将来的发行版无法自动升级批量请求,使其不受将来的影响。
cluster_alerts.management.enabled
是否为该集群创建集群警报,默认值为true,要使用此功能,必须启用监视程序,如果拥有基本许可证,则不会显示集群警报。
http导出器配置
接下来让我们来看看http导出器的一些配置:
xpack.monitoring.exporters.my_remote:
type: http
host: ["host:port", ...]
type
如果http导出器,那么值一直都是http。
host
支持多种格式,既可以是数组也可以是一个值,支持的格式如:hostname
, hostname:port
, http://hostname
http://hostname:port
, https://hostname
和https://hostname:port
。如果没有明确指定的话,默认都是以http开头,默认端口号为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.password,那么该配置必须要设置。
auth.password
属性auth.username对应的密码
connection.timeout
HTTP连接等待套接字为请求打开的超时时间,默认值是6s。
connection.read_timeout
HTTP连接等待套接字返回响应的超时时间。默认值是10 * connection.timeout。
ssl
每个http导出器都可以设置自己的 TLS / SSL配置或者是继承他们。
proxy.base_path
发出http请求的前缀,如/base/path,bulk请求的前缀如:/base/path/_bulk,他没有默认值。
headers
配置了之后每个请求头都会带上配置里面的内容。
xpack.monitoring.exporters.my_remote:
headers:
X-My-Array: [abc, def, xyz]
X-My-Header: abc123
基于数组的头被发送n次,其中n是数组的大小,无法设置内容类型和内容长度,监视代理创建的任何头都将覆盖此处定义的任何内容。
index.name.time_format
默认情况下,更改每日监视索引的默认日期后缀的机制。默认值是YYYY.MM.DD,这就是每天创建索引的原因。
use_ingest
是否为集群提供占位符管道以及为每个批量请求提供管道处理器,默认值是true,如果禁用,则意味着它将不使用管道,这意味着将来的发行版无法自动升级批量请求,使其不受将来的影响。
cluster_alerts.management.enabled
是否为该集群创建集群警报,默认值为true,要使用此功能,必须启用监视程序,如果拥有基本许可证,则不会显示集群警报。
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
支持的协议版本,可以配置的协议:SSLv2Hello
, SSLv3
, TLSv1
, TLSv1.1
, TLSv1.2
, TLSv1.3
。如果JVM支持TLSv1.3,则默认为TLSv1.3、TLSv1.2、TLSv1.1,否则为TLSv1.2、TLSv1.1。
xpack.monitoring.exporters.$NAME.ssl.verification_mode
控制证书的验证。可以配置的值为:none
, certificate
和full
,默认是full。
xpack.monitoring.exporters.$NAME.ssl.cipher_suites
支持的密码套件可以在Oracle的Java Cryptography Architecture文档中找到,默认为' '。
X-Pack监控TLS/SSL私钥和信任证书配置
以下设置用于指定在SSL/TLS连接上通信时应该使用的私钥、证书和可信证书。私钥和证书是可选的,如果服务器需要客户端身份验证来进行PKI身份验证,则使用私钥和证书。如果没有指定下面的设置,则使用默认的TLS/SSL设置。
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密钥库文件时,可以使用以下配置:
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
密钥存储库中私钥的密码,默认值与xpack.monitoring.exporters.$NAME.ssl.keystore.password
相同。
xpack.monitoring.exporters.$NAME.ssl.keystore.secure_key_password
密钥存储库中私钥的密码。
xpack.monitoring.exporters.$NAME.ssl.truststore.path
信任存储文件的路径。
xpack.monitoring.exporters.$NAME.ssl.truststore.password
信任存储区的密码。
xpack.monitoring.exporters.$NAME.ssl.truststore.secure_password
信任存储区的密码。
PKCS#12 文件
Elasticsearch可以配置为使用PKCS#12容器文件(如.p12
或者.pfx
文件)包含私钥、证书和受信任的证书。
PKCS#12文件的配置方式与Java Keystore文件相同:
xpack.monitoring.exporters.$NAME.ssl.keystore.path
包含私钥和证书的PKCS#12文件的路径。
xpack.monitoring.exporters.$NAME.ssl.keystore.type
设置为PKCS12,表示密钥库是PKCS#12文件。
xpack.monitoring.exporters.$NAME.ssl.keystore.password
PKCS#12文件的密码。
xpack.monitoring.exporters.$NAME.ssl.keystore.secure_password
PKCS#12文件的密码。
xpack.monitoring.exporters.$NAME.ssl.keystore.key_password
存储在PKCS#12文件中的私钥的密码,默认值与xpack.monitoring.exporters.$NAME.ssl.keystore.password相同。
xpack.monitoring.exporters.$NAME.ssl.keystore.secure_key_password
存储在PKCS#12文件中的私钥的密码。
xpack.monitoring.exporters.$NAME.ssl.truststore.path
包含要信任的证书的PKCS#12文件的路径。
xpack.monitoring.exporters.$NAME.ssl.truststore.type
设置为PKCS12,表示受信任的PKCS#12文件。
xpack.monitoring.exporters.$NAME.ssl.truststore.password
PKCS#12文件的密码。
xpack.monitoring.exporters.$NAME.ssl.truststore.secure_password
PKCS#12文件的密码。
PKCS#11令牌
可以将Elasticsearch配置为使用PKCS#11令牌,该令牌包含私钥、证书和受信任的证书。
PKCS#11令牌需要JVM级别的额外配置,可以通过以下设置启用:
xpack.monitoring.exporters.$NAME.keystore.type
设置为PKCS11,表示PKCS#11令牌应该被使用。
xpack.monitoring.exporters.$NAME.truststore.type
设置为PKCS11,表示PKCS#11令牌应该被受信任文件使用。
注意:本文归作者所有,未经作者允许,不得转载