如何将Spring boot日志直接摄取到elastic中

2024-04-10

我正在研究将 Spring Boot 应用程序日志直接发送到 Elastic Search 的可行性。不使用 filebeats 或logstash。我相信 Ingest 插件可能会对此有所帮助。

我最初的想法是使用 TCP 上的 logback 来完成此操作。

https://github.com/logstash/logstash-logback-encoder 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 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!",
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将Spring boot日志直接摄取到elastic中 的相关文章

随机推荐