用于日内可视化、监控和命令处理的 Kafka



我有 20 个左右的进程在各自的服务器上生成日志(每个 ~500MB(,到目前为止,我一直在将这些日志复制到中央服务器并编写 GUI 并监控直接跟踪这些复制的日志文件。

我设置了 Kafka 并使用 fluent-bit 成功地将日志复制到每个服务器的分区中,这似乎工作得很好。

我在客户端有点困惑,因为我只关心每天的数据(我的每个源日志文件的文件名中都有一个日期(。

在一天结束时删除我的所有 kafka 主题通常是好习惯吗? 我知道 kafka 内置了每个客户端的偏移跟踪,但我不想冒任何风险,而且,我也没有看到从一开始就引导的意义。

另一种方法可能是将日期添加到主题名称中? 所以我基本上每天会创建 20 个新主题。 我认为这样做的好处是,它几乎可以保证我的数据只针对那一天。 此外,前几天的数据也将可用,我可以在一周或一个月左右后删除这些主题。

我的客户端流程包括:

  1. 每天绘制日志中的数据;每个服务器进程 1 个图形(共 20 个(
  2. 将从日志中提取的某些数据插入到数据库中
  3. 监控日志文件中的问题(字符串上的 greping 等(,并通过自定义 GUI 向用户发出警报
  4. 对数据运行一些统计/分析并生成日终报告
  5. 配置
  6. GUI,将通过 kafka 将配置更改发送到服务器进程。 服务器进程回显更改,以便用户获得确认。 这将在日志的单独主题上运行。 当进程名称添加到 json 消息时,可以在服务器进程之间共享该主题(以便使用者知道它是否适合他们(。

或者也许卡夫卡可能不是最好的解决方案?

为什么不使用Elasticsearch和Kibana?(可选文件节拍而不是流利

(Kafka Connect 实时转储数据,您可以从 Kibana 中切片数据以按天或其他方式进行搜索。创建可以实时更新或每天更新几次的 Kibana 仪表板

不要删除 Kafka 主题,除非您在流利位中设置了一些基于时间的动态路由。默认情况下,Kafka 保留一周的数据,但您可以将主题设置为保留 24 小时的数据

然而,这里甚至不需要卡夫卡。查找"EFK 堆栈"、Elastic、Fluentd、Kibana,或者如果使用 Beats,则可以删除对 Fluentd 的需求

此外,借助最近发布的 Elastic XPack,您可以设置搜索警报,并对数据进行异常检测

最新更新