Catch up on everthing we announced at this year's Firebase Summit. Learn more

為特定應用代碼添加自定義監控

性能監視收集跟踪來幫助您監控應用程序的性能。跟踪是應用程序中兩個時間點之間捕獲的性能數據的報告。

您可以創建自己的跟踪來監控與應用中特定代碼相關的性能數據。通過自定義代碼跟踪時,可以測量需要多長時間你的應用程序來完成特定的任務或一組任務,例如加載一組圖片或查詢數據庫。

自定義代碼跟踪的缺省度量是其“持續時間”(跡線的起點和終點之間的時間),但你可以添加自定義指標,也是如此。

在您的代碼中,您可以使用性能監控 SDK 提供的 API 定義自定義代碼跟踪的開始和結束。對於Android應用,還可以監視使用的具體方法@AddTrace註解。已經被創建之後,他們的自定義代碼的痕跡,可以隨時開始,他們是線程安全的。

由於為這些跟踪收集的默認指標是“持續時間”,因此有時將它們稱為“持續時間跟踪”。

您可以在痕跡表的自定義痕跡子選項卡,這是在性能儀表板視圖底部從這些痕跡的數據(了解更多關於使用控制台後來此頁)。

默認屬性、自定義屬性和自定義指標

對於自定義代碼的痕跡,性能自動監控日誌默認屬性,以便您可以過濾數據在火力地堡控制台的痕跡(如應用程序版本,國家,設備等常見的元數據)。您還可以添加和顯示器自定義屬性(例如,遊戲等級或用戶屬性)。

您可以進一步配置自定義代碼跟踪來記錄的自訂指標的跟踪的範圍內發生的與性能相關的事件。例如,您可以為緩存命中和未命中數或 UI 在明顯的時間段內變得無響應的次數創建自定義指標。

自定義屬性和自定義指標與跟踪的默認屬性和默認指標一起顯示在 Firebase 控制台中。

添加自定義代碼跟踪

使用性能監視跟踪API添加自定義代碼跟踪監視特定的應用程序代碼。

請注意以下事項:

  • 一個應用程序可以有多個自定義代碼跟踪。
  • 可以同時運行多個自定義代碼跟踪。
  • 自定義代碼的痕跡名稱必須滿足以下要求:沒有開頭或結尾的空白,沒有前導下劃線( _ )字符,且最大長度為100個字符。
  • 自定義代碼的痕跡支持添加自定義指標自定義屬性

要啟動和停止的自定義代碼跟踪,包你想有類似的代碼行下面的(本例中使用的自定義跟踪名稱跟踪代碼test_trace ):

爪哇

// 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();

科特林+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()

使用@AddTrace(可選)監測的具體方法

Android應用程序還支持@AddTrace註釋儀器自定義代碼的痕跡。使用此功能,跟踪從指定方法的開頭開始,並在方法完成時停止,包括該方法調用的任何內容。

例如,您可以創建自定義代碼跟踪稱為onCreateTrace當是運行onCreate()方法被調用。

爪哇

// 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);
}

科特林+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
@AddTrace(name = "onCreateTrace", enabled = true /* optional */)
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
}

將自定義指標添加到自定義代碼跟踪

使用性能監視跟踪API定制指標添加到自定義代碼的痕跡。

請注意以下事項:

  • 自定義指標名稱必須滿足以下要求:沒有開頭或結尾的空白,沒有前導下劃線( _ )字符,且最大長度為100個字符。
  • 每個自定義代碼跟踪最多可以錄製32指標(包括默認持續時間度量)。

要添加自定義指標,請在每次事件發生時添加一行類似於以下內容的代碼。例如,發生在你的應用程序此自定義指標數與性能相關的事件,如高速緩存命中和未命中(使用例如事件名稱item_cache_hititem_cache_miss和增量1 )。

爪哇

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();

科特林+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()

為自定義代碼跟踪創建自定義屬性

使用性能監視跟踪API將自定義屬性添加到自定義代碼的痕跡。

要使用自定義屬性,請將代碼添加到您的應用程序,以定義該屬性並將其與特定的自定義代碼跟踪相關聯。您可以在跟踪開始和跟踪停止之間的任何時間設置自定義屬性。

請注意以下事項:

  • 對於自定義屬性名稱必須滿足以下要求:沒有開頭或結尾的空白,沒有前導下劃線( _ )字符,並且最大長度為32個字符。

  • 每個自定義代碼跟踪最多可以記錄 5 個自定義屬性。

  • 您不應使用包含可向 Google 識別個人身份的信息的自定義屬性。

    了解有關此指南的更多信息

爪哇

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();

科特林+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
}

跟踪、查看和過濾性能數據

在儀表板中跟踪特定指標

要了解您的關鍵指標是趨勢,在性能儀表板的頂部將它們添加到您的指標板。您可以通過查看每週更改或驗證代碼中的最近更改是否正在提高性能來快速識別回歸。

Firebase 性能監控儀表板中指標板的圖像

要將指標添加到您的度量板,轉到性能儀表板在火力地堡控制台,然後單擊控制台選項卡。單擊一個空的指標卡,然後選擇一個現有的指標以添加到您的看板中。點擊人口密集度卡更多的選擇,喜歡更換或移除指標。

指標板以圖形形式和數字百分比變化顯示隨時間收集的指標數據。

了解更多關於使用儀表板

查看跟踪及其數據

要查看你的痕跡,轉到性能儀表板在火力地堡控制台,向下滾動到的痕跡表,然後單擊相應的子選項卡。該表顯示了每個跟踪的一些主要指標,您甚至可以按特定指標的百分比變化對列表進行排序。

如果單擊跟踪表中的跟踪名稱,則可以單擊各個屏幕以瀏覽跟踪並深入了解感興趣的指標。在大多數頁面上,你可以使用過濾器按鈕(左上角屏幕)的屬性來過濾數據,例如:

按屬性過濾的 Firebase 性能監控數據的圖像
  • 通過應用程序版本過濾器來查看數據有關過去的版本或您的最新版本
  • 裝置篩選,了解舊設備如何處理您的應用程序
  • 國家篩選,以確保您的數據庫位置是不影響的特定區域

了解更多關於你的痕跡查看數據

下一步

  • 查看詳細的報告,用戶會話中,你可以在同一會話期間收集的其他痕跡的時間表方面看到一個特定的跟踪。