如何将Spring Boot日志直接导入Elastic

我正在研究将Spring Boot" title="Spring Boot">Spring Boot应用程序日志直接发送到elasticsearch的可行性。不使用文件拍或logstash。我相信Ingest插件可能对此有所帮助。

我最初的想法是使用基于TCP的登录进行此操作。

https://github.com/logstash/logstash-logback-

encoder

<?xml version="1.0" encoding="UTF-8"?>

<configuration>

<appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">

<destination>127.0.0.1:4560</destination>

<encoder class="net.logstash.logback.encoder.LogstashEncoder" />

</appender>

<root level="DEBUG">

<appender-ref ref="stash" />

</root>

</configuration>

因此,从以上内容您可以将日志直接发送到logstash。我只是想知道是否有可能使用较新的摄取功能,并跳过使用logstash?通过使用摄取方法通过网络将json编码的日志直接发送到Elastic中?

https://www.elastic.co/blog/new-way-to-ingest-

part-1

我想知道这是否可能?如果可以的话,您可以解释一下如何做。还有什么可能的陷阱等。

回答:

我只是尝试了我的建议,结果很完美。

首先,在您的POM中添加此依赖项:

    <dependency>

<groupId>org.logback-extensions</groupId>

<artifactId>logback-ext-loggly</artifactId>

<version>0.1.2</version>

</dependency>

然后,在您的logback.xml配置中,添加一个附加器和一个记录器,如下所示:

<appender name="ES" class="ch.qos.logback.ext.loggly.LogglyAppender">

<endpointUrl>http://localhost:9200/tests/test?pipeline=logback</endpointUrl>

<pattern>%m</pattern>

</appender>

<logger name="es" level="INFO" additivity="false">

<appender-ref ref="ES"/>

</logger>

您还需要定义一个摄取管道,如下所示:

PUT _ingest/pipeline/logback

{

"description": "logback pipeline",

"processors": [

{

"set" : {

"field": "source",

"value": "logback"

}

}

]

}

然后,在您的代码中,您可以使用该记录器并将所需的任何数据发送到ES

private Logger esLogger = LoggerFactory.getLogger("es");

...

esLogger.info("{\"message\": \"Hello World from Logback!\"}");

该文档将最终出现在您的ES中:

{

"_index": "tests",

"_type": "test",

"_id": "AV3Psj5MF_PW7ho1yJhQ",

"_score": 1,

"_source": {

"source": "logback",

"message": "Hello World from Logback!",

}

}

以上是 如何将Spring Boot日志直接导入Elastic 的全部内容, 来源链接: utcz.com/qa/409998.html

回到顶部