用于Grafana Loki的Java客户端库

rslzwgfq  于 2023-03-11  发布在  Java
关注(0)|答案(4)|浏览(364)

目前我们使用statsd java客户端将某些应用程序数据推送到graphite。我们使用这些数据在Grafana中构建 Jmeter 板。
我计划切换到Grafana Loki。我想知道是否有可能使用像statsd这样的守护进程将某些数据直接推送到Grafana Loki。是否有任何java客户端库可以这样做。如果有,请给予我maven仓库链接。

23c0lvtd

23c0lvtd1#

您可以尝试使用Loki4j Logback附加器https://github.com/loki4j/loki-logback-appender(披露:我是它的作者)。
Loki4j是一个纯Java的Loki客户端,它为标签和日志消息提供了灵活的格式选项。它支持JSON和Protobuf风格的Loki推送API。您应该能够使用Loki4j将任何您想要的数据直接推送到Loki。

yxyvkwin

yxyvkwin2#

这里有Loki非官方客户端的文档页面:

  • https://grafana.com/docs/loki/latest/clients/#unofficial-clients

还有我的用于桌面和Android的零依赖纯Java 1.8库,没有很好地优化,但非常简单,可以作为具有自定义标签的独立日志发送器:

导入库:

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

然后:

import pl.mjaron.tinyloki.*;

public class Sample {
    public static void main(String[] args) {

        LogController logController = TinyLoki
                .withUrl("http://localhost/loki/api/v1/push")
                .withBasicAuth("user", "pass")
                .start();

        ILogStream stream = logController.stream() // Before v0.3.2 use createStream()
                .info()
                .l("host", "MyComputerName")
                .l("customLabel", "custom_value")
                .build();

        stream.log("Hello world.");
        logController.softStop().hardStop();
    }
}
sd2nnvve

sd2nnvve3#

我已经创建了一个Java client用于将日志推送到Loki。在它上面构建了一个log4j附加器(在我的雇主那里,它用于生产,每天推10GB的日志)。
它被设计为日志路径上的无锁和无分配。使用Netty,所以发送批到Loki分配,但它非常有效。

相关问题