Spring Boot Actutaur + Telegraf + InFluxDB + Grafana 構建監控平臺之應用數據分析

本節將引入完美的granafa儀表板,在上節的基礎上,並提出本身的一些監控數據的總結和見解

你能夠有一個相似於這個的Dashboard,會引入監控Zimbra協做

  本節環境採用的是centos7系統,配置跟上節介紹的同樣,可是Telegraf是企業級監控加入不少可靠的監控插件,很是有用的一些參數,隨之也給自java

的監控數據分析帶來了複雜度。算法

  • Telegraf:它負責收集咱們經過配置文件傳遞的全部數據,Telegraf收集咱們配置的輸出結果,例如CPU / RAM / LOAD或Nginx,MariaDB等服務。
  • InfluxDB:這是Telegraf發送全部這些信息的地方,InfluxDB專門設計用於高效存儲大量信息,此外,能夠定義信息保留期以防萬一出現性能問題
  • Grafana:它是儀表板,負責顯示InfluxDB存儲在數據庫中的全部信息

在Grafana中導入儀表板  

  你能夠從這裏下載:https://grafana.com/dashboards/2846/        導入它們的步驟以下,轉到咱們的儀表板,而後按導入spring

  輸入Zimbra儀表板的ID:2846,咱們將自動顯示如下內容,選擇咱們的數據源並將其提供給導入數據庫

 

  幾分鐘後,咱們能夠開始看到一個生動的儀表板,以下所示centos

數據分析

  Grafana將系統和應用程序的的數據展現出來,就要開始分析數據的意圖。安全

  1.  應用程序數據:SpringBoot Actutaur中的metrics收集到的數據指標,經過jolokia拉取數據到telegrafa上代理轉給輸入到時間序列數據庫中(我嘗試過直接將指標存入influxdb中,但未找到解決方案,有知道的夥伴能夠給我留言)    

    

  補充:jolokia是一個JMX-HTTP橋樑,可替代JSR-160鏈接器。它是一種基於代理的方法,支持許多平臺。網絡

   除了基本的JMX操做外,它還經過獨特的功能(如批量請求和細粒度的安全策略)加強了JMX遠程處理能力,應用程序的監控直接擴展到jvm。session

   

 

  特別注意:代理模式只能在須要時使用。代理servlet自身比代理模式更強大,由於它消除了增長總體複雜性和性能的附加層。此外,在代理模式下,某些功能(如合併MBeanServers)也不可用。jvm

在telegrafa中,開啓對應的數據,jolokia採用拉取數據,因此都會在[inputs.jolokia]更改性能

   [[inputs.jolokia.metrics]]
     name = "類加載次數" mbean = "java.lang:type=ClassLoading" attribute = "LoadedClassCount,UnloadedClassCount,TotalLoadedClassCount" [[inputs.jolokia.metrics]] name = "metrics數據" mbean="org.springframework.boot:type=Endpoint,name=metricsEndpoint" attribute = "Data"

  grafana中在數據庫中查到的就會有對應由jolokia拉去的數據作下拉列表

  • 系統信息:包括處理器數量processors、運行時間uptime和instance.uptime、系統平均負載systemload.average。
  • mem.*:內存概要信息,包括分配給應用的總內存數量以及當前空閒的內存數量。這些信息來自java.lang.Runtime。
  • heap.*:堆內存使用狀況。這些信息來自java.lang.management.MemoryMXBean接口中getHeapMemoryUsage方法獲取的java.lang.management.MemoryUsage。
  • nonheap.*:非堆內存使用狀況。這些信息來自java.lang.management.MemoryMXBean接口中getNonHeapMemoryUsage方法獲取的java.lang.management.MemoryUsage。
  • threads.*:線程使用狀況,包括線程數、守護線程數(daemon)、線程峯值(peak)等,這些數據均來自java.lang.management.ThreadMXBean。
  • classes.*:應用加載和卸載的類統計。這些數據均來自java.lang.management.ClassLoadingMXBean。
  • gc.*:垃圾收集器的詳細信息,包括垃圾回收次數gc.ps_scavenge.count、垃圾回收消耗時間gc.ps_scavenge.time、標記-清除算法的次數gc.ps_marksweep.count、標記-清除算法的消耗時間gc.ps_marksweep.time。這些數據均來自java.lang.management.GarbageCollectorMXBean。
  • httpsessions.*:Tomcat容器的會話使用狀況。包括最大會話數httpsessions.max和活躍會話數httpsessions.active。該度量指標信息僅在引入了嵌入式Tomcat做爲應用容器的時候纔會提供。
  • gauge.*:HTTP請求的性能指標之一,它主要用來反映一個絕對數值。好比上面示例中的gauge.response.hello: 5,它表示上一次hello請求的延遲時間爲5毫秒。
  • counter.*:HTTP請求的性能指標之一,它主要做爲計數器來使用,記錄了增長量和減小量。如上示例中counter.status.200.hello: 11,它表明了hello請求返回200狀態的次數爲11。
  • double asterisks(star-star)來自與Spring MVC匹配的請求/**(一般是靜態資源)
  • /trace:該端點用來返回基本的HTTP跟蹤信息
  • /dump:該端點用來暴露程序運行中的線程信息。

 

  在應用層面只能監控到接口的200,response,400的狀態,時間響應上,須要的信息量還不足。能夠在telegraf.conf中開啓net監控網絡等,使用正確的插件幫助咱們實現監控需求。

  以上都是我我的在實踐中的總結和資料整理,若有疑問能夠給我留言,我會及時回覆您的。

相關文章
相關標籤/搜索