Supervisa las solicitudes de red HTTP/S

Un seguimiento de solicitud de red HTTP/S es un informe que captura el tiempo que transcurre desde que una app envía una solicitud a un extremo del servicio hasta que se completa la respuesta proveniente de ese extremo. Performance Monitoring captura varias métricas de cualquier extremo al que tu app envíe solicitudes:

  • Tiempo de respuesta: El tiempo que transcurre desde que se envía la solicitud hasta que se recibe la respuesta.

  • Tamaño de la carga útil: El tamaño en bytes de la carga útil de red que descargó y subió la app.

  • Tasa de éxito: El porcentaje de respuestas correctas en comparación con el total de respuestas (para medir errores de la red o del servidor).

Performance Monitoring recopila automáticamente las métricas de las solicitudes de red en las que se usan las siguientes bibliotecas de red:

Swift

  • URLSession
  • URLConnection

Objective-C

  • NSURLSession
  • NSURLConnection

Esta supervisión lista para usar incluye la mayoría de las solicitudes de red de tu app. Sin embargo, es posible que no se informen algunas solicitudes o que uses otra biblioteca para hacer solicitudes de red. En estos casos, puedes usar la API de Performance Monitoring para instrumentar manualmente las solicitudes de red personalizadas.

Agregación de datos en patrones de URL

Firebase Performance Monitoring agrega automáticamente los datos de solicitudes de red similares para ayudarte a comprender las tendencias en el rendimiento de una solicitud de red.

Para cada solicitud, Firebase verifica si la URL de la solicitud de red coincide con algún patrón de URL. Si la URL de la solicitud coincide con algún patrón, Firebase agrega automáticamente los datos de esa solicitud con los del patrón de URL. Firebase muestra los patrones de URL y los datos agregados en la pestaña Red de la sección Rendimiento en Firebase console.

¿Qué es un patrón de URL?

Un patrón de URL contiene un dominio más un patrón que puede coincidir con una ruta de URL, por ejemplo: example.com/*/animals/**.

  • Los patrones de URL pueden contener los siguientes segmentos de ruta:

    • texto sin formato: coincide con una string exacta
    • *: coincide con cualquier string en un segmento de ruta único
    • **: coincide con un sufijo de ruta arbitrario
  • Los patrones de URL pueden ser de los siguientes tipos:

Por ejemplo, cualquiera de las siguientes solicitudes de URL podrían coincidir con el patrón de URL example.com/*/animals/**:

  • example.com/singapore/animals
  • example.com/australia/animals/spiders
  • example.com/australia/animals/marsupials/koala.png

Firebase asigna cada solicitud a un solo patrón de URL. Si configuraste patrones de URL personalizados, Firebase intentará hacer coincidir las URL de las solicitudes con esos patrones. Si Firebase no encuentra coincidencias con ningún patrón de URL personalizado, asigna la URL de la solicitud al patrón automático más representativo. Encontrarás más información sobre los patrones de URL automáticos y personalizados en las siguientes secciones.

Patrones de URL automáticos

Sin que tengas que configurar algo, Performance Monitoring intenta reflejar el comportamiento de uso más reciente de tu app mediante hacer coincidir las solicitudes de la app con patrones de URL automáticos.

¿Cómo funciona la coincidencia de patrones de URL automáticos?

Firebase asigna cada solicitud al patrón de URL automático más representativo derivado de las solicitudes que envía tu app. Sin embargo, ten en cuenta que Firebase comienza por buscar coincidencias entre las URL de solicitud y cualquier patrón de URL personalizado configurado.

A continuación, se presenta un ejemplo básico de la forma en que Firebase asigna las solicitudes al patrón de URL automático más representativo de tu app.

  1. La app envía muchas solicitudes a URL como las siguientes:

    • example.com/germany/animals/bears
    • example.com/germany/animals/birds
    • example.com/germany/cars

    Firebase determina que example.com/germany/** es un patrón de solicitud común para la app y lo agrega como patrón de URL automático en tu proyecto.

    Cuando se recibe una nueva solicitud que coincide con este patrón de URL, Firebase agrega los datos de la solicitud dentro del patrón de URL automático example.com/germany/**.

  2. Después de una semana, la mayoría de las solicitudes de tu app se dirigen a example.com/germany/animals/bears y example.com/germany/animals/birds. En respuesta a esto, Firebase deriva un patrón de URL más representativo: example.com/germany/animals/**.

    Cuando se recibe una nueva solicitud que coincide con este patrón de URL nuevo, Firebase agrega los datos de la solicitud solo dentro del nuevo patrón de URL automático. Firebase continúa agregando datos de solicitudes a example.com/germany/cars dentro de example.com/germany/**.

  3. Sin embargo, durante las semanas siguientes, las solicitudes de tu app a example.com/germany/animals/bears y example.com/germany/animals/birds disminuyen considerablemente. Firebase determina que example.com/germany/animals/** no es representativo del comportamiento de uso más reciente de tu app y comienza a asignar estas dos solicitudes a example.com/germany/**, como al principio.

    Firebase deja de agregar datos de solicitudes dentro de example.com/germany/animals/**, porque este ya no es el patrón de URL automático más representativo.

Debido a que la coincidencia de patrones automáticos de URL es dinámica, ten en cuenta lo siguiente:

  • Las coincidencias y los datos agregados de solicitudes anteriores no se ven afectados por los nuevos patrones de URL. Firebase no vuelve a agregar datos de las solicitudes de forma retroactiva.

  • Solo las solicitudes futuras se ven afectadas por los patrones de URL nuevos. Firebase asigna cada solicitud nueva al patrón de URL automático más representativo. Sin embargo, ten en cuenta que Firebase comienza por buscar coincidencias entre las URL de solicitud y cualquier patrón de URL personalizado que hayas configurado.

Ve los patrones de URL automáticos y sus datos

Puedes ver todos los patrones de URL automáticos en la sección Rendimiento de la consola, en la pestaña Red > Todos. Es posible que veas patrones de URL con la etiqueta sin categoría. Estos son patrones de URL automáticos "amplios" que Firebase usa para agregar los datos de las solicitudes que no coinciden con ningún patrón de URL más específico.

Cuando finaliza el período de retención de parte de los datos agregados dentro de un patrón de URL, Firebase los borra del patrón. Cuando se vencen todos los datos agregados dentro de un patrón de URL automático, este se borra de Firebase console.

Patrones de URL personalizados

Puedes crear patrones de URL personalizados para supervisar patrones de URL específicos que Firebase no captura con su coincidencia de patrones de URL automáticos. Por ejemplo, puedes usar un patrón de URL personalizado para solucionar problemas de una URL específica o supervisar un conjunto específico de URL en el tiempo.

¿Cómo funciona la coincidencia de patrones de URL personalizados?

Firebase busca coincidencias entre las URL de solicitud y cualquier patrón de URL personalizado que hayas configurado recurrir a la coincidencia de patrones de URL automáticos. Cuando se recibe una solicitud que coincide con un patrón de URL personalizado, Firebase agrupa los datos de la solicitud dentro del patrón de URL personalizado.

Si la URL de una solicitud coincide con más de un patrón de URL personalizado, Firebase asigna la solicitud al patrón de URL personalizado más específico según el siguiente orden de especificidad: texto sin formato > * > ** de izquierda a derecha en la ruta. Por ejemplo, una solicitud dirigida a example.com/books/dog coincide con dos patrones de URL personalizados:

  • example.com/books/*
  • example.com/*/dog

