Adicionar monitoramento personalizado para solicitações de rede específicas (apps para Apple e Android)

O recurso Monitoramento de desempenho coleta traces para ajudar você a monitorar o desempenho do app. Um trace é um relatório de dados de desempenho capturado entre dois momentos no app.

Os traces de solicitações de rede coletados automaticamente pelo Monitoramento de desempenho incluem a maioria das solicitações de rede do app. No entanto, algumas delas podem não ser reportadas ou talvez você precise usar uma biblioteca diferente para fazer solicitações de rede. Nesses casos, use a API Performance Monitoring para instrumentar manualmente os traces de solicitações de rede personalizados. Os traces de solicitações de rede personalizados só oferecem suporte aos apps para Apple e Android.

As métricas padrão de um trace de solicitação de rede personalizado são as mesmas dos traces de solicitações de rede coletados automaticamente pelo Monitoramento de desempenho, especificamente o tempo de resposta, o tamanho do payload de solicitação e resposta e a taxa de sucesso. Os traces de solicitações de rede personalizados não oferecem suporte à adição de métricas personalizadas.

No seu código, você define o início e o fim de um trace de solicitação de rede personalizado usando as APIs fornecidas pelo SDK do Monitoramento de desempenho.

Os traces de solicitações de rede personalizados aparecem no Console do Firebase ao lado das solicitações de rede que o Monitoramento de desempenho captura automaticamente (na subguia Solicitações de rede da tabela de traces).

Adicionar traces de solicitações de rede personalizados

Use a API HttpMetric do recurso Monitoramento de desempenho para adicionar traces de solicitações de rede personalizados e, assim, monitorar solicitações de rede específicas.

Para equipar manualmente as solicitações de rede personalizadas no Monitoramento de desempenho, adicione o código a seguir:

Kotlin+KTX

val url = URL("https://www.google.com")
val metric = Firebase.performance.newHttpMetric(
    "https://www.google.com",
    FirebasePerformance.HttpMethod.GET,
)
metric.trace {
    val conn = url.openConnection() as HttpURLConnection
    conn.doOutput = true
    conn.setRequestProperty("Content-Type", "application/json")
    try {
        val outputStream = DataOutputStream(conn.outputStream)
        outputStream.write(data)
    } catch (ignored: IOException) {
    }

    // Set HttpMetric attributes
    setRequestPayloadSize(data.size.toLong())
    setHttpResponseCode(conn.responseCode)

    printStreamContent(conn.inputStream)

    conn.disconnect()
}

Java

HttpMetric metric =
        FirebasePerformance.getInstance().newHttpMetric("https://www.google.com",
                FirebasePerformance.HttpMethod.GET);
final URL url = new URL("https://www.google.com");
metric.start();
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type", "application/json");
try {
    DataOutputStream outputStream = new DataOutputStream(conn.getOutputStream());
    outputStream.write(data);
} catch (IOException ignored) {
}
metric.setRequestPayloadSize(data.length);
metric.setHttpResponseCode(conn.getResponseCode());
printStreamContent(conn.getInputStream());

conn.disconnect();
metric.stop();

Os traces de solicitações de rede personalizados também aceitam a adição de atributos personalizados, mas não de métricas personalizadas.

Próximas etapas

  • Configure alertas para solicitações de rede que estejam afetando o desempenho do app. Por exemplo, configure um alerta por e-mail para sua equipe que será enviado quando o tempo de resposta para um padrão de URL específico exceder um limite definido por você.