Kibana 任务管理
Kibana 任务管理器被警报、操作和报告等功能用于运行作为持久后台任务的关键业务工作。这些后台任务将工作分发到多个 Kibana 实例中。这具有三大主要优势
- 持久性:所有任务状态和调度都存储在 Elasticsearch 中,因此如果您重启 Kibana,任务将从上次中断的地方继续执行。
- 可扩展性:多个 Kibana 实例可以读取和更新 Elasticsearch 中的同一个任务队列,从而允许在各个实例之间分发工作负载。如果某个 Kibana 实例不再具备运行任务的能力,您可以通过添加额外的 Kibana 实例来提升容量。有关可扩展性的更多信息,请参阅 Kibana 任务管理器扩展注意事项。
- 负载均衡:任务管理器配备了响应式自愈机制,允许其在对 Elasticsearch 中与负载相关的错误率增加做出反应时,减少其执行的工作量。此外,当任务管理器遇到重复任务增加的情况时,它会尝试错开工作时间以更好地平衡负载。
重要提示
警报和操作的任务定义存储在名为 .kibana_task_manager 的索引中。
对于生产环境部署,您必须为此索引至少配置一个副本。
如果您丢失了此索引,所有已计划的警报和操作都将丢失。
Kibana 后台任务的管理方式如下
- 系统会以 500 毫秒的间隔轮询 Elasticsearch 任务索引以查找逾期任务。您可以使用
xpack.task_manager.poll_interval设置来更改此间隔。 - 通过在 Elasticsearch 索引中更新任务来认领任务,同时使用乐观并发控制来防止冲突。每个 Kibana 实例最多可以运行 10 个并发任务,因此每个间隔最多认领 10 个任务。
- Elasticsearch 和 Kibana 实例使用系统时钟来确定当前时间。为确保按预期触发调度,请使用诸如 网络时间协议 (Network Time Protocol) 之类的时间服务来同步集群中所有节点的时钟。
- 任务在 Kibana 服务器上运行。
建议为后台任务使用一个隔离的节点。对于本地部署,您可以通过将node.roles设置为background_tasks来实现这一点,或者在 ECH 中将 Kibana 扩展到 8G+。 - 任务管理器可确保任务
- 仅执行一次
- 失败时进行重试(如果已配置)
- 重新排期以在未来的某个时间点再次运行(如果已配置)重要提示
任务有时可能会延迟运行或以不一致的调度运行。
这通常是相关集群的特定使用情况或扩展策略所导致的现象。
要解决这些问题,请调整 Kibana 任务管理器设置或集群扩展策略,以更好地适应独特的用例。
有关可能影响任务管理器性能和吞吐量的设置的详细信息,请参阅 任务管理器设置。
有关详细的故障排除指南,请参阅 故障排除。