Agrega supervisión personalizada para código específico de tu app

Performance Monitoring recopila seguimientos para ayudarte a supervisar el rendimiento de tu app. Un seguimiento es un informe de datos de rendimiento que se capturan entre dos momentos en tu app.

Puedes crear tus propios seguimientos para supervisar los datos de rendimiento asociados con código específico de tu app. Con un seguimiento de código personalizado, puedes medir cuánto tiempo le lleva a tu app completar una tarea específica o un conjunto de tareas, por ejemplo, cargar una conjunto de imágenes o consultar tu base de datos.

La métrica predeterminada de un seguimiento de código personalizado es su “duración” (el tiempo entre los puntos de inicio y detención del seguimiento), pero también puedes agregar métricas personalizadas.

En el código, tú defines el inicio y el final de un seguimiento de código personalizado con las API que proporciona el SDK de Performance Monitoring. En las app para Android, también puedes supervisar métodos específicos con la anotación @AddTrace. Los seguimientos de código personalizado se pueden iniciar en cualquier momento después de su creación y son seguros para los subprocesos.

Debido a que la métrica predeterminada que se recopila para estos seguimientos es la “duración”, a veces se los llama “Seguimientos de duración”.

Puedes ver los datos de estos seguimientos en la pestaña secundaria Seguimientos personalizados de la tabla de seguimientos, que se encuentra en la parte inferior del panel Rendimiento (obtén más información para usar la consola más adelante en esta página).

Atributos predeterminados, atributos personalizados y métricas personalizadas

En el caso de los seguimientos de código personalizado, Performance Monitoring registra automáticamente los atributos predeterminados (metadatos comunes, como la versión de la app, el país, el dispositivo, etc.), a fin de que puedas filtrar los datos del seguimiento en Firebase console. También puedes agregar y supervisar atributos personalizados (como el nivel del juego o las propiedades del usuario).

Además, puedes configurar un seguimiento de código personalizado para que registre métricas personalizadas de los eventos relacionados con el rendimiento que ocurran dentro del alcance del seguimiento. Por ejemplo, puedes crear una métrica personalizada para la cantidad de aciertos y errores de caché o la cantidad de veces que la IU deja de responder por un período notorio.

Los atributos y las métricas personalizados se muestran en Firebase console junto con los atributos y las métricas predeterminados del seguimiento.

Agrega seguimientos de código personalizado

Usa la API de Trace de Performance Monitoring para agregar seguimientos de código personalizado a fin de supervisar un código específico de la aplicación.

Ten en cuenta lo siguiente:

  • Una app puede tener varios seguimientos de código personalizados.
  • Se puede ejecutar más de un seguimiento de código personalizado al mismo tiempo.
  • Los nombres de los seguimientos de código personalizado no deben tener espacios en blanco al inicio ni al final, ni comenzar con guion bajo (_), y no pueden tener más de 100 caracteres.
  • Los seguimientos de código personalizado permiten agregar métricas personalizadas y atributos personalizados.

Para iniciar o detener un seguimiento de código personalizado, une el código del que quieras hacer seguimiento con líneas de código similares a estas (en este ejemplo, se usa el nombre de seguimiento personalizado 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();

Supervisa métodos específicos con @AddTrace (opcional)

Las apps para Android también admiten la anotación @AddTrace a fin de instrumentar los seguimientos de código personalizado. Con esta función, el seguimiento comienza al inicio del método especificado y se detiene cuando se completa el método (incluido todo lo que este invoque).

Por ejemplo, puedes crear un seguimiento de código personalizado llamado onCreateTrace que se ejecuta cuando se llama al método 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);
}

Agrega métricas personalizadas a los seguimientos de código personalizado

Usa la API de Trace de Performance Monitoring para agregar métricas personalizadas a los seguimientos de código personalizado.

Ten en cuenta lo siguiente:

  • Los nombres de las métricas personalizadas no deben tener espacios en blanco al inicio ni al final, no pueden comenzar con guion bajo (_) y no deben exceder los 100 caracteres.
  • Cada seguimiento de código personalizado puede registrar hasta 32 métricas (incluida la métrica Duración predeterminada).

