当前位置: 首页 > 面试题库 >

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

习旻
2023-03-14
问题内容

我正在研究将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!",
    }
}


 类似资料:
  • 问题内容: 我正在尝试使用Go写入日志文件。 我尝试了几种方法,但都失败了。这是我尝试过的: 日志文件被创建,但是没有任何打印或附加到该文件。为什么? 问题答案: 过去的工作方式一定不同,但这对我有用: 基于Go文档,不能用于,因为它会打开文件“供阅读:” 打开命名文件以供读取。如果成功,则可以使用返回文件上的方法进行读取;关联的文件描述符具有mode 。如果有错误,它将是类型。 编辑 检查后移至

  • 问题内容: 我想将csv文件导入到mysql中。 http://www.tech- recipes.com/rx/2345/import_csv_file_direct_into_mysql/ 但是csv中的列名称与数据库表中的列名称不同,我该怎么办?我想以编程方式来做。 问题答案: 您可以创建一个脚本来解析您的csv文件并将数据放入db。 就像是:

  • SpringBoot默认有日志输出 2017-02-27 16:04:06.644 INFO 15384 --- [ main] com.clsaa.edu.springboot.App : Starting App on eggyer with PID 15384 (D:\Data\MyCode\codeMaven\learn_springboot004\target\classes start

  • 我在尝试使用日志存储将 CSV 文件导入到我的弹性搜索实例时遇到问题。我正在使用预配置的Docker ELK堆栈。 当我运行命令时,我的错误如下: 然后它继续尝试重新连接。 我的配置文件是: 任何信息都将是有帮助的,因为我是全新的ELK堆栈。

  • 我正在从GitHub导入我的Scala-SBT项目。我选择 导入后, IntelliJ不考虑作为Scala-SBT项目。 我没有找到我的项目,它在中为零。 如何直接从GitHub导入Scala SBT项目。 是不是强制要求我将本地和导入作为Scala SBT项目分为两个步骤? 或 我能从GitHub直接导入吗。

  • 本文向大家介绍浅谈SpringBoot是如何实现日志的,包括了浅谈SpringBoot是如何实现日志的的使用技巧和注意事项,需要的朋友参考一下 前言 休息日闲着无聊看了下 SpringBoot 中的日志实现,把我的理解跟大家说下。 门面模式 说到日志框架不得不说门面模式。门面模式,其核心为外部与一个子系统的通信必须通过一个统一的外观对象进行,使得子系统更易于使用。用一张图来表示门面模式的结构为: