导出器

编辑

Elastic Agent 和 Metricbeat 是将监控数据收集并发送到监控集群的推荐方法。

如果您之前已配置旧版收集方法,则应迁移到使用 Elastic AgentMetricbeat 收集。请勿同时使用旧版收集方法和其他收集方法。

导出器的目的是获取从任何 Elastic Stack 源收集的数据,并将其路由到监控集群。可以配置多个导出器,但一般和默认设置是使用单个导出器。

Elasticsearch 中有两种类型的导出器:

本地
Elasticsearch 监控功能使用的默认导出器。此导出器将数据路由回 _同一_ 集群。请参见 本地导出器
HTTP
首选的导出器,您可以使用它将数据路由到任何可通过 HTTP 访问的支持的 Elasticsearch 集群。生产环境应始终使用单独的监控集群。请参见 HTTP 导出器

这两个导出器都具有相同的目的:设置监控集群并路由监控数据。但是,它们执行这些任务的方式大相径庭。即使事情发生的方式不同,这两个导出器都能够发送所有相同的数据。

可以在节点和集群级别配置导出器。使用 _cluster/settings API 更新的集群范围设置优先于每个节点的 elasticsearch.yml 文件中的设置。更新导出器时,它将被导出器的更新版本完全替换。

所有节点必须共享相同的设置,这一点至关重要。否则,监控数据可能会以不同的方式或路由到不同的位置。

当导出器将监控数据路由到监控集群时,它们使用 _bulk 索引以获得最佳性能。所有监控数据都将批量转发到同一节点上的所有已启用的导出器。然后,导出器会序列化监控数据并向监控集群发送批量请求。没有排队(内存中或持久保存到磁盘),因此导出期间的任何故障都会导致该批监控数据丢失。此设计限制了对 Elasticsearch 的影响,并且假设下一次传递将成功。

路由监控数据涉及将其索引到相应的监控索引中。数据被索引后,它存在于一个监控索引中,该索引默认情况下使用每日索引模式命名。对于 Elasticsearch 监控数据,这是一个与 .monitoring-es-6-* 匹配的索引。从那里,数据存在于监控集群中,并且必须根据需要进行管理或清理。如果您不管理监控数据,它最终会填满节点,并且集群可能会由于磁盘空间不足而失败。

强烈建议您管理索引的管理,尤其是监控索引。为此,您可以利用 清理服务Elastic Curator

还有一个磁盘水位线(称为洪水阶段水位线),它可以保护集群免于耗尽磁盘空间。当此功能被触发时,它会使所有索引(包括监控索引)变为只读,直到问题得到解决并且用户手动使索引再次可写。当活动监控索引为只读时,它自然会无法写入(索引)新数据,并且会不断记录指示写入失败的错误。有关更多信息,请参见 基于磁盘的分片分配设置

默认导出器

编辑

如果节点或集群未明确定义导出器,则使用以下默认导出器:

xpack.monitoring.exporters.default_local: 
  type: local

导出器名称唯一地定义了导出器,但在其他方面未使用。指定您自己的导出器时,无需显式覆盖或引用 default_local

如果已定义另一个导出器,则_不会_创建默认导出器。定义新的导出器时,如果默认导出器存在,则会自动将其删除。

导出器模板和摄取管道

编辑

在导出器可以路由监控数据之前,它们必须设置某些 Elasticsearch 资源。这些资源包括模板和摄取管道。下表列出了导出器在路由监控数据之前所需的模板:

模板 用途

.monitoring-alerts

所有监控数据的集群警报。

.monitoring-beats

所有 Beats 监控数据。

.monitoring-es

所有 Elasticsearch 监控数据。

.monitoring-kibana

所有 Kibana 监控数据。

.monitoring-logstash

所有 Logstash 监控数据。

这些模板是普通的 Elasticsearch 模板,用于控制监控索引的默认设置和映射。

默认情况下,监控索引每天创建一次(例如,.monitoring-es-6-2017.08.26)。您可以使用 index.name.time_format 设置更改监控索引的默认日期后缀。您可以使用此设置来控制特定 http 导出器创建监控索引的频率。您不能将此设置与 local 导出器一起使用。有关更多信息,请参见 HTTP 导出器设置

一些用户创建了自己的模板,这些模板匹配_所有_索引模式,因此会影响创建的监控索引。务必不要禁用监控索引的 _source 存储。如果您这样做,Kibana 监控功能将无法工作,并且您无法可视化集群的监控数据。

下表列出了导出器在路由监控数据之前所需的摄取管道:

管道 用途

xpack_monitoring_2

将来自 X-Pack 5.0 - 5.4 的 X-Pack 监控数据升级为与 5.5 监控功能中使用的格式兼容。

xpack_monitoring_6

一个空的占位符管道。

导出器在发送数据之前处理这些资源的设置。如果资源设置失败(例如,由于安全权限),则不会发送数据,并且会记录警告。

空管道在协调节点上进行索引时进行评估,并且无需任何额外工作即可忽略它们。这本质上使它们成为安全的空操作。

对于在所有节点上禁用了 node.ingest 的监控集群,可以禁用摄取管道功能的使用。但是,这样做会阻止其目的,即随着时间的推移,随着我们的映射改进,升级旧的监控数据。从 6.0 开始,摄取管道功能是监控集群的要求;您必须在至少一个节点上启用 node.ingest

一旦任何运行 5.5 或更高版本的节点在监控集群上设置了模板和摄取管道,则必须使用 Kibana 5.5 或更高版本来查看监控集群上的所有后续数据。确定此更新是否已发生的最简单方法是检查是否存在与 .monitoring-es-6-* 匹配的索引(或更具体地说,是新管道的存在)。5.5 之前的版本使用 .monitoring-es-2-*

导出器创建的每个资源都有一个 version 字段,用于确定是否应替换该资源。version 字段值表示更改资源的最新版本监控功能。如果资源由监控功能外部的某人或某些东西编辑,则下次自动更新时,这些更改将会丢失。