1

配置监控

默认情况下,X-Pack监控被启用,但是数据收集被禁用,高级监控设置使你能够控制收集数据的频率、配置超时以及为本地存储的监控索引设置保留期,你还可以调整监控数据的显示方式。

  1. 收集关于你的Elasticsearch集群的监控数据:

    • 验证在集群中的每个节点的xpack.monitoring.enabledxpack.monitoring.collection.enabled设置是否为true
    • 可选:指定要监控的索引。
      默认情况下,监控代理从所有Elasticsearch索引中收集数据,要从特定索引中收集数据,配置xpack.monitoring.collection.indices设置,可以将多个索引指定为逗号分隔的列表或使用索引模式匹配多个索引,例如:

      xpack.monitoring.collection.indices: logstash-*, index1, test2

      你可以前置+-来显式地包含或排除索引名称或模式,例如,要包含除test3之外以test开头的所有索引,可以指定+test*-test3

    • 可选:指定收集监控数据的频率,xpack.monitoring.collection.interval设置的默认值为10秒。
  2. 可选:将你的集群配置为将从Kibana、Beats和Logstash等源的监控数据路由到监控集群:

  3. 确定存储监控数据的位置。

    默认情况下,X-Pack监控使用local导出器对同一集群上的监控数据进行索引,参阅默认导出器和本地导出器。

    或者,你可以使用http导出器将数据发送到单独的监视集群,参阅HTTP导出器。

    有关典型监控体系结构的更多信息,请参见监控工作原理

  4. 如果启用了X-Pack安全性,并且你正在使用http导出器将数据发送到专用的监控集群中:

    • 在监控集群上创建具有remote_monitoring_agent内置角色的用户,例如,下面的请求创建了一个remote_monitor用户,该用户具有remote_monitoring_agent角色:

      POST /_xpack/security/user/remote_monitor
      {
      "password" : "changeme",
      "roles" : [ "remote_monitoring_agent"],
      "full_name" : "Internal Agent For Remote Monitoring"
      }
      
    • 在被监控的集群中的每个节点上,配置http导出器,以便在将数据发送到监控集群时使用适当的凭据。
      如果监控集群上启用了SSL/TLS,则必须在host设置中使用HTTPS协议,还必须在每个节点的可信证书中包含CA证书,以便在监控集群中验证节点的身份。

      下面的示例使用certificate_authority设置指定PEM编码证书的位置:

      xpack.monitoring.exporters:
      id1:
       type: http
       host: ["https://es-mon1:9200", "https://es-mon2:9200"]
       auth:
         username: remote_monitor 
         password: changeme
       ssl:
         certificate_authorities: [ "/path/to/ca.crt" ]
      id2:
       type: local

      usernamepassword参数提供用户凭证。

      或者,你可以使用信truststore(包含证书的Java Keystore文件)来配置受信任的证书:

      xpack.monitoring.exporters:
      id1:
       type: http
       host: ["https://es-mon1:9200", "https://es-mon2:9200"]
       auth:
         username: remote_monitor
         password: changeme
       ssl:
         truststore.path: /path/to/file
         truststore.password: password
      id2:
       type: local
  5. 如果启用了X-Pack安全性,并且希望在Kibana中可视化监控数据,则必须创建能够访问Kibana索引并允许从监控索引中读取数据的用户。

    在存储监控数据的集群上设置X-Pack监控UI用户,也就是监控集群,要授予所有必要的权限,请向用户分配monitoring_userkibana_user角色,或更多信息,请参阅将用户和组映射到角色

  6. 可选:配置存储监控数据的索引。

配置监控索引

索引模板用于配置存储从集群收集的监控数据的索引。

你可以通过_template API检索模板:

GET /_template/.monitoring-*

默认情况下,模板为监控索引配置一个碎片和一个副本,要覆盖默认设置,请添加你自己的模板:

  1. 设置template模式为.monitoring-*
  2. 将模板order设置为1,这确保你的模板是在默认模板之后应用的,默认模板的顺序是0
  3. settings部分中指定number_of_shards和/或number_of_replicas

例如,下面的模板将碎片数量增加到5个,副本数量增加到2个。

PUT /_template/custom_monitoring
{
    "index_patterns": ".monitoring-*",
    "order": 1,
    "settings": {
        "number_of_shards": 5,
        "number_of_replicas": 2
    }
}
只设置settings部分中的number_of_shardsnumber_of_replicas,覆盖其他监控模板设置可能导致监控仪表盘停止正常工作。

配置Tribe节点以进行监控

如果你通过tribe节点连接到集群,并且希望监控tribe节点,那么还需要在该节点上安装X-Pack。

通过这种配置,tribe节点包含在监控UI中显示的节点计数中,但不包含在节点列表中,因为它不向监控集群导出任何数据。

