任务管理器健康监控

编辑

此功能为技术预览版,未来版本可能会更改或删除。Elastic 将努力修复任何问题,但技术预览版中的功能不受正式 GA 功能的支持 SLA 约束。

任务管理器具有内部监控机制,用于跟踪各种指标,这些指标可以通过健康监控 API 或 Kibana 服务器日志使用。

健康监控 API 提供了一个可以监控的可靠端点。使用此端点不会导致额外的负载,而是返回系统进行的最新健康检查。此设计允许外部监控服务以常规节奏使用,而不会给系统带来额外负载。

每个 Kibana 实例在其自己的端点上公开:

$ curl -X GET api/task_manager/_health

监控集群中每个 Kibana 实例的 _health 端点是确保诸如告警、操作和报告等关键任务服务可靠性的推荐方法。

配置监控的健康统计信息

编辑

健康监控 API 开箱即用地监控任务管理器的性能。但是,某些性能考虑因素是特定于部署的,您可以对其进行配置。

健康阈值是任务执行失败的阈值。一旦任务超过此阈值,任务类型执行将设置为 warnerror 的状态。要配置健康阈值,请使用 xpack.task_manager.monitored_task_execution_thresholds 设置。您可以将此设置应用于系统中的所有任务类型,或应用于自定义任务类型。

默认情况下,此设置会在失败的执行次数超过 80% 时将每个任务类型的健康状况标记为 warning,并在 90% 时标记为 error。将此值设置为 0 到 100 之间的数字。当值超过此数字时,将达到阈值。要避免 error 状态,请将阈值设置为 100。要在任何任务失败时立即触发 error,请将阈值设置为 0。

创建自定义配置,为您认为至关重要的任务类型设置较低的阈值,例如您希望在外部监控服务中更快检测到的告警任务。

xpack.task_manager.monitored_task_execution_thresholds:
  default: 
    error_threshold: 70
    warn_threshold: 50
  custom:
    "alerting:.index-threshold": 
      error_threshold: 50
      warn_threshold: 0

默认配置将系统范围的 warn 阈值设置为 50% 的失败率,error 设置为 70% 的失败率。

alerting:.index-threshold 任务类型设置的自定义配置将系统范围的 warn 阈值设置为 0%(这会在该类型的任何任务失败时立即设置 warn 状态),并将 error 设置为 50% 的失败率。

使用健康统计信息

编辑

健康 API 最好的使用方式是通过 /api/task_manager/_health 端点。

此外,还有两种方法可以使用这些指标:

调试日志

这些指标会以常规节奏记录在 Kibana 的 DEBUG 记录器中。要在您的 Kibana 实例中启用任务管理器调试日志记录,请将以下内容添加到您的 kibana.yml 中:

logging:
  loggers:
      - context: plugins.taskManager
        appenders: [console]
        level: debug

这些统计信息的记录基于您的 xpack.task_manager.poll_interval 设置中设置的毫秒数,这可能会给您的日志添加大量噪音。仅临时启用此级别的日志记录。

自动日志记录

默认情况下,健康 API 以常规节奏运行,每次运行时都会尝试自我评估其性能。如果此自我评估产生潜在问题,则会将消息记录到 Kibana 服务器日志中。此外,健康 API 将查看任务等待开始的时间(从它们计划开始的时间开始)。如果此数字超过可配置的阈值(xpack.task_manager.monitored_stats_health_verbose_log.warn_delayed_task_start_in_seconds),则会将与上述相同的消息记录到 Kibana 服务器日志中。

此消息如下所示:

Detected potential performance issue with Task Manager. Set 'xpack.task_manager.monitored_stats_health_verbose_log.enabled: true' in your Kibana.yml to enable debug logging`

如果出现此消息,请在您的 kibana.yml 中将 xpack.task_manager.monitored_stats_health_verbose_log.enabled 设置为 true。这将开始以 warnerror 日志级别记录健康指标,具体取决于检测到的潜在问题的严重程度。

理解任务管理器健康统计信息

编辑

健康监控 API 公开三个部分:configurationworkloadruntime

配置

本部分总结了任务管理器的当前配置。这包括随时间变化的动态配置,例如 poll_intervalmax_workers,它们可以根据系统上不断变化的负载进行调整。

工作负载

本部分总结了整个集群的工作负载,包括系统中的任务、它们的类型和当前状态。

运行时

本部分跟踪任务管理器的执行性能,跟踪任务漂移、worker 负载以及按类型划分的执行统计信息,包括持续时间和执行结果。

容量估计

本部分提供了关于其容量是否足够的粗略估计。顾名思义,这些是基于历史数据的估计,不应将其用作预测。在遵循任务管理器扩展指南时,请使用这些估计值。

每个部分都有一个 timestamp 和一个 status,指示该部分的上次更新时间以及该部分的健康状况是否被评估为 OKWarningError

status 指示整个系统的 status

运行时 status 指示任务执行是否已超过任何配置的健康阈值OK 状态表示未超过任何阈值。Warning 状态表示至少已超过一个警告阈值。Error 状态表示至少已超过一个错误阈值。

某些任务(例如连接器)即使任务失败,也会错误地将其状态报告为成功。运行时和工作负载块将返回有关成功和失败的数据,并且不会考虑这一点。

为了更好地了解操作失败,请参考事件日志索引,以获取有关失败和成功的更准确的上下文。

容量估计 status 指示观察到的容量是否足够。OK 状态表示容量足够。Warning 状态表示容量足以满足计划的重复性任务,但非重复性任务通常会导致集群超出容量。Error 状态表示所有类型的任务的容量都不足。

通过监控整个系统的 status 以及感兴趣的特定任务类型的 status,您可以评估 Kibana 任务管理系统的健康状况。