收集器
编辑收集器编辑
建议使用 Elastic Agent 和 Metricbeat 来收集监控数据并将其发送到监控集群。
如果您之前配置了旧版收集方法,则应迁移到使用 Elastic Agent 或 Metricbeat 收集。不要将旧版收集与其他收集方法一起使用。
顾名思义,收集器用于收集数据。每个收集器在每个收集间隔运行一次,以从其选择监控的 Elasticsearch 和 X-Pack 中的公共 API 获取数据。数据收集完成后,数据将批量移交给 导出器,以发送到监控集群。无论导出器数量多少,每个收集器每个收集间隔只运行一次。
每个收集的数据类型只有一个收集器。换句话说,对于创建的任何监控文档,它都来自单个收集器,而不是从多个收集器合并而来。Elasticsearch 监控功能目前只有几个收集器,因为目标是最大程度地减少它们之间的重叠,以获得最佳性能。
每个收集器可以创建零个或多个监控文档。例如,index_stats
收集器会同时收集所有索引统计信息,以避免许多不必要的调用。
收集器 | 数据类型 | 描述 |
---|---|---|
集群统计信息 |
|
收集有关集群状态的详细信息,包括实际集群状态的部分内容(例如 |
索引统计信息 |
|
收集有关集群中索引的详细信息,包括摘要和单个索引。这将创建许多文档,这些文档表示索引统计信息输出的部分内容(例如, |
索引恢复 |
|
收集有关集群中索引恢复的详细信息。索引恢复表示在集群级别分配*分片*。如果索引未恢复,则不可用。这也对应于通过快照进行的分片还原。此信息只需要收集一次,因此它是在*选举产生的*主节点上收集的。此收集器最常见的故障与分片数量过多(因此收集它们的时间过长)导致超时有关。默认情况下,这将创建一个包含所有恢复的文档,该文档可能非常大,但它可以最准确地反映生产集群中的恢复情况。 |
分片 |
|
收集有关所有索引的所有*已分配*分片的详细信息,尤其包括分片分配到的节点。此信息只需要收集一次,因此它是在*选举产生的*主节点上收集的。收集器使用本地集群状态来获取路由表,而不会像大多数其他收集器那样出现网络超时问题。每个分片都由一个单独的监控文档表示。 |
作业 |
|
收集有关所有机器学习作业统计信息的详细信息(例如, |
节点统计信息 |
|
收集有关正在运行的节点的详细信息,例如内存利用率和 CPU 使用率(例如, |
Elasticsearch 监控功能使用单线程调度程序来运行所有相应收集器在每个节点上收集 Elasticsearch 监控数据。此调度程序由每个节点本地管理,其间隔由在节点或集群级别指定的 xpack.monitoring.collection.interval
控制,默认为 10 秒 (10s
)。
从根本上说,每个收集器都基于相同的原理工作。在每个收集间隔,都会检查每个收集器是否应该运行,然后运行相应的收集器。单个收集器的故障不会影响任何其他收集器。
收集完成后,所有监控数据都将传递给导出器,以将监控数据路由到监控集群。
如果 Kibana 中的监控图表存在间隙,通常是因为收集器失败或监控集群未收到数据(例如,它正在重新启动)。如果收集器失败,则尝试执行收集的节点上应该存在记录的错误。
当前,收集是串行完成的,而不是并行完成的,以避免在选举产生的主节点上产生额外的开销。这种方法的缺点是,收集器可能会在同一个收集周期内观察到不同版本的集群状态。在实践中,这不会造成显著差异,并且并行运行收集器并不能阻止这种可能性。
有关收集器的配置选项的更多信息,请参阅 监控收集设置。
从整个 Elastic Stack 收集数据编辑
Elasticsearch 监控功能还可以从 Elastic Stack 的其他部分接收监控数据。这样,它就可以作为堆栈的非计划监控数据收集器。
默认情况下,数据收集处于禁用状态。不会收集 Elasticsearch 监控数据,并且会忽略来自其他来源(例如 Kibana、Beats 和 Logstash)的所有监控数据。您必须将 xpack.monitoring.collection.enabled
设置为 true
才能启用监控数据的收集。请参阅 监控设置。
收到数据后,它将被转发到导出器,以像所有监控数据一样路由到监控集群。
由于此堆栈级“收集器”位于 Elasticsearch 监控功能的收集间隔之外,因此它不受 xpack.monitoring.collection.interval
设置的影响。因此,数据会在收到时传递给导出器。此行为可能会导致 Kibana、Logstash 或 Beats 的索引以某种意外的方式创建。
在收集和处理监控数据时,一些生产集群元数据会添加到传入文档中。此元数据使 Kibana 能够将监控数据链接到相应的集群。如果此链接对您正在监控的基础架构不重要,则将 Logstash 和 Beats 配置为直接向监控集群报告监控数据可能会更简单。这种情况还可以防止生产集群增加与监控数据相关的额外开销,这在 Logstash 节点或 Beats 数量很多时非常有用。
有关典型监控架构的更多信息,请参阅 _工作原理_。