候選APM
-
naver/pinpoint(
github上2148個star
)
韓國的一個公司開源的,有待評估使用情況,就是整體還不是JDK8,有些還是有點費勁,技術上采用agent的方式,對java友好
-
大眾點評cat(
github上1725個star
)
看接入的公司還是挺多的,個人感覺是點評名氣還可以,但是搭建起來有點費勁,很多東西都寫死配置了,不靈活。整體設計的話,由於沒有采用agent的方式,采用的是api手工埋點的方式,跟SNG的很像,好處的是跨語言,不好的地方就是對java來說用起來還需要包裝一下
-
sky-walking(
github上374個star
)
開發團隊加入了OneAPM,目前看使用的公司不多,整體技術采用agent方式,對java友好。提供了對dubbo等的支持,屬於soa時代的產品
技術架構
pinpoint
CAT
skywalking
簡要評價
從技術架構上看,對於log的存儲都使用了hbase,也都是自己實現了日志/監控數據的上報。pinpoint支持udp的方式,這個好一點。這類還是有點SOA時代的痕跡,更為符合大數據時代的做法是,監控數據丟給kafka,然后監控server來消費數據即可,這一點在cat中使用了consumer有點這個味道,但是沒有徹底轉型過來。
展望
APM整體的功能結構,主要是 1.日志追蹤,2.監控報警 3.性能統計。對於日志追蹤,已經有spirng cloud zipkin了,這個對spring cloud體系結合的很好,確的就是監控報警和性能統計,可以采用agent的方式進行無侵入的監控,或者采用log appender的方式到kafka,之后再進行error的監控報警,以及把performance的數據log到日志,發送到kafka來進行統計。
docs
歡迎關注微信公眾號:shoshana