任务管理器健康监控编辑

此功能处于技术预览阶段,可能在将来的版本中更改或删除。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,它们可以根据系统负载的变化进行调整。

工作负载

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

运行时

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

容量估计

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

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

status 指示系统整体的 status

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

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

要更好地了解操作失败,请参阅 事件日志索引,以更准确地了解失败和成功。

容量估计 status 指示观察到的容量是否充足。OK 状态表示容量充足。Warning 状态表示容量足以满足计划的定期任务,但非定期任务经常会导致集群超过容量。Error 状态表示所有类型的任务的容量都不足。

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