Para agregar una métrica personalizada, agrega una línea de código similar a la siguiente cada vez que ocurra el evento. Por ejemplo, esta métrica personalizada cuenta los eventos relacionados con el rendimiento que ocurren en tu app, como los aciertos y errores de caché (con los nombres de evento de ejemplo item_cache_hit y item_cache_miss, además de un incremento de 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();

Crea atributos personalizados para seguimientos de código personalizado

Usa la API de Trace de Performance Monitoring para agregar atributos personalizados a los seguimientos de código personalizado.

Para usar atributos personalizados, agrega código a tu app que defina el atributo y lo asocie con un seguimiento de código personalizado específico. Puedes configurar el atributo personalizado en cualquier momento desde que se inicia el seguimiento hasta que se detiene.

Ten en cuenta lo siguiente:

  • Los nombres de los atributos personalizados deben cumplir con los siguientes requisitos:

    • No deben tener espacios en blanco al inicio ni al final, ni comenzar con guion bajo (_).
    • No deben tener espacios.
    • La longitud máxima es de 32 caracteres.
    • Los caracteres permitidos para el nombre son A-Z, a-z y _.
  • Cada seguimiento de código personalizado puede registrar hasta 5 atributos personalizados.

  • Asegúrate de que los atributos personalizados no contengan información que permita que Google identifique a una persona.

    Más información sobre este lineamiento

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

Sigue, visualiza y filtra datos de rendimiento

Realiza un seguimiento de métricas específicas en el panel

Para conocer las tendencias de tus métricas clave, agrégalas a la sección de métricas ubicada en la parte superior del panel Rendimiento. Puedes identificar rápidamente las regresiones si observas los cambios intersemanales o verificas que los cambios recientes en el código están mejorando el rendimiento.

una imagen del panel de métricas en el panel de Firebase Performance Monitoring

Para agregar una métrica al panel, sigue estos pasos:

  1. Ve al panel Rendimiento de Firebase console.
  2. Haz clic en una tarjeta de métrica vacía y, luego, selecciona una métrica existente para agregarla a tu panel.
  3. En una tarjeta de métrica propagada, haz clic en para ver más opciones, como reemplazar o quitar una métrica.

El panel muestra los datos de métricas recopilados en el tiempo, en forma gráfica y como cambio porcentual.

Obtén más información para usar el panel.

Visualiza seguimientos y sus datos

Para ver tus seguimientos, ve al panel Rendimiento de Firebase console, desplázate hacia abajo hasta la tabla de seguimientos y haz clic en la pestaña secundaria correspondiente. En la tabla se muestran algunas métricas principales para cada seguimiento. Incluso puedes ordenar la lista por el cambio porcentual de una métrica específica.

Performance Monitoring proporciona una página de solución de problemas en Firebase console que destaca los cambios en las métricas, lo que facilita abordar y minimizar con rapidez el impacto que tienen los problemas de rendimiento en tus apps y usuarios. Puedes usar esta página para obtener información sobre posibles problemas de rendimiento, como en los siguientes casos:

  • Si seleccionas métricas relevantes en el panel y observas un gran delta
  • Si colocas los deltas más grandes en la parte superior de la tabla de seguimientos y observas un cambio porcentual significativo
  • Si recibes una alerta por correo electrónico que te notifica sobre un problema de rendimiento

Puedes acceder a la página de solución de problemas de las siguientes maneras:

  • En el panel de métricas, haz clic en el botón Ver los detalles de la métrica.
  • En cualquier tarjeta de métrica, selecciona => Ver detalles. En la página de solución de problemas, se muestran detalles de la métrica que seleccionaste.
  • En la tabla de seguimientos, haz clic en un nombre de seguimiento o en cualquier valor de métrica de la fila asociada con el seguimiento.
  • En una alerta por correo electrónico, haz clic en Investigar ahora.

Cuando haces clic en un nombre de seguimiento en la tabla correspondiente, puedes desglosar las métricas de interés. Haz clic en el botón Filtrar para filtrar los datos por atributo, como se muestra a continuación:

una imagen de los datos de Firebase Performance Monitoring que se filtran por atributo
  • Filtra por Versión de la app para ver los datos sobre la versión más reciente o una anterior.
  • Filtra por Dispositivo para obtener información sobre cómo los dispositivos más antiguos manejan tu app.
  • Filtra por País para asegurarte de que la ubicación de la base de datos no afecte a una región específica.

Obtén más información para ver los datos de los seguimientos.

Próximos pasos

  • Obtén más información sobre cómo usar atributos para examinar datos de rendimiento.

  • Obtén más información para hacer un seguimiento de los problemas de rendimiento en Firebase console.

  • Configura alertas para los cambios de código que degradan el rendimiento de tu app. Por ejemplo, puedes configurar una alerta por correo electrónico para tu equipo si la duración de un seguimiento de código personalizado específico supera un umbral que estableciste.

  • Mira informes detallados de las sesiones de usuario, en las que puedes ver un seguimiento específico en un contexto de cronograma de otros seguimientos recopilados durante la misma sesión.