【问题标题】:Java client library for Grafana LokiGrafana Loki 的 Java 客户端库
【发布时间】:2020-07-13 02:53:52
【问题描述】:

目前我们正在使用 statsd java 客户端将某些应用程序数据推送到石墨。我们使用这些数据在 Grafana 中构建仪表板。

我打算改用 Grafana Loki。我想知道是否可以使用像 statsd 这样的守护进程将某些数据直接推送到 Grafana Loki。是否有任何 java 客户端库可以这样做。如果是这样,请给我 maven 存储库链接。

【问题讨论】:

    标签: java grafana statsd grafana-loki


    【解决方案1】:

    您可以尝试 Loki4j Logback appender https://github.com/loki4j/loki-logback-appender(披露:我是它的作者)。

    Loki4j 是 Loki 的纯 Java 客户端,具有灵活的标签和日志消息格式选项。它支持 Loki 推送 API 的 JSON 和 Protobuf 风格。您应该能够使用 Loki4j 将您想要的任何数据直接推送到 Loki。

    【讨论】:

    • 嗨,我试过用它,但没有用。我用 http url 配置了 logback.xml,我正在使用 org.slf4j.Logger 类来使用 logger.debug("logs")
    • @VasanthNagKV 看起来像是配置错误的问题。请检查 stderr 中是否有任何错误消息,它们可以帮助您修复配置。您也可以向 GitHub 项目报告问题,以便我们一起深入研究。
    • 没有错误,也没有写入日志,我想我在一个非常基本的意义上做错了什么。无论如何我会在github上报告它,谢谢。此外,我觉得 loki4j 的文档非常少。关于一些配置和示例。只是请求更多示例。谢谢
    • 谁将 log4j 库与其他 Java 应用程序一起使用,应该采取一些主动措施,他们可以采取这些措施来降低 CVE-2021-44228 带来的风险。
    【解决方案2】:

    我已经创建了一个 Java client 用于将日志推送到 Loki。在它之上构建了一个 log4j appender(在我的雇主那里,它用于生产每天推送 10 GB 的日志)。

    它被设计为在日志路径上无锁和无分配。使用 Netty,因此向 Loki 发送批次分配,但它非常有效。

    【讨论】:

    • 谁将 log4j 库与其他 Java 应用程序一起使用,应该采取一些主动措施,他们可以采取这些措施来降低 CVE-2021-44228 带来的风险。
    • @vladimirvojtisek 你是绝对正确的。我已更新我的库以使用修复 CVE 的 Log4j2 2.16.0。
    【解决方案3】:

    TinyLoki - 适用于桌面和 Android 的零依赖纯 Java 1.8 库。 没有得到很好的优化,但很容易作为带有自定义标签的独立日志发送者采用。

    https://github.com/mjfryc/mjaron-tinyloki-java

    导入库:

    dependencies {
        implementation 'io.github.mjfryc:mjaron-tinyloki-java:0.2.2'
    }
    

    然后:

    import pl.mjaron.tinyloki.*;
    public class Sample {
        public static void main(String[] args) {
            LogController logController = TinyLoki.createAndStart(
                "https://localhost/loki/api/v1/push", "user", "pass");
            ILogStream stream = logController.createStream(
                TinyLoki.info().l("customStaticLabelName","customVaue"));
            stream.log("Hello world.");
            //...
    
            // Optionally at the application exit, send latest logs.
            logController.softStop().hardStop();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2022-07-19
      • 2010-10-14
      • 1970-01-01
      • 1970-01-01
      • 2021-12-19
      • 1970-01-01
      • 2018-08-11
      • 2018-06-03
      • 2020-10-17
      相关资源
      最近更新 更多