要将tribe节点包含在监控数据中,请在tribe级别启用监控数据收集:

node.name: my-tribe-node1

tribe:
  on_conflict: prefer_cluster1
  c1:
    cluster.name: cluster1
    discovery.zen.ping.unicast.hosts: [ "cluster1-node1:9300", "cluster1-node2:9300", "cluster1-node2:9300" ]
    xpack.monitoring.enabled: true 
  c2:
    cluster.name: cluster2
    discovery.zen.ping.unicast.hosts: [ "cluster2-node3:9300", "cluster2-node3:9300", "cluster2-node3:9300" ]
    xpack.monitoring: 
      enabled: true
      exporters:
        id1:
          type: http
          host: [ "monitoring-cluster:9200" ]
  • xpack.monitoring.enabled: true => 启用使用本地导出器从tribe节点收集数据。
  • type: http => 启用使用HTTP导出器从tribe节点收集数据。

当你启用来自tribe节点的数据收集时,它将包含在节点计数和节点列表中。

Elasticsearch中的监控设置

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

你可以在elasticsearch.yml文件中配置这些监控设置,通过使用集群更新设置API,还可以跨集群设置其中的一些。

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

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

有关更多信息,请参见监控Elastic Stack

通用监控设置

xpack.monitoring.enabled

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

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

监控收集设置

xpack.monitoring.collection设置控制如何从Elasticsearch节点收集数据。

xpack.monitoring.collection.enabled

  • 6.3.0添加的,设置为true以启用监控数据的收集,当此设置为false(默认值)时,不会收集Elasticsearch监控数据,并且会忽略来自Kibana、Beats和Logstash等其他源的所有监控数据。
    你可以通过集群更新设置API更新此设置。

xpack.monitoring.collection.interval

  • 将数据收集设置为-1以禁用数据收集从6.3.0开始已被弃用。

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

你也可以通过集群更新设置API更新此设置。

xpack.monitoring.collection.cluster.stats.timeout

  • 设置收集集群统计信息的超时,默认为10s

xpack.monitoring.collection.indices

  • 控制从哪些索引收集监控数据,默认为所有索引,将索引名称指定为逗号分隔的列表,例如test1,test2,test3,名称可以包括通配符,例如test*。你可以通过前置+包含索引或-排除索引来显式地包含或排除索引,例如,要包含除test3之外以test开头的所有索引,可以指定+test*,-test3

    你可以通过集群更新设置API更新此设置。

xpack.monitoring.collection.index.stats.timeout

  • 设置收集索引统计信息的超时,默认为10s

xpack.monitoring.collection.index.recovery.active_only

  • 控制是否收集所有recoveries,设置为true只收集活动的recoveries,默认为false

xpack.monitoring.collection.index.recovery.timeout

  • 设置收集recovery信息的超时,默认为10s

xpack.monitoring.history.duration

  • 设置保存期限,超过此期限,监控导出器创建的索引将被自动删除,默认为7d(7天)。
    此设置的最小值为1d(1天),以确保某些内容正在被监控,并且不能禁用它。

    这种设置目前只影响local类型的导出器,使用http导出器创建的索引不会自动删除。

    如果X-Pack监控和Watcher都启用了,那么你也可以使用这个设置来影响Watcher清理服务,有关更多信息,请参阅在Watcher设置中的xpack.watcher.history.cleaner_service.enabled设置。

xpack.monitoring.exporters

  • 配置代理存储监控数据的位置,默认情况下,代理使用本地导出器对安装它的集群上的监控数据进行索引,使用HTTP导出器将数据发送到单独的监控集群,关更多信息,请参阅本地导出器设置、HTTP导出器设置以及监控工作原理

本地导出器设置

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

如果你不提供任何导出器,那么监控将自动为你创建一个,如果提供了任何导出器,则不增加默认的。

xpack.monitoring.exporters.my_local:
  type: local

type

  • 本地导出器的值必须始终是local,这是必须的。

use_ingest

  • 是否为集群提供占位符管道,以及为每个批量请求提供管道处理器,默认值为true。如果禁用,那么这意味着它将不会使用管道,这意味着将来的版本不能自动地将批量请求升级到未来的版本。

cluster_alerts.management.enabled

  • 是否为该集群创建集群警报,默认值为true,要使用此特性,必须启用Watcher,如果你具有基本许可证,则不会显示集群警报。

HTTP导出器设置

下面列出了http导出器可以提供的设置,所有设置如下所示,你为你的导出器选择的名称:

xpack.monitoring.exporters.my_remote:
  type: http
  host: ["host:port", ...]

type

  • HTTP导出器的值必须始终是http,这是必需的。

host

  • Host支持多种格式,既有数组格式,也有单值格式,支持的格式包括hostnamehostname:porthttp://hostnamehttp://hostname:porthttps://hostnamehttps://hostname:port。Host不能是假的,默认方案总是http,端口如果不作为host字符串的一部分提供,默认端口总是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连接应该等待socket为请求打开的总时间,默认值为6s

