為特定應用程式程式碼新增自訂監控功能


Performance Monitoring 會收集追蹤記錄,協助您監控應用程式的效能。追蹤記錄是應用程式在兩個時間點之間擷取的效能資料報表。

您可以自行建立追蹤記錄,監控與應用程式中特定程式碼相關聯的效能資料。透過自訂程式碼追蹤記錄,您可以評估應用程式完成特定工作或一組任務所需的時間,例如載入一組圖片或查詢資料庫。

自訂程式碼追蹤記錄的預設指標為「持續時間」(追蹤記錄開始與停止點之間的時間),但您也可以新增自訂指標

在程式碼中,請使用 Performance Monitoring SDK 提供的 API 定義自訂程式碼追蹤記錄的開頭和結尾。 如果是 Android 應用程式,您也可以使用 @AddTrace 註解監控特定方法。 自訂程式碼追蹤記錄建立後,就能隨時啟動,而且符合執行緒安全規範。

由於這些追蹤記錄的預設指標是「時間長度」,因此有時也稱為「時間長度追蹤記錄」。

您可以在追蹤記錄表的「自訂追蹤記錄」子分頁中查看這些追蹤記錄的資料,該子分頁位於「效能」資訊主頁的底部 (請參閱本頁後續的使用主控台相關說明)。

預設屬性、自訂屬性和自訂指標

如果是自訂程式碼追蹤記錄,Performance Monitoring 會自動記錄預設屬性 (常見的中繼資料,例如應用程式版本、國家/地區、裝置等),您可以在 Firebase 控制台中篩選追蹤記錄的資料。您也可以新增及監控自訂屬性 (例如遊戲等級或使用者屬性)。

您可以進一步設定自訂程式碼追蹤,為在追蹤範圍內發生的效能相關事件記錄自訂指標。例如,您可以建立自訂指標,計算快取命中和失敗的次數,或 UI 在一段明顯的時間範圍內沒有回應的次數。

自訂屬性和自訂指標會顯示在 Firebase 控制台中,與追蹤記錄的預設屬性和預設指標並列。

新增自訂程式碼追蹤記錄

使用 Performance Monitoring Trace API 新增自訂程式碼追蹤記錄,以監控特定應用程式程式碼。

注意事項:

  • 應用程式可以有多個自訂程式碼追蹤記錄。
  • 您可以同時執行多個自訂程式碼追蹤記錄。
  • 自訂代碼追蹤記錄的名稱必須符合下列規定:開頭或結尾不得有空白字元、開頭不得有底線字元 (_),且長度上限為 100 個字元。
  • 自訂程式碼追蹤記錄支援新增自訂指標自訂屬性

如要啟動及停止自訂程式碼追蹤,請使用類似下方的程式碼行包裝要追蹤的程式碼 (本範例使用自訂追蹤名稱 test_trace):

Kotlin+KTX

// Import these Performance Monitoring classes at the top of your `.kt` file
import com.google.firebase.perf.FirebasePerformance;
import com.google.firebase.perf.metrics.Trace;

val myTrace = Firebase.performance.newTrace("test_trace")
myTrace.start()

// code that you want to trace

myTrace.stop()

Java

// Import these Performance Monitoring classes at the top of your `.java` file
import com.google.firebase.perf.FirebasePerformance;
import com.google.firebase.perf.metrics.Trace;

Trace myTrace = FirebasePerformance.getInstance().newTrace("test_trace");
myTrace.start();

// code that you want to trace

myTrace.stop();

(選用) 使用 @AddTrace 監控特定方法

Android 應用程式也支援 @AddTrace 註解,可用於檢測自訂程式碼追蹤記錄。使用這項功能時,追蹤記錄會從指定方法的起始位置開始,並在方法完成後停止,包括該方法叫用的任何項目。

舉例來說,您可以建立名為 onCreateTrace 的自訂程式碼追蹤,在呼叫 onCreate() 方法時執行。

Kotlin+KTX

// Import these Performance Monitoring classes at the top of your `.kt` file
import com.google.firebase.perf.FirebasePerformance;
import com.google.firebase.perf.metrics.AddTrace;

// Add the `@AddTrace` annotation above the method you want to trace
// the `enabled` argument is optional and defaults to true
@AddTrace(name = "onCreateTrace", enabled = true)
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
}

Java

// Import these Performance Monitoring classes at the top of your `.java` file
import com.google.firebase.perf.FirebasePerformance;
import com.google.firebase.perf.metrics.AddTrace;

// Add the `@AddTrace` annotation above the method you want to trace
@Override
@AddTrace(name = "onCreateTrace", enabled = true /* optional */)
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

在自訂程式碼追蹤記錄中新增自訂指標

使用 Performance Monitoring Trace API 將自訂指標新增至自訂程式碼追蹤記錄。

注意事項:

  • 自訂指標的名稱必須符合下列規定:開頭或結尾不得有空白字元、開頭不得有底線 (_) 字元,且長度上限為 100 個字元。
  • 每個自訂程式碼追蹤記錄最多可記錄 32 個指標 (包括預設的 Duration 指標)。

如要新增自訂指標,請在每次事件發生時,加入類似下列的程式碼行。舉例來說,這個自訂指標會計算應用程式中發生的效能相關事件,例如快取命中和未命中 (使用 item_cache_hititem_cache_miss 的事件名稱範例,以及 1 的遞增值)。

Kotlin+KTX

val myTrace = Firebase.performance.newTrace("test_trace")
myTrace.start()

