應用觀測器 —— 行級別的實時觀測工具


隨着業務的發展,程序邏輯會變得越來越復雜,為了保證線上系統不出 Bug,我們可能做了很多努力。但是,誰又能保證不出線上 Bug 呢? 唉!世界上最痛苦的是:工作還在,獎金沒了。只有盡快解決才能挽救年終獎。然而世界上最遙遠的距離就是可以調試的本地和出現 Bug 的線上。那么面對一些系統,既不能打斷點調試,Bug 又無法在本地復現,我們該如何解決? 接下來,我們就來討論一下這一富有挑戰性的工作。

假如生產環境有個 Bug

調查線上問題,我們首先會借助於 Log、Tracing 和 Metrics。對於簡單的報錯,查 Log 就能解決。對於復雜的系統調用和邏輯錯誤,可能要借助於 Tracing 查看上下文。調查性能問題,查看 Metrics 會更有幫助。 如果通過上述手段就已經定位到了問題,是很幸運的。但有時我們會發現關鍵的位置缺少了日志,沒法准確的獲知代碼運行情況,這會極大阻礙我們清晰的定位問題。 缺少日志只能補上,再發布一次。對於大多數應用系統來說,發布一次的時間成本是不低的,從數分鍾到數小時不等。補日志的過程來上幾次,要耗費很多心力,同時也要頂住不小的業務側的壓力。所以生產系統上發現了 Bug,找起來通常很不容易。 

有沒有更好的方法?

和稍有經驗的同事討論,相信他一定會給你推薦 Arthas。Arthas 相比與遠程 Debug,對於環境的依賴更少,也不會因為打斷點而阻塞業務請求。但是如果你不是一個運維老炮,那當線上問題發生了,求助於Arthas,你可能會發現短時間內不知從何入手,Arthas 大概有30+ 子命令,每個子命令都有一系列的參數。 有沒有一款工具,即像遠程 Debug 一樣操作簡便;又像 Arthas 那樣對生產環境的要求和影響都比較小?答案是:當然!這款工具正是本文要向大家介紹的應用觀測器(App Observer),一款代碼行級別的實時非阻塞應用調試工具。

應用觀測器

動態日志 —— 即時添加,即時生效

 
在排查問題時,你是否后悔過當初忘記打印日志?有了動態日志,再也不會有這樣的煩惱。動態日志的生效過程,不需要重啟應用程序,做到了“即時添加,即時生效”。添加動態日志時,可以使用條件表達式控制日志的打印與否,還可以在日志表達式中觀測變量值。在整個過程中,動態日志不會改變原有的代碼行數,不影響通過原日志系統排查問題。
 

非阻塞斷點 —— 讓你像 Debug 一樣排查問題

非阻塞斷點在問題排查上,比動態日志跟進一步。最顯著的增強點在於可以觀測程序的執行堆棧,讓程序的調用鏈路一目了然。此外,在觀測變量值方面,可以一步到位,自動觀測函數體內的所有變量。所有的觀測行為,都不會阻塞程序的執行,真正做到了似斷點又非斷點。
 

實時 Metrics —— 清爽易用的性能統計工具

實時 Metrics 用於輔助排查程序的性能問題,不需要添加非業務代碼,在保持了程序邏輯清爽的同時,完成了統計觀測:
  • 計數器:用於統計某一行代碼的執行次數;
  • 方法執行耗時:用於統計函數體的執行耗時; 

因為平台限制,該部分詳細功能,大家可以點擊 【線上Bug照妖鏡——應用觀測器(App Observer)】 了解詳情

Cloud Toolkit 雲插件:

集開發、測試、診斷、部署為一體的免費本地 IDE 插件,幫助開發者真正實現一鍵式研發部署。提升研發部署速度數倍以上,大幅降低研發成本。

獲取方式

應用觀測器(App Observer)是Alibaba Cloud Toolkit for IntelliJ 插件的一部分,已經隨着 2021.11.1 版本的插件上架插件市場: https://plugins.jetbrains.com/plugin/11386-alibaba-cloud-toolkit 。已經安裝 IntelliJ IDEA 的開發者也可以在 IDEA 的插件市場搜索 “Alibaba Cloud Toolkit” 進行安裝。 詳細的使用方式,可以參考官方的使用文檔:https://help.aliyun.com/document_detail/326231.html 

未來可期

支持更多的 Platform 和 Runtime 當前應用觀測器僅支持 Java 應用,接下來我們會增加更多語言的支持。當前發布版本也僅支持觀測運行在 Linux 中的應用服務,后續會逐步支持觀測 Windows 下的應用程序。 

雲端控制台

當前應用觀測器采用了插件直連應用的模式,在網絡通路上我們借到了 SSH。這需要假設用戶有 SSH 訪問權限。接下來我們計划提供一個雲端服務。有了雲端服務后,可以把觀測數據給記錄下來,繪制成圖表,方便用戶在較大的時間尺度上了解服務健康狀況。同一個應用下不同開發者添加的觀測點也可以相互看到,會成為一種運維協作的新方式。 

雲原生應用平台集成 

當前,在首次使用應用觀測器時,有一個添加 Java Agent 參數並重啟的過程。對於雲原生應用來說,應用觀測的能力,最好是與生俱來的。所以應用觀測器這類工具,勢必會成為雲原生應用的 Sidecar。我們后續會和 ACK 服務、Serverless 服務、SAE 服務進行集成,讓雲原生用戶能使用上開箱即用的實時應用觀測能力。
 
此外,也歡迎把您遇到的問題反饋至我們的 Github Issue 空間:https://github.com/alibaba-cloud-toolkit/cloud-toolkit-jetbrains/issues
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM