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

为特定应用代码添加自定义监控

Performance Monitoring 会收集跟踪记录,帮助您监控应用的性能。跟踪记录是两个时间点之间在应用中捕获的性能数据的报告。

您可以创建自己的跟踪记录来监控与应用中的特定代码相关联的性能数据。借助自定义代码跟踪记录,您可以衡量应用完成一项特定任务或一组任务(例如加载一组图像或查询数据库)所需的时间。

自定义代码跟踪记录的默认指标是其“时长”(此跟踪记录的开始点和停止点之间的时间),但您也可以添加自定义指标

在代码中,您可以使用 Performance Monitoring SDK 提供的 API 指定自定义代码跟踪记录的开始和结束。 自定义代码跟踪记录可在创建后随时启动,并且是线程安全的。

由于这些跟踪记录收集的默认指标为“时长”,因此它们有时被称为“时长跟踪记录”。

您可以在“性能”信息中心底部的跟踪记录表中的“自定义跟踪记录”子标签中查看这些跟踪记录中的数据(在本页下文中详细了解如何使用控制台)。

默认特性、自定义特性和自定义指标

对于自定义代码跟踪记录,Performance Monitoring 会自动记录默认特性(国家/地区、浏览器、页面网址等常见元数据),使您可以在 Firebase 控制台中过滤跟踪记录的数据。您还可以添加和监控自定义特性(例如游戏关卡或用户属性)。

您可以进一步配置自定义代码跟踪记录,以记录其范围内发生的性能相关事件的自定义指标。例如,您可以创建一个自定义指标,以统计缓存命中和未命中的次数,或者统计界面较长时间无响应的次数。

自定义特性和自定义指标会与跟踪记录的默认特性和默认指标一起显示在 Firebase 控制台中。

添加自定义代码跟踪记录

使用 Performance Monitoring Trace API 添加自定义代码跟踪记录以监控特定应用代码。

请注意以下几点:

  • 一个应用可以有多个自定义代码跟踪记录。
  • 多个自定义代码跟踪记录可以同时运行。
  • 自定义代码跟踪记录的名称必须符合以下要求:没有前导空格或尾随空格、没有前导下划线 (_) 字符,长度上限为 100 个字符。
  • 自定义代码跟踪记录支持添加自定义指标自定义特性

如需启动和停止自定义代码跟踪记录,请使用类似于以下内容的几行代码封装要跟踪的代码:

Web 版本 9

import { trace } from "firebase/performance";

const t = trace(perf, "CUSTOM_TRACE_NAME");
t.start();

// Code that you want to trace
// ...

t.stop();

Web 版本 8

const trace = perf.trace("CUSTOM_TRACE_NAME");
trace.start();

// Code that you want to trace
// ...

trace.stop();

使用 User Timing API 添加自定义代码跟踪记录

除了 Performance Monitoring Trace API 之外,您还可以使用浏览器的原生 User Timing API 添加自定义代码跟踪记录。Performance Monitoring SDK 会自动选取使用此 API 衡量的跟踪记录时长。如果您希望异步加载 Performance Monitoring SDK,则使用 User Timing API 特别有用。初始化 SDK 后,SDK 将记录在加载之前发生的测量结果。

要使用此功能,请使用 User Timing 标记封装要跟踪的代码:

Web 版本 9

const performance = window.performance;

performance.mark("measurementStart");

// Code that you want to trace
// ...

performance.mark("measurementStop");
performance.measure("customTraceName", "measurementStart", "measurementStop");

Web 版本 8

const performance = window.performance;

performance.mark("measurementStart");

// Code that you want to trace
// ...

performance.mark("measurementStop");
performance.measure("customTraceName", "measurementStart", "measurementStop");

请注意,以上示例中的 performance 表示浏览器的 window.performance 对象。

使用 User Timing API 时,自定义指标和特性无法添加到自定义代码跟踪记录中。如果要将这些自定义元素添加到自定义代码跟踪记录中,请使用 Performance Monitoring Trace API

将自定义指标添加到自定义代码跟踪记录中

使用 Performance Monitoring Trace API 将自定义指标添加到自定义代码跟踪记录中。

请注意以下几点:

  • 自定义特性的名称必须符合以下要求:没有前导空格或尾随空格、没有前导下划线 (_) 字符,长度上限为 100 个字符。
  • 每个自定义代码跟踪记录最多可记录 32 个指标(包括默认时长指标)。

