2017-08-10 37 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編碼字符串嗎? –