“應用觀測器”支持在不重新發布應用的情況下,實時添加日志并查看輸出;觀測線程執行堆棧和上下文變量,而不會阻塞程序的執行;統計代碼行執行次數和方法執行耗時。
前提條件
目前僅支持觀測 Java 應用(JDK >= 1.7);
不能跟Java 遠程調試同時使用(即不能跟 -agentlib:jdwp 同時使用)
Java 應用需要運行在 Linux (Ubuntu 12+ 、Debain 7+ 、Centos 6+ 或其他等同的Linux發行版) 環境上,glibcxx 版本 >= 3.4.15;
本地可以通過 SSH 連上 Java 應用所在的服務器;
加入文檔底部的公測群,獲取 Cloud Toolkit 插件最新離線安裝包;
使用步驟
1. 在 IDEA 右側工具欄中找到“應用觀測器”頁簽欄,根據你的 Java 工程所在的運行環境,選擇適合你的開啟方式。
2. (以 Host 為例)選擇對應的 Host,點擊“應用觀測”按鈕;根據提示選擇目標進程。如尚未添加 Host,請先添加 Host。(注意:應用觀測器的使用依賴 Java Agent 注入 JVM 進程,首次使用時會在目標服務器上自動下載 agent 并重啟應用)
3. 成功開啟后,可以在右側面板中查看概覽信息,在某行代碼上右鍵添加觀測點。
4. 當觀測點有命中記錄后,點擊編輯器中的觀測點圖標查看詳細信息。
觀測點類型
目前插件中共提供4種類型的觀測點,分別使用不同的 icon 表示。
1. 日志
日志類型的觀測點可以在代碼行中動態的添加日志表達式,添加后不需要重新發布應用,當程序運行過對應的代碼行時,即可在插件端查看日志記錄;同時,日志也會輸出到 Java 進程的標準輸出里。日志類型的觀測點在刪除前會一直生效,只要程序執行到該行代碼時,自動輸出記錄。
關于添加日志觀測點時的屬性說明:
格式:日志格式,可以使用 {} 觀測自定義表達式,如:{token},{getName()};
日志等級:支持 INFO、WARNING、ERROR 三種日志等級;
條件:記錄日志的條件,只有當條件表達式為 true 時,才會打印日志;
2. 快照(又名:虛擬斷點)
快照類型觀測點可以非阻塞的捕獲代碼執行時的堆棧,同時支持查看方法內部的變量值。快照類型的觀測點只會觸發1次記錄。
關于添加快照觀測點的屬性說明:
條件:記錄快照的條件,只有當條件表達式為 true 時,才會記錄快照;
表達式:在程序執行到快照點時,需要額外記錄的表達式的值;
3. 計數器
計數器觀測點可以統計該行代碼的執行次數。計數器觀測點在手動刪除前會一直生效,只要程序執行到該行代碼時,自動輸出記錄。
4. 方法執行耗時
方法執行耗時觀測點可以統計該方法的執行耗時。該類型的觀測點在手動刪除前會一直生效,只要程序執行過該方法,自動輸出記錄。
關于方法執行耗時觀測點輸出的說明:
最小值:在觀測點添加后,該方法執行的最短時間(單位:ms);
最大值:在觀測點添加后,該方法執行的最長時間(單位:ms);
平均值:在觀測點添加后,該方法執行的平均時間(單位:ms);
關于觀測點狀態的說明
觀測點共有4種狀態,分別為用4種顏色標識:
未注冊(用黃色圖標表示):觀測點尚未注冊到服務端;
已注冊(用綠色圖標表示):觀測點已注冊(或正在注冊)至 Java 工程中;
注冊異常(用紅色圖標表示):觀測點在注冊到 Java 工程時出現異常;
已注冊,并且有新的觸發記錄(用綠色圖標表示,并且在圖標右上角有小紅點):Java 程序執行過觀測點所在行,并且觸發信息已被應用觀測器捕獲;
如何開始使用?
當前,應用觀測器功能處于公測階段,可以在最新版的 Cloud Toolkit for IDEA 中找到該功能。如果在使用中有任何疑問,請加釘釘群反饋,群號:34965379。
FAQ
1. 問:在 IDEA 插件上開啟觀測后,提示“應用觀測器啟動失敗,請稍后重試”。
答:請參考使用前提條件,依次檢查 JDK版本、是否同時開啟了遠程調試(jdwp)、glibcxx 版本;如還未解決,請加上方的釘釘群反饋。