如需添加自定义指标,请在每次发生事件时添加类似于以下内容的一行代码。例如,此自定义指标会对应用中发生的与性能相关的事件进行计数。

Web 版本 9

import { trace } from "firebase/performance";

async function getInventory(inventoryIds) {
  const t = trace(perf, "inventoryRetrieval");

  // Tracks the number of IDs fetched (the metric could help you to optimize in the future)
  t.incrementMetric("numberOfIds", inventoryIds.length);

  // Measures the time it takes to request inventory based on the amount of inventory
  t.start();
  const inventoryData = await retrieveInventory(inventoryIds);
  t.stop();

  return inventoryData;
}

Web 版本 8

async function getInventory(inventoryIds) {
  const trace = perf.trace("inventoryRetrieval");

  // Tracks the number of IDs fetched (the metric could help you to optimize in the future)
  trace.incrementMetric("numberOfIds", inventoryIds.length);

  // Measures the time it takes to request inventory based on the amount of inventory
  trace.start();
  const inventoryData = await retrieveInventory(inventoryIds);
  trace.stop();

  return inventoryData;
}

为自定义代码跟踪记录创建自定义特性

使用 Performance Monitoring Trace API 将自定义特性添加到自定义代码跟踪记录中。

如需使用自定义特性,请向您的应用添加定义该特性的代码,并将其与特定自定义代码跟踪记录相关联。您可以在跟踪记录开始和结束之间的任何时间设置自定义特性。

请注意以下几点:

  • 自定义特性的名称必须符合以下要求:没有前导空格或尾随空格、没有前导下划线 (_) 字符,长度上限为 32 个字符。

  • 每个自定义代码跟踪记录最多可记录 5 个自定义特性。

  • 您不应使用包含的信息可让 Google 识别出个人身份的自定义特性。

    详细了解此准则

Web 版本 9

import { trace } from "firebase/performance";

const t = trace(perf, "test_trace");
t.putAttribute("experiment", "A");

// Update scenario
t.putAttribute("experiment", "B");

// Reading scenario
const experimentValue = t.getAttribute("experiment");

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

// Read attributes
const traceAttributes = t.getAttributes();

Web 版本 8

const trace = perf.trace("test_trace");
trace.putAttribute("experiment", "A");

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

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

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

// Read attributes
const traceAttributes = trace.getAttributes();

跟踪、查看和过滤性能数据

如需查看实时性能数据,请确保您的应用使用与实时数据处理兼容的 Performance Monitoring SDK 版本。了解详情

在信息中心内跟踪特定指标

要了解关键指标的趋势如何,请将这些指标添加到“性能”信息中心顶部的指标板中。您可以通过查看逐周变化情况来快速识别回归问题,或者确认近期的代码更改是否改善了性能。

Firebase Performance Monitoring 信息中心中的指标板的图片

如需将指标添加到指标板,请转到 Firebase 控制台中的“性能”信息中心,然后点击“信息中心”标签页。点击一张空白指标卡片,然后选择一个要添加到指标板的现有指标。在填充了信息的指标卡片上点击 可查看更多选项,例如替换或移除指标。

该指标板以图表形式以及数值百分比更改的形式显示一段时间内收集的指标数据。

详细了解如何使用信息中心

查看跟踪记录及其数据

要查看您的跟踪记录,请转到 Firebase 控制台中的“性能”信息中心,向下滚动到跟踪记录表,然后点击相应的子标签页。该表会针对每个跟踪记录显示一些热门指标,您甚至可以按特定指标的百分比变化对该列表进行排序。

点击跟踪记录表中的跟踪记录名称后,即可点击各个相关屏幕以浏览跟踪记录并深入了解感兴趣的指标。在大多数页面上,您可以使用过滤 按钮(屏幕左上角)按特性过滤数据,例如:

按特性过滤 Firebase Performance Monitoring 数据的图像
  • 按”页面网址”过滤可查看网站中特定页面的数据
  • 按“有效连接类型”过滤可了解 3G 连接对应用的影响
  • 按“国家/地区”过滤可确保您的数据库位置不会影响特定区域

详细了解如何查看跟踪记录的数据

后续步骤