Personalizza i report sugli arresti anomali per il web

Seleziona la piattaforma: iOS+ Android Web Flutter Unity


Nella console Firebase (DevOps e coinvolgimento > dashboard Crashlytics), puoi fare clic su un problema e visualizzare un report dettagliato sugli eventi. Puoi personalizzare questi report e gestire la raccolta dei dati di telemetria per comprendere meglio cosa sta succedendo nella tua app web:

Segnala le eccezioni gestite in modo programmatico

Puoi registrare manualmente le eccezioni gestite utilizzando recordError. Gli errori di routing e le eccezioni non rilevate vengono acquisiti automaticamente dai limiti di errore del framework.

Ecco come monitorare la prevalenza degli errori e gli attributi di diagnostica per i tuoi utenti:

import { recordError, getCrashlytics } from '@firebase/crashlytics';
import { app } from './lib/firebase';

const crashlytics = getCrashlytics(app);

async function submitPaymentForm() {
  try {
    await api.processTransaction();
  } catch (error) {
    // Manually record handled exceptions with diagnostic context
    recordError(crashlytics, error, {
      userTier: 'Premium Gold',
      checkoutStage: 'BillingAddressVerification',
      transactionCode: 'tx_8412_err',
      retryAttempts: 2
    });
    showFallbackBanner(error);
  }
}

Aggiungi chiavi personalizzate

Le chiavi dei metadati personalizzati ti aiutano a comprendere lo stato specifico dell'app o il flusso di lavoro dell'utente che ha causato un arresto anomalo.

Puoi registrare le attività utente, gli stati della sessione e i dettagli diagnostici direttamente come attributi personalizzati coppia chiave-valore utilizzando il parametro facoltativo dei metadati quando chiami recordError:

import { recordError, getCrashlytics } from '@firebase/crashlytics';
import { app } from './lib/firebase'; // Shared initialization script

const crashlytics = getCrashlytics(app);

// Pass custom key-value diagnostic metadata within recordError
recordError(crashlytics, error, {
  userTier: 'Premium Gold',
  checkoutStage: 'BillingAddressVerification',
  transactionCode: 'tx_8412_err',
  retryAttempts: 2,
  breadcrumb: 'User opened shopping cart',
  lastAction: 'Click Checkout Button'
});

Questi attributi personalizzati vengono conservati nel report sulle eccezioni e vengono visualizzati nella scheda Chiavi nella visualizzazione dei problemi della dashboard di Crashlytics.

Forza lo svuotamento dei record di telemetria

Per impostazione predefinita, il motore di telemetria web raggruppa i log in segmenti di memoria per preservare la durata della batteria, le prestazioni della CPU e la larghezza di banda della rete. Tuttavia, per gli ambienti di esecuzione di breve durata, i log devono essere caricati immediatamente prima che il contesto di esecuzione venga eliminato.

Puoi utilizzare il comando asincrono flush per inviare immediatamente tutti gli errori in coda al backend:

import { recordError, flush, getCrashlytics } from '@firebase/crashlytics';
import { app } from './lib/firebase';

const crashlytics = getCrashlytics(app);

async function handleApplicationCrash(error: Error) {
  // Capture the error with immediate priority
  recordError(crashlytics, error, { priority: 'IMMEDIATE' });

  // Force an immediate upload before the process terminates or reloads
  await flush(crashlytics);

  // Safe to terminate or refresh the current execution context
  window.location.reload();
}

Configura la frequenza di campionamento

Se campioni una parte delle sessioni utente per controllare il volume e il costo della telemetria, puoi configurare il campionamento utilizzando una delle seguenti opzioni:

Opzione 1 (consigliata): configura la frequenza di campionamento nella console Firebase

  1. Nella console Firebase, vai alla dashboard DevOps e coinvolgimento > Crashlytics.

  2. Seleziona la tua app web dal selettore a discesa nella parte superiore della pagina.

  3. Fai clic su Configura campionamento nell'angolo in alto a destra della dashboard.

  4. Imposta la percentuale della frequenza di campionamento (tra 0% e 100%) per controllare la percentuale di eventi e sessioni raccolti dai client.

Opzione 2: imposta la frequenza di campionamento utilizzando l'API Admin di Firebase Telemetry

