如何将Spring引导日志直接摄取到elastic中
我正在研究将spring启动应用程序日志直接发送到弹性搜索的可行性。不使用filebeats或logstash。我相信Ingest插件可能会对此有所帮助 我最初的想法是使用TCP上的logback来实现这一点如何将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
我的问题
我想知道这是否可能?如果是的话,你能解释一下你会怎么做吗。
还有什么可能的陷阱等等。我只是尝试了一下我的建议,结果很好
首先,在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年发布。实际上,它不可用于消费((感谢您的更新。我们是否有其他资源可以实现同样的目标?