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

https://mp.weixin.qq.com/s/qgcCuYYkP6NwyvPh0wr28gios

因爲最近在作監控方面的工做,所以也讀了很多相關的經驗分享。其中有這樣一篇文章總結了一些基於Spring Boot的監控方案,所以翻譯了一下,但願能夠對你們有所幫助。

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

Spring Boot Actuator經過/metrics端點,以開箱即用的方式爲應用程序的性能指標與響應統計提供了一個很是友好的監控方式。spring

因爲在集羣化的彈性環境中,應用程序的節點能夠增加、擴展,並由很是大量的應用實例所組成。對於孤立節點的監控可能即費力又沒有什麼實際效果。因此,使用基於時間序列的數據聚合工具將得到更好的效果。微信

本文的目標在於找出一種僅須要經過工具和配置的方式就能實現的解決方案,來對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實現準實時監控
使用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實現準實時監控
使用Spring Boot Actuator、Jolokia和Grafana實現準實時監控
繼續前進,我嘗試了一些可能能夠解決這些問題的現代化運維工具:運維

  • Prometheus: 由SoundCloud編寫,它存儲一系列的監控數據並賦予漂亮的圖標展示。Prometheus Gauges和Actuator Metrics並不徹底兼容,因此人們寫了 一個數據轉換器。你也能夠配置Prometheus來收集JMX數據。
  • Sensu: 做爲Nagios和Zabbix的現代化替代品,它有一個插件能夠直接鏈接到Spring Boot,可是這個倉庫最近已經不太更新了,因此我決定放棄它。
    • StatsD: Spring Boot有一篇文章是關於自定義導出數據給StatsD。然而,你除了要爲Spring Boot應用安裝StatsD實例以外,還不得不實現一些存根來讓它工做起來。
  • Graphite: You got to be a hero to install and get Graphite running. If you get there, you can configure it along StatsD to get metrics working in a chart.
  • OpenTSDB: Spring Boot有一篇文章關於鏈接數據到OpenTSBD. 然而,這種方式與StatsD相似,你必須實現和維護自定義的代碼來讓它工做起來。另外,OpenTSDB沒有開箱即用的圖形可視化工具。
  • JMXTrans: 能夠用來提取數據併發送到其餘的監控工具,它也須要具體的實現。
  • Ganglia: 也是基於JVM上的工具,記錄全部Actuator資源。與以前所說的APM有相同問題。

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

  • Jolokia: Spring Boot 承認使用Jolokia來經過HTTP導出export JMX數據。你只須要在工程類路徑中增長一些依賴項,一切都是開箱即用的。不須要任何額外的實現。
  • Telegraf: Telegraf支持經過整合Jolokia來集成JMX數據的收集。它有一個預製的輸入插件,它是開箱即用的。不須要任何額外的實現。只須要作一些配置便可。
  • InfluxDB: InfluxDB經過 輸出插件從Telegraf接收指標數據,它是開箱即用的,不須要任何額外的實現。
    Grafana: Grafana經過鏈接InfluxDB做爲數據源來渲染圖標。它是開箱即用的,不須要額外的實現。

簡而言之,配置全部這些東西都很是的簡單。spring-boot

使用Spring Boot Actuator、Jolokia和Grafana實現準實時監控
使用Spring Boot Actuator、Jolokia和Grafana實現準實時監控
使用Spring Boot Actuator、Jolokia和Grafana實現準實時監控
使用Spring Boot Actuator、Jolokia和Grafana實現準實時監控
版權聲明工具

本文采用 CC BY 3.0 CN協議 進行許可。 可自由轉載、引用,但需署名做者且註明文章出處。如轉載至微信公衆號,請在文末添加做者公衆號二維碼。
長按指紋
一鍵關注
使用Spring Boot Actuator、Jolokia和Grafana實現準實時監控
使用Spring Boot Actuator、Jolokia和Grafana實現準實時監控
活動推薦
使用Spring Boot Actuator、Jolokia和Grafana實現準實時監控
使用Spring Boot Actuator、Jolokia和Grafana實現準實時監控性能

相關文章
相關標籤/搜索