התאמה אישית של דוחות קריסה באינטרנט

בחירת פלטפורמה: iOS+‎ Android אינטרנט Flutter Unity


במסוף Firebase (DevOps & Engagement > מרכז הבקרה של Crashlytics), אתם יכולים ללחוץ על בעיה מסוימת כדי לקבל דוח אירועים מפורט. אתם יכולים להתאים אישית את הדוחות האלה ולנהל את איסוף נתוני הטלמטריה כדי להבין טוב יותר מה קורה באפליקציית האינטרנט שלכם:

דיווח על חריגים מטופלים באופן פרוגרמטי

אפשר לתעד חריגות מטופלות באופן ידני באמצעות recordError. שגיאות ניתוב וחריגות שלא נתפסו מתועדות באופן אוטומטי על ידי גבולות השגיאה של המסגרת.

כך עוקבים אחרי שכיחות הכשלים ומאפייני האבחון אצל המשתמשים:

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

הוספת מפתחות בהתאמה אישית

מפתחות של מטא-נתונים בהתאמה אישית עוזרים להבין את המצב הספציפי של האפליקציה או את תהליך העבודה של המשתמש שהוביל לקריסה.

אתם יכולים לתעד פעילויות משתמשים, מצבי סשן ופרטי אבחון ישירות כמאפיינים מותאמים אישית של מפתח/ערך באמצעות פרמטר המטא-נתונים האופציונלי כשקוראים ל-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'
});

המאפיינים המותאמים אישית האלה נשמרים בדוח החריגים ומופיעים בכרטיסייה Keys בתצוגת הבעיות במרכז הבקרה של Crashlytics.

אילוץ ניקוי של רשומות טלמטריה

כברירת מחדל, מנוע הטלמטריה באינטרנט אוסף את היומנים בקבוצות במקטעי זיכרון כדי לשמור על חיי הסוללה, ביצועי המעבד ורוחב הפס של הרשת. עם זאת, בסביבות הרצה קצרות, צריך להעלות את היומנים מיד לפני שהקשר ההרצה נהרס.

אפשר להשתמש בפקודה האסינכרונית flush כדי לשלוח מיד את כל השגיאות בתור לקצה העורפי:

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

הגדרת תדירות הדגימה

אם אתם דוגמים חלק מסשני המשתמשים כדי לשלוט בנפח הטלמטריה ובעלות, אתם יכולים להגדיר את הדגימה באמצעות אחת מהאפשרויות הבאות:

אפשרות 1 (מומלץ): הגדרת תדירות הדגימה במסוף Firebase

  1. במסוף Firebase, נכנסים לדף DevOps & Engagement (DevOps ומעורבות) > לוח הבקרה של Crashlytics.

  2. בוחרים את אפליקציית האינטרנט מהתפריט הנפתח בחלק העליון של הדף.

  3. בפינה השמאלית העליונה של מרכז הבקרה, לוחצים על הגדרת דגימה.

  4. מגדירים את אחוז תדירות הדגימה (בין 0% ל-100%) כדי לקבוע את אחוז האירועים והסשנים שנאספים מהלקוחות.

אפשרות 2: הגדרת תדירות הדגימה באמצעות Firebase Telemetry Admin API

אתם יכולים להשתמש ב-Firebase Telemetry Admin API (firebasetelemetryadmin.googleapis.com/v1alpha) כדי לנהל את הגדרות איסוף נתוני הטלמטריה באפליקציות Firebase.

  1. מגדירים את המשתנים הנדרשים הבאים בטרמינל:

    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. מוצאים את CONFIG_NAME ומגדירים אותו כמשתנה בטרמינל:

    הגדרות הטלמטריה מנוהלות באמצעות משאב Config, לכן צריך למצוא את ה-CONFIG_NAME הספציפי של אפליקציית האינטרנט.

    1. מציגים את רשימת ההגדרות בפרויקט ומסננים לפי FIREBASE_APP_ID. הדגלים curl -G ו---data-urlencode מבטיחים שמחרוזת המסנן AIP-160 מקודדת כראוי לכתובת 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. בתגובת ה-JSON, מאתרים את השדה name של האפליקציה (projects/PROJECT_ID/locations/LOCATION/configs/<CONFIG_ID>) ומגדירים אותו כמשתנה CONFIG_NAME:

      CONFIG_NAME="CONFIG_NAME"
      
  3. מגדירים את תדירות הדגימה:

    כדי לשנות את תדירות הדגימה, משתמשים ב-method‏ PATCH כדי לעדכן את השדה sampling_rate. צריך לציין את updateMask=sampling_rate בפרמטרים של השאילתה. תדירות הדגימה היא ערך מסוג double שמייצג את אחוז הסשנים שצריך לאסוף (לדוגמה, 0.25 עבור 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"
    

השבתה או הפעלה של איסוף נתוני טלמטריה

כברירת מחדל, איסוף נתוני הטלמטריה מופעל כשמגדירים את Crashlytics לאפליקציית האינטרנט. אם צריך להשבית או להפעיל מחדש את איסוף נתוני הטלמטריה באופן דינמי אחרי התקנת ה-SDK של Crashlytics, אפשר לנהל את נקודות הקצה לאיסוף נתונים באמצעות Firebase Telemetry Admin API (firebasetelemetryadmin.googleapis.com/v1alpha).

כדי להפעיל או להשבית את הטלמטריה, צריך להגדיר את המשתנים הבאים:

  1. מגדירים את המשתנים הנדרשים הבאים בטרמינל:

    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. מוצאים את CONFIG_NAME ומגדירים אותו כמשתנה בטרמינל:

    הגדרות הטלמטריה מנוהלות באמצעות משאב Config, לכן צריך למצוא את ה-CONFIG_NAME הספציפי של אפליקציית האינטרנט.

    1. מציגים את רשימת ההגדרות בפרויקט ומסננים לפי FIREBASE_APP_ID. הדגלים curl -G ו---data-urlencode מבטיחים שמחרוזת המסנן AIP-160 מקודדת כראוי לכתובת 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. בתגובת ה-JSON, מאתרים את השדה name של האפליקציה (projects/PROJECT_ID/locations/LOCATION/configs/<CONFIG_ID>) ומגדירים אותו כמשתנה CONFIG_NAME:

      CONFIG_NAME="CONFIG_NAME"
      

השבתת האיסוף של נתוני הטלמטריה

כדי להשבית את איסוף נתוני הטלמטריה, משתמשים ב-method המותאם אישית :disable:

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

הפעלה מחדש של איסוף נתוני טלמטריה

כדי להפעיל מחדש את איסוף נתוני הטלמטריה, מפעילים את השיטה :enable:

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