Tuỳ chỉnh báo cáo sự cố cho Web

Chọn nền tảng: iOS+ Android Web Flutter Unity


Trong bảng điều khiển Firebase (DevOps và Mức độ tương tác > Trang tổng quan Crashlytics), bạn có thể nhấp vào một vấn đề để xem báo cáo Sự kiện chi tiết. Bạn có thể tuỳ chỉnh các báo cáo đó và quản lý hoạt động thu thập dữ liệu đo từ xa để hiểu rõ hơn về những gì đang xảy ra trong ứng dụng web của mình:

Báo cáo các ngoại lệ được xử lý theo phương thức lập trình

Bạn có thể ghi lại các ngoại lệ được xử lý theo cách thủ công bằng recordError. Lỗi định tuyến và các ngoại lệ chưa nắm bắt được sẽ tự động được ghi lại bằng ranh giới lỗi của khung.

Sau đây là cách theo dõi tỷ lệ lỗi và thuộc tính chẩn đoán trên người dùng:

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

Thêm khoá tuỳ chỉnh

Khoá siêu dữ liệu tuỳ chỉnh giúp bạn hiểu được trạng thái cụ thể của ứng dụng hoặc quy trình làm việc của người dùng dẫn đến sự cố.

Bạn có thể ghi lại hoạt động của người dùng, trạng thái phiên và thông tin chẩn đoán trực tiếp dưới dạng thuộc tính tùy chỉnh khoá-giá trị bằng cách sử dụng tham số siêu dữ liệu không bắt buộc khi gọi 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'
});

Các thuộc tính tùy chỉnh này được lưu giữ trong báo cáo ngoại lệ và xuất hiện trong thẻ Keys (Khoá) trong chế độ xem vấn đề của Crashlytics trang tổng quan.

Buộc xoá bản ghi dữ liệu đo từ xa

Theo mặc định, công cụ đo từ xa trên web sẽ gộp các bản ghi thành các phân đoạn bộ nhớ để tiết kiệm pin, hiệu suất CPU và băng thông mạng. Tuy nhiên, đối với môi trường thực thi ngắn hạn, nhật ký phải được tải lên ngay trước khi bối cảnh thực thi bị huỷ.

Bạn có thể sử dụng lệnh flush không đồng bộ để gửi ngay tất cả lỗi trong hàng đợi đến phần phụ trợ:

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

Định cấu hình tốc độ lấy mẫu

Nếu lấy mẫu một tỷ lệ phiên người dùng để kiểm soát khối lượng và chi phí đo từ xa, bạn có thể định cấu hình việc lấy mẫu bằng bất kỳ lựa chọn nào sau đây:

Cách 1 (nên dùng): Định cấu hình tốc độ lấy mẫu trong bảng điều khiển Firebase

  1. Trong bảng điều khiển Firebase, hãy chuyển đến trang tổng quan DevOps và mức độ tương tác > Crashlytics.

  2. Chọn ứng dụng web của bạn trong bộ chọn thả xuống ở đầu trang.

  3. Nhấp vào Định cấu hình lấy mẫu ở góc trên cùng bên phải của trang tổng quan.

  4. Đặt tỷ lệ phần trăm Tốc độ lấy mẫu (từ 0% đến 100%) để kiểm soát tỷ lệ phần trăm sự kiện và phiên được thu thập từ ứng dụng.

Cách 2: Đặt tốc độ lấy mẫu bằng Firebase Telemetry API Quản trị

Bạn có thể sử dụng API Quản trị dữ liệu đo từ xa của Firebase (firebasetelemetryadmin.googleapis.com/v1alpha) để quản lý chế độ cài đặt thu thập dữ liệu đo từ xa cho các ứng dụng Firebase của mình.

  1. Định cấu hình các biến bắt buộc sau đây trong dòng lệnh:

    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. Tìm CONFIG_NAME của bạn rồi định cấu hình nó làm một biến trong dòng lệnh:

    Chế độ cài đặt dữ liệu đo từ xa được quản lý bằng tài nguyên Config, vì vậy, bạn cần tìm CONFIG_NAME cụ thể cho ứng dụng web của mình.

    1. Liệt kê các cấu hình trong dự án và lọc theo FIREBASE_APP_ID. Cờ curl -G và --data-urlencode đảm bảo chuỗi bộ lọc AIP-160 được mã hoá URL chính xác:

      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. Trong phản hồi JSON, hãy tìm trường name cho ứng dụng của bạn (projects/PROJECT_ID/locations/LOCATION/configs/<CONFIG_ID>), rồi đặt trường đó làm biến CONFIG_NAME:

      CONFIG_NAME="CONFIG_NAME"
      
  3. Đặt tốc độ lấy mẫu:

    Để điều chỉnh tốc độ lấy mẫu, hãy sử dụng phương thức PATCH để cập nhật trường sampling_rate. Bạn phải chỉ định updateMask=sampling_rate trong các tham số truy vấn. Tốc độ lấy mẫu là một giá trị kép đại diện cho tỷ lệ phần trăm số phiên cần thu thập (ví dụ: 0.25 cho 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"
    

Tắt hoặc bật tính năng thu thập dữ liệu đo từ xa

Theo mặc định, tính năng thu thập dữ liệu đo từ xa sẽ được bật khi bạn thiết lập Crashlytics cho ứng dụng web của mình. Nếu cần tắt hoặc bật lại tính năng thu thập dữ liệu đo từ xa một cách linh động sau khi cài đặt SDK Crashlytics, bạn có thể quản lý các điểm cuối thu thập bằng API Quản trị Firebase Telemetry (firebasetelemetryadmin.googleapis.com/v1alpha).

Trước khi có thể tắt hoặc bật dữ liệu đo từ xa, bạn cần đặt các biến sau:

  1. Định cấu hình các biến bắt buộc sau đây trong dòng lệnh:

    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. Tìm CONFIG_NAME của bạn rồi định cấu hình nó làm một biến trong dòng lệnh:

    Chế độ cài đặt dữ liệu đo từ xa được quản lý bằng tài nguyên Config, vì vậy, bạn cần tìm CONFIG_NAME cụ thể cho ứng dụng web của mình.

    1. Liệt kê các cấu hình trong dự án và lọc theo FIREBASE_APP_ID. Cờ curl -G và --data-urlencode đảm bảo chuỗi bộ lọc AIP-160 được mã hoá URL chính xác:

      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. Trong phản hồi JSON, hãy tìm trường name cho ứng dụng của bạn (projects/PROJECT_ID/locations/LOCATION/configs/<CONFIG_ID>), rồi đặt trường đó làm biến CONFIG_NAME:

      CONFIG_NAME="CONFIG_NAME"
      

Tắt tính năng thu thập dữ liệu đo từ xa

Sử dụng phương thức tuỳ chỉnh :disable để tắt tính năng thu thập dữ liệu đo từ xa:

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

Bật lại tính năng thu thập dữ liệu đo từ xa

Để bật lại tính năng thu thập dữ liệu đo từ xa, hãy gọi phương thức :enable:

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