姓名:馬行健
學(xué)號:16020199036
轉(zhuǎn)載自:https://zhuanlan.zhihu.com/p/26612510
LeanCloud 的云引擎提供了一種支持多種語言的容器服務(wù)琼蚯,由開發(fā)者編寫后端代碼來實現(xiàn)更復(fù)雜的后端業(yè)務(wù)邏輯,作為云存儲的補(bǔ)充痘煤。但對于云引擎來說猜旬,開發(fā)者編寫的后端代碼是一個「黑盒」荠察,在出現(xiàn)錯誤時悍及,開發(fā)者需要自行通過日志中查找出現(xiàn)問題的接口东且;而如果出現(xiàn)性能問題也只能依靠擴(kuò)容來緩解,事后開發(fā)者還需要自行查找性能瓶頸金度,LeanCloud 實在幫不上什么忙应媚。
查找性能瓶頸是解決性能問題的最重要一環(huán)。現(xiàn)在市面上類似 newrelic 的產(chǎn)品有很多猜极,但往往價格不菲中姜,因此我們開發(fā)了一個名為 LeanEngine APM(LeanEngine APM (Beta))的實驗性項目,來幫助云引擎用戶更有針對性地觀測性能數(shù)據(jù)跟伏、定位性能瓶頸丢胚。目前 APM 支持 Node.js、Python 和 Java 三種語言受扳。當(dāng)用戶在代碼中接入對應(yīng)的采集器后携龟,自定義路由的統(tǒng)計數(shù)據(jù)便會自動上報至 APM。
APM 報表頁面可以顯示出調(diào)用量勘高、耗時和成功率峡蟋,并且支持按照多種維度進(jìn)行分組和篩選展現(xiàn),下面是部分報表的截圖华望。
各響應(yīng)代碼的請求量隨時間變化圖
可以選擇時間粒度和范圍蕊蝗,可以根據(jù)路由、實例和響應(yīng)代碼進(jìn)行篩選
路由匯總統(tǒng)計赖舟,可以按照次數(shù)蓬戚、錯誤率和平均響應(yīng)排序
如果開發(fā)者希望統(tǒng)計某一個函數(shù)的執(zhí)行情況,特別是調(diào)用外部服務(wù)和進(jìn)行后臺操作建蹄,也可以使用 APM 的「函數(shù)追蹤」功能(具體使用方法見特定語言的采集器文檔)碌更。以 Node.js 為例,我們用 wrapTask 將已有的函數(shù)包裹起來洞慎,這樣 APM 便可以統(tǒng)計到調(diào)用次數(shù)和耗時等信息:
var apm = require('leanengine-apm');
var sendMail = apm.wrapTask('sendMail', function(template, address) {
? // ...
});
各語言的采集器都是開源的(Node.js 采集器痛单、Python 采集器、Java 采集器)劲腿,今后我們還會在 APM 添加更多的工具和功能旭绒,幫助開發(fā)者解決云引擎中的性能問題,也歡迎大家將需求提交到 Github Issue 中幫助我們來完善這一產(chǎn)品焦人。