APM背景
隨着微服務、雲計算的發展,提升了應用的可用性、擴展性,同時也帶來了運維、監控的復雜性,當我們需要從眾多服務依賴中,查詢出問題根源也越來越難。
系統的監控分為三個維度:
1、Metrics 指標性統計
一個服務的正確率、成功率、流量、TPS、響應時間等
2、Tracing 分布式追蹤
從請求開始到結束,服務節點之間的調用鏈路
3、 Logging 日志記錄
程序在執行的過程中間發生了一些日志,會一幀一幀地跳出來給大家去記錄這個東西,這是日志記錄
分布式追蹤
分布式鏈路追蹤就是將一次分布式請求還原成調用鏈路,將一次分布式請求的調用情況集中展示,比如各個服務節點上的耗時、請求具體到達哪台機器上、每個服務節點的請求狀態等等。
依據Google Dapper論文,眾多分布式追蹤開源軟件出現,比如zipkin、skywalking.
分布式追蹤的基本邏輯:
skywalking簡介
- 官網:http://skywalking.apache.org/zh/
- github倉庫:https://github.com/apache/skywalking
- 2015年開始開源,由原華為技術專家吳晟主導實現的專門為微服務架構和雲原生架構系統而設計並且支持分布式鏈路追蹤的APM系統
- 專為微服務、雲原生架構和基於容器(Docker、K8s、Mesos)架構而設計
- apache頂級項目
- 用戶案例
特性
- 多種監控手段,語言探針和service mesh
- 多語言探針:Java、.NET Core、PHP、Node.JS、Go
- 支持多種數據存儲方式: ElasticSearch、MySql、TiDB、H2、Sharding Sphere
- 強大的UI可視化界面
- 高性能、高可用:agent端探針性能消耗低,服務端支持多種集群部署方式
- 支持多種指標的監控告警
- 微核+插件式擴展的高擴展框架
同類型對比
同類型的開源APM產品有:美圖點評的cat、韓國的pinpoint、老牌APM zipkin,綜合比較skywalking是之中最值得推薦使用的產品。
skywalking優勢
- 國內開源項目,社區成熟,且可與作者直接溝通
交流方式、自主解決問題:
qq群:392443393、901167865
github提交 issue
查閱 官方郵件列表 - 支持語言更多:Java、.NET Core、PHP、Node.JS、Go
- 支持java自動探針,代碼無侵入,只要簡單配置,就可以自動實現各種指標、調用鏈的埋點
- 眾多存儲選擇:ElasticSearch、MySql、TiDB、H2、Sharding Sphere
- 擴展性:支持模塊、插件的可拔插
- 支持java語言的幾十種插件,例如:Tomcat、RabbitMq、Kafka,且易於二次開發
- 性能:比其他開源軟件性能都強
詳細的比較可以參考網友寫的博文:
APM巔峰對決:skywalking P.K. Pinpoint
APM和調用鏈跟蹤
部署與使用
核心概念
解決實際問題
參考:
小城故事多-跟着小程學微服務-自己動手擴展分布式調用鏈https://www.jianshu.com/p/17a015848dc1
Skywalking調研與初步實踐https://www.jianshu.com/p/17a015848dc1
官網博客合集https://www.jianshu.com/p/17a015848dc1