connection.read_timeout

  • HTTP连接应该等待socket返回响应的总时间,默认值为10 * connection.timeout(如果都没有设置,则为60s)。

ssl

  • 每个HTTP导出器都可以定义自己的TLS/SSL设置或继承它们,请参阅下面的TLS/SSL部分。

proxy.base_path

  • 在要发出的请求加上前缀的基本路径,如/base/path(例如,批量请求将以/base/path/_bulk的形式发送),没有默认值。

headers

  • 添加到每个请求中的可选headers,它可以协助通过代理路由请求。

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

    基于数组的headers被发送n次,其中n是数组的大小,无法设置Content-TypeContent-Length,监控代理创建的任何headers都会覆盖这里定义的任何内容。

index.name.time_format

  • 默认情况下,用于更改每日监控索引的默认日期后缀的机制,默认值是YYYY.MM.DD,这就是为什么每天都创建索引。

use_ingest

  • 是否为监控集群提供占位符管道,以及为每个批量请求提供管道处理器,默认值为true,如果禁用,那么这意味着它将不会使用管道,这意味着将来的版本不能自动地将批量请求升级到未来的版本。

cluster_alerts.management.enabled

  • 是否为该集群创建集群警报,默认值为true,要使用此特性,必须启用Watcher,如果你具有基本许可证,则不会显示集群警报。

cluster_alerts.management.blacklist

  • 防止创建特定的集群警报,它还删除了当前集群中已经存在的任何可用的watches。

    你可以在黑名单中添加以下任何一个watch标识符:

    • 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设置,如果没有配置这些设置,则使用默认的TLS/SSL设置。

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

  • 版本支持的协议,有效的协议:SSLv2HelloSSLv3TLSv1TLSv1.1TLSv1.2,默认为TLSv1.2TLSv1.1TLSv1,默认为xpack.ssl.supported_protocols的值。

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

  • 控制证书的验证,有效值为nonecertificatefull,有关这些值的描述,请参阅xpack.ssl.verification_mode,默认为xpack.ssl.verification_mode的值。

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

X-Pack监控的TLS/SSL密钥和可信证书设置

以下设置用于指定通过SSL/TLS连接进行通信时应该使用的私钥、证书和可信证书,私钥和证书是可选的,如果服务器用于PKI身份验证要求客户端身份验证,则将使用它们,如果没有指定以下设置,则使用默认的TLS/SSL设置。

PEM编码的文件

在使用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 Keystore文件

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

xpack.monitoring.exporters.$NAME.ssl.keystore.path

  • 保存私钥和证书的keystore的路径。

index.name.time_format

  • keystore的密码。

xpack.monitoring.exporters.$NAME.ssl.keystore.secure_password安全

  • keystore的密码。

xpack.monitoring.exporters.$NAME.ssl.keystore.key_password

  • keystore中私有密钥的密码,默认值与xpack.monitoring.exporters.$NAME.ssl.keystore.password相同。

xpack.monitoring.exporters.$NAME.ssl.keystore.secure_key_password安全

  • keystore中私有密钥的密码。

xpack.monitoring.exporters.$NAME.ssl.truststore.path

  • truststore的文件路径。

xpack.monitoring.exporters.$NAME.ssl.truststore.password

  • truststore的密码。

ixpack.monitoring.exporters.$NAME.ssl.truststore.secure_password安全

  • truststore的密码。
PKCS#12文件

可以将X-Pack安全性配置为使用PKCS#12容器文件(.p12.pfx文件),这些文件包含私钥、证书和应该受信任的证书。

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

xpack.monitoring.exporters.$NAME.ssl.keystore.path

  • 持有私钥和证书的PKCS#12文件的路径。

xpack.monitoring.exporters.$NAME.ssl.keystore.type

  • 将此设置为PKCS12,以指示keystore是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,以指示truststore是PKCS#12文件。

xpack.monitoring.exporters.$NAME.ssl.truststore.password

  • PKCS#12文件的密码。

xpack.monitoring.exporters.$NAME.ssl.truststore.secure_password安全

  • PKCS#12文件的密码。
PKCS#11令牌

可以将X-Pack安全性配置为使用PKCS#11令牌,该令牌包含私钥、证书和应该受信任的证书。

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

xpack.monitoring.exporters.$NAME.keystore.type

  • 将此设置为PKCS11,以指示PKCS#11令牌应该用作keystore。

xpack.monitoring.exporters.$NAME.truststore.type

  • 将此设置为PKCS11,以指示PKCS#11令牌应该用作truststore。

上一篇:安装X-Pack

博弈
2.5k 声望1.5k 粉丝

态度决定一切