天天看點

使用Spring Boot Actuator、Jolokia和Grafana實作準實時監控

由于最近在做監控方面的工作,是以也讀了不少相關的經驗分享。其中有這樣一篇文章總結了一些基于Spring Boot的監控方案,是以翻譯了一下,希望可以對大家有所幫助。

原文: Near real-time monitoring charts with Spring Boot Actuator, Jolokia and Grafana

Spring Boot Actuator通過

/metrics

端點,以開箱即用的方式為應用程式的性能名額與響應統計提供了一個非常友好的監控方式。

由于在叢集化的彈性環境中,應用程式的節點可以增長、擴充,并由非常大量的應用執行個體所組成。對于孤立節點的監控可能即費力又沒有什麼實際效果。是以,使用基于時間序列的資料聚合工具将獲得更好的效果。

本文的目标在于找出一種僅需要通過工具和配置的方式就能實作的解決方案,來對Spring Boot Metrics實作基于時間序列的監控。

像NewRelic, AppDynamics或DataDog這些APM系統都能很好地完成這樣的任務,它們通過使用JVM和位元組碼工具來生成自己的名額、分析工具和相關事務。也可以通過使用

@Timed

注釋方法來實作。但是,這些方法将忽略所有Spring Boot Actuator庫所提供的可用資源。另外,使用這些方法還有一個與保留資料相關的問題,它們對于短時間視窗内的監控是相對模糊的。

使用Spring Boot Actuator、Jolokia和Grafana實作準實時監控

spring-boot-admin

 可以作為另外一個備選方案,因為它可以連接配接到Spring Boot的執行個體、并且可以聚合節點等。但是, 

/metrics

 端點并不是根據時間軸來進行監控的,同時在不同節點上的相同應用子產品(水準擴充)也沒有得到聚合。這意味着您将面對這兩種情況:沒有時間序列的監控資料、隻有對孤立節點的監控資料快照。

使用Spring Boot Actuator、Jolokia和Grafana實作準實時監控

jconsole

visualvm

可能是另外一種選擇,它們通過RMI直接連接配接到JMX節點。Actuator存儲來自JMX的MBean内的Metrics資料。另外,通過使用 

Jolokia

,MBeans以RESTful HTTP端點的方式暴露,

/jolokia

。是以,相同的資訊可以通過兩個端點來擷取:JMX MBean Metrics和Rest HTTP Jolokia端點。然而,這種方式存在同樣的問題,它們直接連接配接到叢集環境中的單個節點,另外還伴随着痛苦的老式RMI協定。

使用Spring Boot Actuator、Jolokia和Grafana實作準實時監控

繼續前進,我嘗試了一些可能可以解決這些問題的現代化運維工具:

經過一番研究,我發現了一個更好的解決方案:通過InfluxDB 和Telegraf實作,零編碼,隻需要通過一些正确的配置。

簡而言之,配置所有這些東西都非常的簡單。

使用Spring Boot Actuator、Jolokia和Grafana實作準實時監控
使用Spring Boot Actuator、Jolokia和Grafana實作準實時監控
使用Spring Boot Actuator、Jolokia和Grafana實作準實時監控