ปรับแต่งรายงานข้อขัดข้องสำหรับเว็บ

เลือกแพลตฟอร์ม iOS+ Android เว็บ Flutter Unity


ในคอนโซล Firebase (DevOps และการมีส่วนร่วม > แดชบอร์ด 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'
});

แอตทริบิวต์ที่กำหนดเองเหล่านี้จะเก็บไว้ในรายงานข้อยกเว้นและปรากฏในแท็บคีย์ในมุมมองปัญหาของแดชบอร์ด Crashlytics

บังคับล้างบันทึกการตรวจวัดระยะไกล

โดยค่าเริ่มต้น เครื่องมือวัดระยะไกลบนเว็บจะจัดกลุ่มบันทึกเป็นกลุ่มหน่วยความจำเพื่อประหยัดอายุการใช้งานแบตเตอรี่ ประสิทธิภาพของ CPU และแบนด์วิดท์เครือข่าย อย่างไรก็ตาม สำหรับสภาพแวดล้อมการดำเนินการที่มีอายุสั้น ต้องอัปโหลดบันทึกทันทีก่อนที่บริบทการดำเนินการจะถูกทำลาย

คุณใช้คำสั่ง 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 และการมีส่วนร่วม > แดชบอร์ด 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. ตั้งค่าอัตราการสุ่มตัวอย่าง

    หากต้องการปรับอัตราการสุ่มตัวอย่าง ให้ใช้วิธี PATCH เพื่ออัปเดตช่อง sampling_rate คุณต้องระบุ updateMask=sampling_rate ในพารามิเตอร์การค้นหา อัตราการสุ่มตัวอย่างคือค่าทศนิยมที่แสดงเปอร์เซ็นต์ของเซสชันที่จะรวบรวม (เช่น 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"
      

ปิดใช้การเก็บรวบรวมข้อมูลทางไกล

ใช้วิธีการที่กำหนดเอง :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"