文档文档

Kapacitor 常见问题

此页面解答了与 Kapacitor 相关的常见困惑或重要须知事项。在适用的情况下,它链接到 Github 上的未解决问题。

管理

TICKscript

性能

管理

更新脚本时,警报状态和警报数据会丢失吗?

Kapacitor 将记住警报的最后一个级别,但其他类状态数据(例如窗口中缓冲的数据)将丢失。

如何验证 Kapacitor 是否正在从 InfluxDB 接收数据?

有几种方法可以确定 Kapacitor 是否正在从 InfluxDB 接收数据。 kapacitor stats ingress 命令输出存储在 Kapacitor 数据库中的 InfluxDB 指标,以及通过 Kapacitor 服务器的数据点数量。

$ kapacitor stats ingress
Database   Retention Policy Measurement    Points Received
_internal  monitor          cq                        5274
_internal  monitor          database                 52740
_internal  monitor          httpd                     5274
_internal  monitor          queryExecutor             5274
_internal  monitor          runtime                   5274
_internal  monitor          shard                   300976
# ...

您还可以使用 Kapacitor 的 /debug/vars API 端点 来查看和监控摄取率。使用此端点和 Telegraf 的 Kapacitor 输入插件,您可以创建可视化效果来监控 Kapacitor 摄取率。以下是示例查询,这些查询使用 Telegraf 的 Kapacitor 输入插件写入 InfluxDB 的 Kapacitor 数据

Kapacitor 摄取率(点/秒)

SELECT sum(points_received_rate) FROM (SELECT non_negative_derivative(first("points_received"),1s) as points_received_rate FROM "_kapacitor"."autogen"."ingress" WHERE time > :dashboardTime: GROUP BY "database", "retention_policy", "measurement", time(1m)) WHERE time > :dashboardTime: GROUP BY time(1m)

按任务划分的 Kapacitor 摄取量(点/秒)

SELECT non_negative_derivative("collected",1s) FROM "_kapacitor"."autogen"."edges" WHERE time > now() - 15m AND ("parent"='stream' OR "parent"='batch') GROUP BY task

TICKscript

批量处理工作正常,但流处理不正常。为什么?

确保端口 9092 对入站连接开放。流 PUSH 到端口 9092,因此必须允许其通过防火墙。

Kapacitor 可以处理的脚本数量是否有限制?

没有软件限制,但它将受到可用服务器资源的限制。

是什么导致具有相同时间戳的意外或额外值?

如果在不规则的时间间隔摄取数据,并且您看到具有相同时间戳的意外结果,请在 TICKscript 中摄取数据时使用 log node 来调试问题。这会浮出问题,例如,httpOut 隐藏的重复数据。

性能

运行一个复杂的脚本还是并行运行多个脚本,哪种性能更好?

从极端情况来看,最佳情况是一个任务消耗所有数据并完成所有工作,因为管理多个任务时会增加开销。但是,在减少每个任务的开销方面已经付出了巨大的努力。以对您的项目和组织有逻辑意义的方式使用任务。如果您在多个任务中遇到性能问题,请告知我们作为最后的手段,将任务合并为更复杂的任务。

基于模板的脚本是否使用更少的资源,或者它们只是一个易于使用的工具?

模板只是一个易于使用的工具,在性能方面没有任何区别。

Kapacitor 如何处理高负载?

如果 Kapacitor 无法在接收新数据之前摄取和处理传入数据,则 Kapacitor 会将传入数据排队到内存中,并在能够处理时对其进行处理。排队数据的内存需求取决于摄取率和传入数据的形状。一旦 Kapacitor 能够处理所有排队的数据,它就会随着内部垃圾回收器回收内存而缓慢释放内存。

长时间的高数据摄取可能会使可用系统资源不堪重负,从而迫使操作系统停止 kapacitord 进程。避免此问题的主要方法是

  • 确保您的硬件提供足够的系统资源来处理额外的负载。
  • 优化您的 Kapacitor 任务。请参阅下文

当 Kapacitor 处理队列中的数据时,它可能会消耗其他系统资源,例如 CPU、磁盘和网络 IO 等,这将影响您的 Kapacitor 服务器的整体性能。

如何优化 Kapacitor 任务?

在优化 Kapacitor 任务时,请考虑以下事项

“批量处理”传入数据

batch 以批处理方式从 InfluxDB 查询数据。只要 Kapacitor 能够在查询下一个批处理之前处理一个批处理,它就不需要排队任何东西。

stream 将所有 InfluxDB 写入实时镜像到 Kapacitor,并且更容易排队。如果使用 stream,请使用 window 将传入数据分段为基于时间的批处理。


此页面是否对您有所帮助?

感谢您的反馈!


Flux 的未来

Flux 即将进入维护模式。您可以继续按当前方式使用它,而无需对代码进行任何更改。

阅读更多

InfluxDB 3 开源现已发布公开 Alpha 版本

InfluxDB 3 开源现在可用于 alpha 测试,根据 MIT 或 Apache 2 许可获得许可。

我们正在发布两个产品作为 alpha 版本的一部分。

InfluxDB 3 Core 是我们的新开源产品。它是用于时间序列和事件数据的最新数据引擎。InfluxDB 3 Enterprise 是一个商业版本,它建立在 Core 的基础上,增加了历史查询功能、读取副本、高可用性、可扩展性和细粒度的安全性。

有关如何开始使用的更多信息,请查看