Sin embargo, el patrón example.com/books/* es el patrón de URL coincidente más específico porque el segmento más a la izquierda books en example.com/books/* tiene prioridad sobre el segmento más a la izquierda * en example.com/*/dog.

Cuando crees un patrón de URL personalizado nuevo, ten en cuenta lo siguiente:

  • Las coincidencias y los datos agregados de solicitudes anteriores no se ven afectados cuando se crea un patrón de URL personalizado nuevo. Firebase no vuelve a agregar datos de las solicitudes de forma retroactiva.

  • Solo las solicitudes futuras se ven afectadas cuando se crea un patrón de URL personalizado nuevo. Tal vez tengas que esperar hasta 12 horas para que Performance Monitoring recopile y agregue datos dentro de un patrón de URL personalizado nuevo.

Crea un patrón de URL personalizado

Puedes crear un patrón de URL personalizado en la sección Rendimiento de la consola, en la pestaña Red. Para crear un patrón de URL personalizado nuevo, un miembro del proyecto debe ser Propietario o Editor; sin embargo, todos los miembros del proyecto pueden ver los patrones de URL personalizados y los datos agregados correspondientes.

Para crear un patrón de URL personalizado, comienza con un dominio y utiliza la siguiente sintaxis de segmento de ruta para crear un patrón que pueda coincidir con las rutas de URL.

  • texto sin formato: coincide con una string exacta
  • *: coincide con cualquier string en un segmento de ruta único
  • **: coincide con un sufijo de ruta arbitrario

En la siguiente tabla, se describen algunas coincidencias posibles con patrones de URL personalizados.