// code that you want to trace (and log custom metrics)
val item = cache.fetch("item")
if (item != null) {
    myTrace.incrementMetric("item_cache_hit", 1)
} else {
    myTrace.incrementMetric("item_cache_miss", 1)
}

myTrace.stop()

Java

Trace myTrace = FirebasePerformance.getInstance().newTrace("test_trace");
myTrace.start();

// code that you want to trace (and log custom metrics)
Item item = cache.fetch("item");
if (item != null) {
    myTrace.incrementMetric("item_cache_hit", 1);
} else {
    myTrace.incrementMetric("item_cache_miss", 1);
}

myTrace.stop();

為自訂程式碼追蹤記錄建立自訂屬性

使用 Performance Monitoring Trace API,將自訂屬性新增至自訂程式碼追蹤記錄。

如要使用自訂屬性,請在應用程式中新增程式碼,定義屬性並將其與特定自訂程式碼追蹤連結。從追蹤記錄開始到追蹤記錄停止的時間點之間,您隨時可以設定自訂屬性。

注意事項:

  • 自訂屬性名稱必須符合下列規定:

    • 開頭或結尾不得有空白字元,開頭不得有底線 (_) 字元
    • 不能有空格
    • 長度上限為 32 個半形字元
    • 名稱可使用的字元為 A-Za-z_
  • 每個自訂程式碼追蹤記錄最多可記錄 5 個自訂屬性。

  • 請確認自訂屬性不含任何可向 Google 提供個人識別資訊的資訊。

    進一步瞭解這項規範

Kotlin+KTX

Firebase.performance.newTrace("test_trace").trace {
    // Update scenario.
    putAttribute("experiment", "A")

    // Reading scenario.
    val experimentValue = getAttribute("experiment")

    // Delete scenario.
    removeAttribute("experiment")

    // Read attributes.
    val traceAttributes = this.attributes
}

Java

Trace trace = FirebasePerformance.getInstance().newTrace("test_trace");

// Update scenario.
trace.putAttribute("experiment", "A");

// Reading scenario.
String experimentValue = trace.getAttribute("experiment");

// Delete scenario.
trace.removeAttribute("experiment");

// Read attributes.
Map<String, String> traceAttributes = trace.getAttributes();

追蹤、查看及篩選成效資料

在資訊主頁中追蹤特定指標

如要瞭解重要指標的趨勢,請將這些指標新增至 成效資訊主頁頂端的指標看板。您可以查看逐週變化,或確認近期程式碼變更是否有助於提升效能,藉此快速找出迴歸問題。

<span class=Firebase Performance Monitoring 資訊主頁"/>

如要將指標新增至指標看板,請按照下列步驟操作:

  1. 前往 Firebase 主控台的「效能」資訊主頁
  2. 按一下空白指標資訊卡,然後選取要加入資訊主面板的現有指標。
  3. 在已填入資料的指標資訊卡上按一下 ,即可查看更多選項,例如取代或移除指標。

指標板會顯示一段時間內收集到的指標資料,以圖像形式和數值百分比變化。

進一步瞭解如何使用資訊主頁

查看追蹤記錄及其資料

如要查看追蹤記錄,請前往 Firebase 控制台的「成效」資訊主頁,向下捲動至「追蹤記錄」表格,然後按一下適當的子頁籤。表格會顯示每個追蹤記錄的前幾項指標,您甚至可以依特定指標的百分比變化排序清單。

Performance MonitoringFirebase 控制台提供疑難排解頁面,會醒目顯示指標變更,讓您輕鬆快速解決,並盡可能減少對應用程式和使用者造成的影響。您可以使用疑難排解頁面,瞭解潛在的效能問題,例如在下列情況下:

  • 您在資訊主頁上選取相關指標後,發現出現大幅差異。
  • 在追蹤記錄表中,您可以排序來顯示最大差異值,並查看百分比變化幅度。
  • 您會收到電子郵件快訊,通知您有效能問題。

您可以透過下列方式存取疑難排解頁面:

  • 在指標資訊主頁中,按一下「查看指標詳細資料」按鈕。
  • 在任何指標資訊卡上,依序選取「」>「查看詳細資料」。疑難排解頁面會顯示所選指標的相關資訊。
  • 在追蹤記錄表中,按一下與該追蹤記錄相關聯的列中任一指標值或追蹤記錄名稱。
  • 在電子郵件快訊中,按一下「立即調查」

在追蹤記錄表中按一下追蹤記錄名稱,即可深入瞭解感興趣的指標。按一下「Filter」 按鈕,即可依屬性篩選資料,例如:

<span class=Firebase Performance Monitoring 資料以「/>」屬性篩選
  • 依「應用程式版本」篩選,查看過去或最新版本的資料
  • 依「裝置」篩選,瞭解舊版裝置如何處理您的應用程式
  • 依「國家/地區」篩選,確認資料庫位置不會影響特定區域

進一步瞭解如何查看追蹤記錄資料

後續步驟

  • 進一步瞭解如何使用屬性檢查成效資料。

  • 進一步瞭解如何在 Firebase 控制台中追蹤效能問題

  • 設定快訊,以便在程式碼變更導致應用程式效能降低時發出通知。舉例來說,如果特定自訂程式碼追蹤的時間長度超過您設定的門檻,您可以為團隊設定電子郵件快訊。

  • 查看使用者工作階段的詳細報表,在其中,您可以在同一個工作階段收集到的其他追蹤記錄的時間軸背景中,查看特定追蹤記錄。