【问题标题】:Get logs from kafka and send to loki从 kafka 获取日志并发送到 loki
【发布时间】:2023-03-09 13:10:01
【问题描述】:

希望您在这次大流行期间一切都好。

我有一个 Kubernetes 集群正在运行。 Pod 之间的通信是通过 kafka 完成的。它当前仅记录到标准输出。没有文件。没有卡夫卡主题。这显然很糟糕。

我想设置一个 grafana 实例,让我在那里集中所有日志。存储将是 Loki + S3

为了做到这一点,我发现很多人使用 Fluentd、FluentBit 和 Promtail 等工具来集中日志并将它们发送到 Loki。但是,我已经运行了 Kafka。如果我可以通过“日志记录”主题将所有日志发送到 kafka,我不明白为什么我会使用像 fluentd 这样的工具。

我的问题是:如何将日志主题内的所有消息发送给 Loki? Fluentd 无法从 kafka 获取输入。

我是否必须设置一些定期运行的脚本,对数据进行排序并直接将其发送给 loki?

【问题讨论】:

  • 你是说应该可以直接登录Kafka而不是stdout?我不确定 Docker/Kubernetes 是否支持……如果你想要的话,你需要使用 fluentd 将数据导入 Kafka,但在那之后,你需要一个 Kafka 消费者来写信给 Loki,所以 Kafka只是充当缓冲区
  • 它必须支持它,不是吗?我只需要向我的记录器(python 应用程序)添加一个处理程序。我一定没有看到什么。我目前的想法是通过python直接登录到kafka,创建一个消费者并使用“in_exec”插件在fluentd中运行它

标签: kubernetes logging apache-kafka fluentd grafana-loki


【解决方案1】:

我建议你使用 promtail,因为它也是来自 Grafana,而不是使用 kafka 解决方案。

如果您将应用程序中的日志发送到 kafka,那么您需要:

  • 修改您的应用以发送到 kafka 而不是标准输出
  • 配置日志转发器将 kafka 上的消息发送到 loki(可以流畅)

如果您使用一种常规建议的方法,您需要:

  • 配置日志转发器将消息从 docker stdout 发送到 loki(可以使用 promtail 默认配置)

但是,如果您想在中间使用 kafka 的解决方案,可以使用一些 fluentd 插件将 kafka 配置为输入和输出。 https://github.com/fluent/fluent-plugin-kafka

【讨论】:

    猜你喜欢
    • 2021-04-08
    • 1970-01-01
    • 2021-07-22
    • 1970-01-01
    • 2021-02-17
    • 1970-01-01
    • 2019-02-28
    • 2020-06-02
    • 2021-03-22
    相关资源
    最近更新 更多