elasticsearch,logging,data-ingestion,bigdata,Spring,elasticsearch,Logging,Data Ingestion,Bigdata" /> elasticsearch,logging,data-ingestion,bigdata,Spring,elasticsearch,Logging,Data Ingestion,Bigdata" />

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

如何将Spring引导日志直接摄取到elastic中,spring,elasticsearch,logging,data-ingestion,bigdata,Spring,elasticsearch,Logging,Data Ingestion,Bigdata,我正在研究将spring启动应用程序日志直接发送到弹性搜索的可行性。不使用filebeats或logstash。我相信Ingest插件可能会对此有所帮助 我最初的想法是使用TCP上的logback来实现这一点 我的问题 我想知道这是否可能?如果是的话,你能解释一下你会怎么做吗。 还有什么可能的陷阱等等。我只是尝试了一下我的建议,结果很好 首先,在POM中添加此依赖项: <dependency> <groupId>org.logback-ext

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

我最初的想法是使用TCP上的logback来实现这一点


我的问题

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

我只是尝试了一下我的建议,结果很好

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

    <dependency>
        <groupId>org.logback-extensions</groupId>
        <artifactId>logback-ext-loggly</artifactId>
        <version>0.1.2</version>
    </dependency>
您还需要定义如下所示的摄取管道:

<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!",
    }
}

我刚试过我的建议,结果很好

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

    <dependency>
        <groupId>org.logback-extensions</groupId>
        <artifactId>logback-ext-loggly</artifactId>
        <version>0.1.2</version>
    </dependency>
您还需要定义如下所示的摄取管道:

<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!",
    }
}

我刚才也问了同样的问题:

看看


更新2017年10月,logback elasticsearch appender的开发因

而陷入僵局。我之前问过同样的问题:

看看


更新logback elasticsearch appender的开发于2017年10月暂停

TCP appender不适用于此,因为您需要通过HTTP发送数据。我会查看Loggly HTTP appender,它应该可以很好地完成这项工作:看起来不像是在将它发送给elastic?此外,这也是一种付费产品。当然,您可以更改URL,将其发送到您自己的网站。请参阅,它会将您的日志发送到您配置的任何URL。TCP appender不适用于此,因为您需要通过HTTP发送数据。我会查看Loggly HTTP appender,它应该可以很好地完成这项工作:看起来不像是在将它发送给elastic?此外,这也是一种付费产品。当然,您可以更改URL,将其发送到您自己的网站。请参阅,它会将您的日志发送到您配置的任何URL Hanks Val。。这真的很有帮助,它会记录消息:-)我如何扩展它以包括其他标准的常用日志字段,如时间、主机、日志级别等,将使用kibana来理解日志。您还可以传入字符串而不是json编码字符串吗?谢谢。。这真的很有帮助,它会记录消息:-)我如何扩展它以包括其他标准的常用日志字段,如时间、主机、日志级别等,将使用kibana来理解日志。您还可以传递一个字符串而不是json编码字符串吗?我相信现在的问题是closedIt已于2019年关闭。Maven Central的最新版本于2017年发布。实际上,它不可用于消费((感谢您的更新。我们还有其他资源可以实现同样的目标吗?我相信该问题现在已经解决。它于2019年关闭。Maven Central的最新版本于2017年发布。实际上,它不可用于消费((感谢您的更新。我们是否有其他资源可以实现同样的目标?