2017-04-10 71 views
0

我正在運行一個spring-boot應用程序,它測量標準和自定義指標。現在我希望這些指標能夠在彈性搜索中持續進行進一步檢查。我有一個功能正常的ELK堆棧,所以對我來說顯而易見的解決方案是將這些度量值保存在日誌文件中,並讓filebeat收集它。如何將彈簧引導指標保存爲日誌?

我發現了一個example,這可能已經實現了這個,但它是使用MetricRepository,它不再支持用Java 8

official documentation是無益的。所有示例都使用某種專有格式或正在寫入數據庫。

任何人都可以請提供一種方法來堅持作爲日誌文件的指標?

+0

您鏈接的文檔的前兩行解釋您需要執行的操作。我也想知道你在哪裏得到了'MetricRepository'這個概念,但它仍然不在Spring Boot 1.5.2中,也不適用於Spring Boot 2.0.0。另外,如果您使用Elastic,那麼已經有一個[exporter](https://github.com/elastic/elasticsearch-metrics-reporter-java),儘管它需要額外的庫。 –

+0

「如果您使用的是Java 8或者如果使用的是Dropwizard指標,則默認不使用舊的MetricRepository及其InMemoryMetricRepository實現。」 - 如[文檔]中的第一個信息框所述(https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-metrics.html#production-ready-metric-庫)。 –

回答

1

聽起來像你只需要編寫一個MetricWriter的實現,並用@ExportMetricWriter標記bean應該是小菜一碟。只需寫入日誌即可實現這三種方法,就是這樣。

喜歡的東西:

@Component 
@ExportMetricWriter 
public class MyMetricWriter implements MetricWriter, Closeable { 

    private static final Log logger = LogFactory.getLog(MyMetricWriter.class); 


@Override 
public void increment(Delta<?> delta) { 
    // record increment to log 
} 

@Override 
public void set(Metric<?> value) { 
    // record set metric to log 
} 

@Override 
public void reset(String name) { 
    // Not implemented 
} 

@Override 
public void close() { 
    /// ... 
    } 
} 

該文檔提到的幾個人你可以參考它們的實現尋找靈感。