2017-08-10 32 views
1

我调查直接发送春天启动应用程序登录到弹性搜索feasability。不使用filebeats或logstash。我相信Ingest插件可能对此有所帮助。你怎么摄取春天开机登录直接进入弹性

我最初的想法是这样的logback使用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编码日志直接发送到网络上的弹性?

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

我的问题

我不知道这是否可能?如果这样你能解释你将如何做到这一点。 还什么可能会是什么陷阱等

+0

由于您需要通过HTTP发送数据,TCP appender不适用于此。我会查看Loggly HTTP appender,而应该完成这项工作:https://www.loggly.com/docs/java-logback/ – Val

+0

看起来不像是将它发送到弹性?还支付产品的费用 –

+0

您可以更改课程的网址以将其发送到您自己的ES。请参阅[源代码](http://grepcode.com/file/repo1.maven.org/maven2/org.logback-extensions/logback-ext-loggly/0.1.1/ch/qos/logback/ext/loggly/LogglyAppender.java),它会将你的日志发送到你配置的任何URL – Val

回答

3

我只是想我的建议,它完美地工作了。

首先,添加这种依赖在你的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!", 
    } 
} 
+1

Thanks Val ..这真的有帮助,它确实记录了消息:-)我如何扩展它以包含其他标准常用日志字段,例如时间,主机,日志级别等,将使用kibana来理解日志。你也可以传入字符串而不是json编码字符串吗? –