Puoi utilizzare l'API Firebase Telemetry Admin (firebasetelemetryadmin.googleapis.com/v1alpha) per gestire le impostazioni di raccolta della telemetria per le tue app Firebase.

  1. Configura le seguenti variabili obbligatorie nel terminale:

    PROJECT_ID="PROJECT_ID"
    LOCATION="LOCATION"  # for example, global
    APP_ID="FIREBASE_APP_ID"  # for example, 1:1234567890:web:abcdef123456
    TOKEN=$(gcloud auth application-default print-access-token)
    
  2. Trova il tuo CONFIG_NAME e configuralo come variabile nel terminale:

    Le impostazioni di telemetria vengono gestite utilizzando una risorsa Config, quindi devi trovare la CONFIG_NAME specifica per la tua app web.

    1. Elenca le configurazioni nel tuo progetto e filtra in base al tuo FIREBASE_APP_ID. I flag curl -G e --data-urlencode assicurano che la stringa di filtro AIP-160 sia codificata correttamente nell'URL:

      curl -G \
        -H "Authorization: Bearer $TOKEN" \
        --data-urlencode "filter=app_id=\"${APP_ID}\"" \
        "https://firebasetelemetryadmin.googleapis.com/v1alpha/projects/${PROJECT_ID}/locations/${LOCATION}/configs"
      
    2. Nella risposta JSON, individua il campo name per la tua app (projects/PROJECT_ID/locations/LOCATION/configs/<CONFIG_ID>) e impostalo come variabile CONFIG_NAME:

      CONFIG_NAME="CONFIG_NAME"
      
  3. Imposta la frequenza di campionamento:

    Per regolare la frequenza di campionamento, utilizza il metodo PATCH per aggiornare il campo sampling_rate. Devi specificare updateMask=sampling_rate nei parametri di query. La frequenza di campionamento è un valore decimale che rappresenta la percentuale di sessioni da raccogliere (ad esempio, 0.25 per il 25%):

    # Example: Set sampling rate to 25%
    curl -X PATCH \
      -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type: application/json" \
      -d "{
        \"sampling_rate\": 0.25,
        \"app_id\": \"${APP_ID}\"
      }" \
      "https://firebasetelemetryadmin.googleapis.com/v1alpha/${CONFIG_NAME}?updateMask=sampling_rate"
    

Disattiva o attiva la raccolta dei dati di telemetria

Per impostazione predefinita, la raccolta dei dati di telemetria è abilitata quando configuri Crashlytics per la tua app web. Se devi disabilitare o riabilitare la raccolta dei dati di telemetria in modo dinamico dopo aver installato l'SDK Crashlytics, puoi gestire gli endpoint di raccolta utilizzando l'API Firebase Telemetry Admin (firebasetelemetryadmin.googleapis.com/v1alpha).

Prima di poter disattivare o attivare la telemetria, devi impostare le seguenti variabili:

  1. Configura le seguenti variabili obbligatorie nel terminale:

    PROJECT_ID="PROJECT_ID"
    LOCATION="LOCATION"  # for example, global
    APP_ID="FIREBASE_APP_ID"  # for example, 1:1234567890:web:abcdef123456
    TOKEN=$(gcloud auth application-default print-access-token)
    
  2. Trova il tuo CONFIG_NAME e configuralo come variabile nel terminale:

    Le impostazioni di telemetria vengono gestite utilizzando una risorsa Config, quindi devi trovare la CONFIG_NAME specifica per la tua app web.

    1. Elenca le configurazioni nel tuo progetto e filtra in base al tuo FIREBASE_APP_ID. I flag curl -G e --data-urlencode assicurano che la stringa di filtro AIP-160 sia codificata correttamente nell'URL:

      curl -G \
        -H "Authorization: Bearer $TOKEN" \
        --data-urlencode "filter=app_id=\"${APP_ID}\"" \
        "https://firebasetelemetryadmin.googleapis.com/v1alpha/projects/${PROJECT_ID}/locations/${LOCATION}/configs"
      
    2. Nella risposta JSON, individua il campo name per la tua app (projects/PROJECT_ID/locations/LOCATION/configs/<CONFIG_ID>) e impostalo come variabile CONFIG_NAME:

      CONFIG_NAME="CONFIG_NAME"
      

Disattiva la raccolta dei dati di telemetria

Utilizza il metodo personalizzato :disable per disattivare la raccolta dei dati di telemetria:

curl -X POST \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}' \
  "https://firebasetelemetryadmin.googleapis.com/v1alpha/${CONFIG_NAME}:disable"

Riattiva la raccolta dei dati di telemetria

Per riattivare la raccolta dei dati di telemetria, chiama il metodo :enable:

curl -X POST \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}' \
  "https://firebasetelemetryadmin.googleapis.com/v1alpha/${CONFIG_NAME}:enable"