获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

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

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

性能监控收集跟踪以帮助您监控应用程序的性能。跟踪是在应用程序的两个时间点之间捕获的性能数据报告。

您可以创建自己的跟踪来监控与应用中特定代码相关的性能数据。使用自定义代码跟踪,您可以衡量您的应用程序完成特定任务或一组任务需要多长时间,例如加载一组图像或查询您的数据库。

自定义代码跟踪的默认指标是其“持续时间”(跟踪的起点和停止点之间的时间),但您也可以添加自定义指标

在您的代码中,您可以使用性能监控 SDK 提供的 API 定义自定义代码跟踪的开始和结束。自定义代码跟踪可以在创建后随时启动,并且它们是线程安全的。

由于为这些跟踪收集的默认指标是“持续时间”,它们有时被称为“持续时间跟踪”。

您可以在跟踪表的自定义跟踪子选项卡中查看这些跟踪的数据,该子选项卡位于性能仪表板的底部(在本页后面了解有关使用控制台的更多信息)。

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

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

您可以进一步配置自定义代码跟踪,以记录跟踪范围内发生的与性能相关的事件的自定义指标。例如,您可以为缓存命中和未命中的次数或 UI 在很长一段时间内变得无响应的次数创建自定义指标。

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

添加自定义代码跟踪

使用性能监控跟踪 API添加自定义代码跟踪以监控特定的应用程序代码。

请注意以下事项:

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

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

Web version 9

import { trace } from "firebase/performance";

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

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

t.stop();

Web version 8

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

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

trace.stop();

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

除了性能监控跟踪 API 之外,您还可以使用浏览器的本机用户计时 API添加自定义代码跟踪。使用此 API 测量的跟踪持续时间由性能监控 SDK 自动获取。如果您希望异步加载性能监控 SDK,则使用 User Timing API 特别有用。初始化 SDK 后,SDK 将记录在其加载之前发生的测量。

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

Web version 9

const performance = window.performance;

performance.mark("measurementStart");

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

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

Web version 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 时,无法将自定义指标和属性添加到自定义代码跟踪中。如果要将这些自定义元素添加到自定义代码跟踪,请使用性能监控跟踪 API

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

使用性能监控跟踪 API将自定义指标添加到自定义代码跟踪。

请注意以下事项:

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

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

Web version 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 version 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;
}

为自定义代码跟踪创建自定义属性

使用性能监控跟踪 API将自定义属性添加到自定义代码跟踪。

要使用自定义属性,请将代码添加到定义属性并将其与特定自定义代码跟踪相关联的应用程序。您可以在跟踪开始和跟踪停止之间的任何时间设置自定义属性。

请注意以下事项:

  • 自定义属性的名称必须满足以下要求:

    • 没有前导或尾随空格,没有前导下划线 ( _ ) 字符
    • 没有空间
    • 最大长度为 32 个字符
    • 名称的允许字符是AZaz_
  • 每个自定义代码跟踪最多可以记录 5 个自定义属性。

  • 请确保自定义属性不包含任何可向 Google 识别个人身份的信息。

    了解有关本指南的更多信息

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

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

要查看实时性能数据,请确保您的应用使用与实时数据处理兼容的性能监控 SDK 版本。了解有关实时性能数据的更多信息

跟踪仪表板中的特定指标

要了解关键指标的趋势,请将它们添加到性能仪表板顶部的指标板上。您可以通过查看每周更改来快速识别回归,或者验证您的代码中最近的更改是否正在提高性能。

Firebase 性能监控仪表板中的指标板图像

要将指标添加到您的指标板,请执行以下步骤:

  1. 转到 Firebase 控制台中的性能信息中心
  2. 单击一个空的指标卡,然后选择一个现有指标添加到您的板上。
  3. 单击填充的指标卡上的以获取更多选项,例如替换或删除指标。

指标板以图形形式和数字百分比变化显示随时间收集的指标数据。

了解有关使用仪表板的更多信息。

查看痕迹及其数据

要查看您的跟踪,请转到 Firebase 控制台中的性能仪表板,向下滚动到跟踪表,然后单击相应的子选项卡。该表显示了每个跟踪的一些顶级指标,您甚至可以按特定指标的百分比变化对列表进行排序。

性能监控在 Firebase 控制台中提供了一个故障排除页面,该页面突出显示了指标更改,从而可以轻松快速地解决并最大限度地减少性能问题对您的应用和用户的影响。当您了解潜在的性能问题时,您可以使用故障排除页面,例如,在以下情况下:

  • 您在仪表板上选择相关指标,您会注意到一个很大的增量。
  • 在跟踪表中,您排序以在顶部显示最大的增量,并且您会看到显着的百分比变化。
  • 您会收到一封电子邮件警报,通知您存在性能问题。

您可以通过以下方式访问故障排除页面:

  • 在指标仪表板上,单击查看指标详细信息按钮。
  • 在任何度量卡上,选择 => 查看详细信息。故障排除页面显示有关您选择的指标的信息。
  • 在跟踪表中,单击跟踪名称或与该跟踪关联的行中的任何度量值。
  • 在电子邮件警报中,单击立即调查

当您单击跟踪表中的跟踪名称时,您可以深入了解感兴趣的指标。点击过滤按钮,按属性过滤数据,例如:

按属性过滤的 Firebase 性能监控数据的图像
  • 页面 URL过滤以查看站点特定页面的数据
  • 有效连接类型过滤以了解 3g 连接如何影响您的应用
  • 国家/地区过滤以确保您的数据库位置不会影响特定区域

了解有关查看跟踪数据的更多信息。

下一步

  • 了解有关使用属性检查性能数据的更多信息。

  • 详细了解如何在 Firebase 控制台中跟踪性能问题

  • 为降低应用程序性能的代码更改设置警报。例如,如果特定自定义代码跟踪的持续时间超过您设置的阈值,您可以为您的团队配置电子邮件警报。