監控是爲複雜的分佈式系統服務的,它收集跨不一樣的應用,不一樣的服務器的系統行爲信息,可經過採樣收集所需的性能指標,幫助分析性能問題,並在指標超過正常值時報警。html
全鏈路監控又名分佈式監控系統,全鏈路追蹤。 目前市面的全鏈路系統基本都是參考Google的Dapper(大規模分佈式系統的跟蹤系統)來作的。 論文java
APM(Application Performance Management)的核心思想是什麼? 在應用服務各節點相互調用的時候,從中記錄並傳遞一個應用級別的標記,這個標記能夠用來關聯各個服務節點之間的關係。好比兩個應用服務節點之間使用HTTP做爲傳輸協議的話,那麼這些標記就會被加入到HTTP頭中。可見如何傳遞這些標記是與應用服務節點之間使用的通信協議有關的,經常使用的協議就相對容易加入這些內容,一些按需定製的可能就相對困難些,這一點也直接決定了實現分佈式追蹤系統的難度。 它經過探針自動收集所需的指標,並進行分佈式追蹤。經過這些調用鏈路以及指標,APM會感知應用間關係和服務間關係,並進行相應的指標統計。 如何衡量一個大規模集羣的跟蹤系統的優劣? 它應該知足低損耗、應用透明的、大範圍部署這三個需求的。git
一個比較完整的全鏈路監控系統,一般會包括幾個部分。github
Pinpoint is an open source APM (Application Performance Management) tool for large-scale distributed systems written in Java. Pinpoint等相關工具的做用就是追蹤每一個請求的完整調用鏈路,收集調用鏈路上每一個服務的性能數據對代碼的零侵入,運用JavaAgent字節碼加強技術,只須要加啓動參數便可web
* Pinpoint-Collector:收集各類性能數據
* Pinpoint-Agent:和本身運行的應用關聯起來的探針
* Pinpoint-Web:將收集到的數據顯示成WEB網頁形式
* HBase Storage:收集到的數據存到HBase中
複製代碼
https://baijiahao.baidu.com/s?id=1585656128092617457&wfr=spider&for=pc skywalaking整體架構分爲三部分spring
https://www.cnblogs.com/zhongpan/p/7506930.html數據庫
官網:OpenZipkin · http://zipkin.io/api
github地址:https://github.com/openzipkin/zipkin 這個是twitter開源出來的,也是參考Dapper的體系來作的。 Zipkin的java應用端是經過一個叫Brave的組件來實現對應用內部的性能分析數據採集。安全
Brave的github地址:https://github.com/openzipkin/brave 這個組件經過實現一系列的java攔截器,來作到對http/servlet請求、數據庫訪問的調用過程跟蹤。 而後經過在spring之類的配置文件里加入這些攔截器,完成對java應用的性能數據採集。服務器
github地址:https://github.com/dianping/cat 跟蹤的手段,是要在代碼裏硬編碼寫一些「埋點」,也就是侵入式的。 這樣作有利有弊,好處是能夠在本身須要的地方加埋點,比較有針對性;壞處是必須改動現有系統,不少開發團隊不肯意。
https://www.cnblogs.com/Leo_wl/p/8143222.html http://blog.csdn.net/j3T9Z7H/article/details/78139771
Prometheus(普羅米修斯)是一個名字很是酷的開源監控系統。它支持多維度的指標數據模型,服務端經過HTTP協議定時拉取數據後,經過靈活的查詢語言,實現監控的目的。 Prometheus 能夠從配置或者用服務發現,去調用各個應用的 metrics 接口,來採集數據,而後存儲在硬盤中,而若是是基礎應用好比數據庫,負載均衡器等,能夠在相關的服務中安裝 Exporters 來提供 metrics 接口供 Prometheus 拉取。 採集到的數據有兩個去向,一個是報警,另外一個是可視化。
zabbix(音同 zæbix)是一個基於WEB界面的提供分佈式系統監視以及網絡監視功能的企業級的開源解決方案。 zabbix能監視各類網絡參數,保證服務器系統的安全運營;並提供靈活的通知機制以讓系統管理員快速定位/解決存在的各類問題。 zabbix由2部分構成,zabbix server與可選組件zabbix agent。 zabbix server能夠經過SNMP,zabbix agent,ping,端口監視等方法提供對遠程服務器/網絡狀態的監視,數據收集等功能,它能夠運行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平臺上。
Consul 是 HashiCorp 公司推出的開源工具,用於實現分佈式系統的服務發現與配置,內置了服務註冊與發現,具備健康檢查、Key/Value存儲、多數據中心的功能。
Health Check(健康狀態檢查)不只是對本身應用程序內部檢測各個項目之間的健康狀態(各項目的運行狀況、項目之間的鏈接狀況等),還包括了應用程序對外部或者第三方依賴庫的狀態檢測。
複製代碼
如今咱們的項目愈來愈多的從單體多層架構轉換成多項目多層架構即如今流行的微服務架構。
原來咱們的App把各個模塊分層分項目處理,好比Users項目僅僅處理User的一些業務需求,但在整個項目使用的時候,咱們僅僅須要引用其類庫便可,不用擔憂項目與類庫之間的不兼容問題,若是不兼容在編譯期已經會有提示。但現在,業務規模愈來愈龐大的時候,咱們單獨把Users做爲一個service來作,全部一切都在其內部處理,對於外部來講僅僅公開幾個api便可,但與項目之間的鏈接就從單純的物理引用關係轉換成了網絡調用關係。
當咱們架構從單體架構到微服務架構的時候,咱們會發現愈來愈多的引用從物理轉向了網絡,在原來咱們不須要考慮之間是否調用成功,但如今咱們必須考慮進去,網絡因素、服務器因素、其餘因素等都會影響各服務之間的調用,所以Health Check孕育而生,它在微服務架構中是舉足輕重的。
複製代碼
Health Check的功能有哪些?在微服務架構中很簡單,就是檢查各services的運行狀態是否正常。在微服務的架構中,全部的一切都是service,db is service,rabbitmq is service,auth is service, shoppingcart is server……咱們的架構可以根據業務需求,橫向的擴容,多個db,多個rabbitmq,多個auth,多個shoppingcart。咱們總結下,微服務架構下的Health Check是經過網絡檢查各services是否正常運行,它的功能是:
複製代碼
參考資源:
http://bigbully.github.io/Dapper-translation/ http://iamlile.github.io/2017/10/06/apm/ http://www.360doc.com/content/18/0129/10/52429660_726071502.shtml