Para hacer coincidir… Crea un patrón de URL personalizado como… Ejemplo de coincidencias con este patrón de URL
Una URL exacta example.com/foo/baz example.com/foo/baz
Cualquier segmento de ruta único (*) example.com/*/baz example.com/foo/baz
example.com/bar/baz
example.com/*/*/baz example.com/foo/bar/baz
example.com/bah/qux/baz
example.com/foo/* example.com/foo/baz
example.com/foo/bar

Nota: Este patrón no coincidirá con example.com/foo.

Un sufijo de ruta arbitrario (**) example.com/foo/** example.com/foo
example.com/foo/baz
example.com/foo/baz/more/segments
subdomain.example.com/foo.bar/** subdomain.example.com/foo.bar
subdomain.example.com/foo.bar/baz
subdomain.example.com/foo.bar/baz/more/segments

Cómo ver patrones de URL personalizados y sus datos

En la sección Rendimiento de la consola, se enumeran los patrones de URL personalizados que tienen datos agregados en la pestaña Red > Todos y en la pestaña Red > Personalizada. Si un patrón de URL personalizado no tiene datos agregados, solo aparecerá en la pestaña  Red Personalización.

Cuando finaliza el período de retención de parte de los datos agregados dentro de un patrón de URL, Firebase los borra del patrón. Cuando se vencen todos los datos agregados dentro de un patrón de URL personalizado, este no se borra de Firebase console. En lugar de ello, Firebase marca los patrones de URL personalizados como "vacío" en la pestaña Red > Personalización.

Cómo quitar un patrón de URL personalizado

A diferencia de los patrones de URL automáticos, los patrones de URL personalizados pueden quitarse de los proyectos.

  1. En la sección Rendimiento de la consola, ve a la pestaña Red > Personalización.

  2. Coloca el cursor sobre la fila del patrón de URL personalizado que deseas quitar.

  3. Haz clic en en el extremo derecho de la fila y confirma la eliminación en el cuadro de diálogo.

Cuando quites un patrón de URL personalizado, ten en cuenta lo siguiente:

  • Las solicitudes futuras se asignan al siguiente patrón de URL personalizado coincidente más específico. Si Firebase no encuentra patrones de URL personalizados que coincidan, recurre a las coincidencias con patrones de URL automáticos.

  • Las coincidencias y los datos agregados de las solicitudes anteriores no se ven afectados cuando se quita un patrón de URL personalizado.

    Los patrones de URL personalizados que quites y sus datos seguirán apareciendo en la pestaña Red > Todos hasta el final del período de retención de datos aplicable. Cuando se vencen todos los datos agregados dentro de un patrón de URL personalizado que quitaste, Firebase lo borra.

  • En la pestaña Red > Personalización no se muestra ningún patrón de URL personalizado que hayas quitado.

Agrega la supervisión de solicitudes de red personalizadas

Para instrumentar manualmente las solicitudes de red personalizadas en Performance Monitoring, agrega código similar al siguiente:

Swift

guard let metric = HTTPMetric(url: "https://www.google.com", httpMethod: .get) else { return }

metric.start()
guard let url = URL(string: "https://www.google.com") else { return }
let request: URLRequest = URLRequest(url:url)
let session = URLSession(configuration: .default)
let dataTask = session.dataTask(with: request) { (urlData, response, error) in
        if let httpResponse = response as? HTTPURLResponse {
         metric.responseCode = httpResponse.statusCode
        }
        metric.stop()
}
dataTask.resume()

Objective-C

@property (nonatomic) FIRHTTPMetric *metric;

- (void)beginManualNetworkInstrumentation {
  self.metric =
      [[FIRHttpMetric alloc] initWithURL:[NSURL URLWithString:@"https://www.google.com"]
                              HTTPMethod:FIRHTTPMethodGET];

  [self.metric start];

  NSURLRequest *request =
      [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://www.google.com"]];
  NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request
                                                                delegate:self];
  [connection resume];
}

- (void)connection:(NSURLConnection *)connection
    didReceiveResponse:(NSURLResponse *) response {
  NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response
  self.metric.responseCode = httpResponse.statusCode;
  [self.metric stop];
}

Las solicitudes de red HTTP/S que capturas específicamente de esta manera aparecen en Firebase console junto con las solicitudes de red que Performance Monitoring captura automáticamente.

Supervisa los seguimientos de solicitudes de red en Console

  1. En Firebase console, dirígete al Panel de rendimiento.

  2. Haz clic en la pestaña Red, en la que tendrás las siguientes opciones:

    • Ver un informe rápido de los datos recopilados de todas las solicitudes de red

    • Hacer clic en un extremo específico para revisar sus datos con más detalle

    • Usar el botón Filtro de la esquina superior izquierda del panel para filtrar de forma básica los datos por atributo

  3. Si haces clic en un extremo específico, la consola mostrará una descripción general de los datos recopilados en las tarjetas de las métricas.

    • Con las opciones de la esquina superior derecha del panel, podrás hacer lo siguiente:

      • Ver los diversos datos como valores agregados, en el tiempo o por versión de la app
      • Ver la tasa de éxito de un extremo como valores agregados, en el tiempo o por versión de la app
    • Usar el botón Filtro de la esquina superior izquierda del panel para filtrar de forma básica los datos por atributo

  4. En cualquier métrica, haz clic en Ver más para obtener información más detallada sobre los datos recopilados y usar funciones de análisis más completas. Esto te permitirá, por ejemplo, filtrar y segmentar los datos por atributo y verlos en el contexto de una sesión de uso de la app.

Pasos siguientes