Xuất dữ liệu trong Firebase Crashlytics sang BigQuery

Bạn có thể xuất dữ liệu Firebase Crashlytics của mình sang BigQuery cho để phân tích thêm. BigQuery cho phép bạn phân tích dữ liệu bằng BigQuery SQL, xuất SQL đó sang một nhà cung cấp dịch vụ đám mây khác và sử dụng cho hình ảnh trực quan và trang tổng quan tuỳ chỉnh bằng Google Data Studio.

Cho phép xuất dữ liệu sang BigQuery

  1. Trong bảng điều khiển Firebase, hãy chuyển đến trang Tích hợp.
  2. Trong thẻ BigQuery, hãy nhấp vào Liên kết.
  3. Làm theo hướng dẫn trên màn hình để cho phép xuất dữ liệu sang BigQuery.

Sau đây là những gì sẽ xảy ra khi bạn bật tính năng xuất sang BigQuery:

  • Theo mặc định, mọi ứng dụng trong dự án của bạn đều được liên kết với BigQuery và mọi ứng dụng mà bạn thêm vào dự án sau thời điểm liên kết cũng sẽ tự động liên kết với BigQuery. Bạn có thể quản lý những ứng dụng gửi dữ liệu.

  • Firebase thiết lập tính năng đồng bộ hoá hằng ngày dữ liệu từ dự án Firebase với BigQuery.

  • Firebase xuất bản sao dữ liệu hiện có đến BigQuery. Đối với mỗi ứng dụng được liên kết, API này bao gồm một bảng lô chứa dữ liệu được đồng bộ hoá hằng ngày.

  • Nếu bạn bật tệp xuất trực tuyến Crashlytics sang BigQuery, tất cả ứng dụng được liên kết cũng sẽ có một bảng theo thời gian thực chứa thông tin cập nhật liên tục .

Để huỷ kích hoạt tính năng xuất dữ liệu sang BigQuery, huỷ liên kết dự án trong bảng điều khiển Firebase.

Dữ liệu nào được xuất sang BigQuery?

Dữ liệu Firebase Crashlytics được xuất sang một tập dữ liệu BigQuery có tên firebase_crashlytics. Theo mặc định, các bảng riêng lẻ sẽ được tạo bên trong tập dữ liệu Crashlytics cho từng ứng dụng trong dự án của bạn. Firebase đặt tên cho các bảng dựa trên giá trị nhận dạng của ứng dụng, trong đó dấu chấm được chuyển đổi thành dấu gạch dưới và tên nền tảng được thêm vào cuối.

Ví dụ: dữ liệu của một ứng dụng Android có tên gói là com.google.test sẽ nằm trong bảng có tên com_google_test_ANDROID. Bảng theo lô này được cập nhật một lần mỗi ngày. Nếu bạn bật tệp xuất trực tuyến cho Crashlytics sang BigQuery, sau đó, dữ liệu của Crashlytics cũng sẽ được truyền trực tuyến theo thời gian thực vào bảng có tên com_google_test_ANDROID_REALTIME.

Mỗi hàng trong bảng đại diện cho một sự kiện đã xảy ra trong ứng dụng, bao gồm cả sự cố, lỗi không nghiêm trọng và lỗi ANR.

Xuất trực tuyến Crashlytics sang BigQuery

Bạn có thể truyền trực tuyến dữ liệu Crashlytics theo thời gian thực bằng tính năng truyền trực tuyến BigQuery. Bạn có thể dùng tính năng này cho mọi mục đích cần có dữ liệu trực tiếp, chẳng hạn như trình bày thông tin trong trang tổng quan trực tiếp, xem trực tiếp quá trình phát hành hoặc theo dõi các sự cố ứng dụng kích hoạt cảnh báo và quy trình làm việc tuỳ chỉnh.

Khi bạn bật tính năng xuất trực tuyến Crashlytics sang BigQuery, ngoài bảng lô, bạn cũng sẽ có bảng theo thời gian thực. Dưới đây là những điểm khác biệt mà bạn cần lưu ý giữa các bảng:

Bảng lô Bảng theo thời gian thực
  • Dữ liệu được xuất mỗi ngày một lần.
  • Các sự kiện được lưu trữ bền vững trước khi ghi hàng loạt vào BigQuery.
  • Dữ liệu có thể được tái điền tối đa 30 ngày trước đó.
  • Dữ liệu được xuất theo thời gian thực.
  • Không có tính năng chèn dữ liệu cũ.

Bảng theo lô rất phù hợp để phân tích dài hạn và xác định xu hướng theo thời gian vì chúng tôi lưu trữ sự kiện một cách bền vững trước khi ghi và có thể bổ sung dữ liệu cũ vào bảng trong tối đa 30 ngày. Khi ghi dữ liệu vào bảng theo thời gian thực, chúng tôi sẽ ghi dữ liệu đó vào BigQuery ngay lập tức. Vì vậy, đây là bảng lý tưởng cho trang tổng quan trực tiếp và cảnh báo tuỳ chỉnh. Bạn có thể kết hợp hai bảng này với một truy vấn nối để tận dụng lợi ích của cả hai.

Theo mặc định, bảng theo thời gian thực có thời gian hết hạn của phân vùng là 30 ngày. Người nhận hãy tìm hiểu cách sửa đổi điều này, hãy xem Đặt thời hạn phân vùng trong tài liệu BigQuery.

Bật tệp xuất trực tuyến Crashlytics sang BigQuery

  1. Trong bảng điều khiển Firebase, hãy chuyển đến trang Tích hợp.
  2. Trong thẻ BigQuery, hãy nhấp vào Quản lý.
  3. Đánh dấu vào hộp Bao gồm nội dung phát trực tiếp.

Thao tác này sẽ bật tính năng truyền trực tuyến cho tất cả ứng dụng được liên kết.

Bạn có thể làm gì với dữ liệu đã xuất?

Tệp được xuất sang BigQuery sẽ chứa dữ liệu thô về sự cố, bao gồm cả loại thiết bị, hệ điều hành, ngoại lệ (ứng dụng Android) hoặc lỗi (ứng dụng Apple) và nhật ký Crashlytics cũng như các dữ liệu khác.

Xem lại chính xác dữ liệu Crashlytics được xuất và giản đồ bảng của dữ liệu đó ở phần sau của trang này.

Sử dụng mẫu Data Studio

Để bật dữ liệu theo thời gian thực trong mẫu Data Studio, hãy làm theo hướng dẫn trong bài viết Biểu diễn dữ liệu Crashlytics đã xuất bằng Data Studio.

Tạo chế độ xem

Bạn có thể chuyển đổi truy vấn thành khung hiển thị bằng giao diện người dùng BigQuery. Để biết hướng dẫn chi tiết, hãy xem phần Tạo thành phần hiển thị trong tài liệu về BigQuery.

Chạy truy vấn

Các ví dụ sau đây minh hoạ các truy vấn mà bạn có thể chạy trên dữ liệu Crashlytics để tạo báo cáo tổng hợp dữ liệu sự kiện sự cố thành bản tóm tắt dễ hiểu hơn. Vì các loại báo cáo này không có trong trang tổng quan Crashlytics của bảng điều khiển Firebase, nên các báo cáo này có thể bổ sung cho việc phân tích và hiểu biết của bạn về dữ liệu sự cố.

Ví dụ 1: Lỗi trục trặc theo ngày

Sau khi nỗ lực khắc phục nhiều lỗi nhất có thể, bạn nghĩ rằng cuối cùng nhóm của mình đã đã sẵn sàng chạy ứng dụng chia sẻ ảnh mới của mình. Trước khi thực hiện, bạn nên kiểm tra số lần sự cố mỗi ngày trong tháng vừa qua, để đảm bảo rằng lỗi của bạn đã khiến ứng dụng ổn định hơn theo thời gian.

Dưới đây là truy vấn mẫu cho ứng dụng Android. Đối với ứng dụng iOS, hãy sử dụng mã nhận dạng gói của ứng dụng đó và IOS (thay cho tên gói và ANDROID).

SELECT
  COUNT(DISTINCT event_id) AS number_of_crashes,
  FORMAT_TIMESTAMP("%F", event_timestamp) AS date_of_crashes
FROM
 `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
GROUP BY
  date_of_crashes
ORDER BY
  date_of_crashes DESC
LIMIT 30;

Ví dụ 2: Tìm các sự cố phổ biến nhất

Để ưu tiên đúng cách các kế hoạch phát hành, bạn cần tìm ra 10 sự cố phổ biến nhất trong ứng dụng. Bạn sẽ tạo một truy vấn cung cấp các điểm dữ liệu liên quan.

Dưới đây là truy vấn mẫu cho ứng dụng Android. Đối với ứng dụng iOS, hãy sử dụng mã nhận dạng gói của ứng dụng đó và IOS (thay cho tên gói và ANDROID).

SELECT
  DISTINCT issue_id,
  COUNT(DISTINCT event_id) AS number_of_crashes,
  COUNT(DISTINCT installation_uuid) AS number_of_impacted_user,
  blame_frame.file,
  blame_frame.line
FROM
  `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
WHERE
  event_timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(),INTERVAL 168 HOUR)
  AND event_timestamp < CURRENT_TIMESTAMP()
GROUP BY
  issue_id,
  blame_frame.file,
  blame_frame.line
ORDER BY
  number_of_crashes DESC
LIMIT 10;

Ví dụ 3: 10 thiết bị hàng đầu gặp sự cố

Mùa thu là mùa ra mắt điện thoại mới! Công ty của bạn biết rằng điều này cũng có nghĩa là mùa mới của các vấn đề dành riêng cho thiết bị, đặc biệt là đối với Android. Để đón đầu những mối lo ngại lẩn tránh về khả năng tương thích, bạn hãy tập hợp một truy vấn xác định 10 thiết bị gặp phải nhiều sự cố nhất trong tuần qua (168 giờ).

Dưới đây là truy vấn mẫu cho một ứng dụng Android. Đối với ứng dụng iOS, hãy sử dụng mã nhận dạng gói và IOS (thay vì tên gói và ANDROID).

SELECT
  device.model,
COUNT(DISTINCT event_id) AS number_of_crashes
FROM
  `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
WHERE
  event_timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 168 HOUR)
  AND event_timestamp < CURRENT_TIMESTAMP()
GROUP BY
  device.model
ORDER BY
  number_of_crashes DESC
LIMIT 10;

Ví dụ 4: Lọc theo khoá tuỳ chỉnh

Bạn là một nhà phát triển trò chơi và muốn biết trải nghiệm trò chơi của mình ở cấp độ nào nhiều sự cố nhất.

Để theo dõi chỉ số đó, bạn đặt một khoá Crashlytics tuỳ chỉnh có tên là current_level và cập nhật khoá đó mỗi khi người dùng đạt đến một cấp mới.

Swift

Crashlytics.sharedInstance().setIntValue(3, forKey: "current_level");

Objective-C

CrashlyticsKit setIntValue:3 forKey:@"current_level";

Java

Crashlytics.setInt("current_level", 3);

Với khoá đó khi xuất sang BigQuery, bạn có thể ghi một truy vấn vào báo cáo việc phân phối của current_level giá trị liên quan đến từng sự cố sự kiện.

Dưới đây là truy vấn mẫu cho một ứng dụng Android. Đối với ứng dụng iOS, hãy sử dụng mã nhận dạng gói và IOS (thay vì tên gói và ANDROID).

SELECT
COUNT(DISTINCT event_id) AS num_of_crashes,
  value
FROM
  `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
UNNEST(custom_keys)
WHERE
  key = "current_level"
GROUP BY
  key,
  value
ORDER BY
  num_of_crashes DESC

Ví dụ 5: Trích xuất mã nhận dạng người dùng

Bạn có một ứng dụng Android đang ở giai đoạn quyền truy cập sớm. Hầu hết người dùng của bạn đều yêu thích ứng dụng này, nhưng có 3 đã gặp phải nhiều sự cố bất thường. Để tìm hiểu vấn đề, bạn viết một truy vấn để lấy tất cả sự kiện sự cố cho những người dùng đó bằng mã nhận dạng người dùng của họ.

Dưới đây là truy vấn mẫu cho ứng dụng Android. Đối với ứng dụng iOS, hãy sử dụng mã nhận dạng gói của ứng dụng đó và IOS (thay cho tên gói và ANDROID).

SELECT *
FROM
  `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
WHERE
  user.id IN ("USER_ID_1", "USER_ID_2", "USER_ID_3")
ORDER BY
  user.id
 

Ví dụ 6: Tìm tất cả người dùng gặp phải một vấn đề cụ thể về sự cố

Nhóm của bạn đã vô tình phát hành một lỗi nghiêm trọng cho một nhóm người kiểm thử phiên bản thử nghiệm. Nhóm của bạn đã có thể sử dụng truy vấn từ "Tìm sự cố phổ biến nhất" ví dụ ở trên nhằm xác định mã sự cố cụ thể. Bây giờ, nhóm của bạn muốn chạy một truy vấn để trích xuất danh sách người dùng ứng dụng bị ảnh hưởng bởi sự cố này.

Dưới đây là truy vấn mẫu cho một ứng dụng Android. Đối với ứng dụng iOS, hãy sử dụng mã nhận dạng gói và IOS (thay vì tên gói và ANDROID).

SELECT user.id as user_id
FROM
  `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
WHERE
  issue_id = "ISSUE_ID"
  AND application.display_version = "APP_VERSION"
  AND user.id != ""
ORDER BY
  user.id;

Ví dụ 7: Số người dùng bị ảnh hưởng bởi sự cố, được phân tích theo quốc gia

Nhóm của bạn đã phát hiện một lỗi nghiêm trọng trong quá trình ra mắt một bản phát hành mới. Bạn có thể sử dụng truy vấn từ "Tìm sự cố phổ biến nhất" ví dụ ở trên nhằm xác định mã sự cố cụ thể. Nhóm của bạn bây giờ muốn xem liệu sự cố này có lan đến người dùng ở nhiều quốc gia trên thế giới không.

Để viết truy vấn này, nhóm của bạn cần làm như sau:

  1. Bật tính năng xuất dữ liệu Google Analytics sang BigQuery. Xem bài viết Xuất dữ liệu dự án sang BigQuery.

  2. Cập nhật ứng dụng của bạn để truyền mã nhận dạng người dùng vào cả SDK Google Analytics và SDK Crashlytics.

    Swift

    Crashlytics.sharedInstance().setUserIdentifier("123456789");
    Analytics.setUserID("123456789");
    

    Objective-C

    CrashlyticsKit setUserIdentifier:@"123456789";
    FIRAnalytics setUserID:@"12345678 9";
    

    Java

    Crashlytics.setUserIdentifier("123456789");
    mFirebaseAnalytics.setUserId("123456789");
    
  3. Viết một truy vấn sử dụng trường mã nhận dạng người dùng để tham gia các sự kiện trong Tập dữ liệu Google Analytics có sự cố trong tập dữ liệu Crashlytics.

    Dưới đây là truy vấn mẫu cho ứng dụng Android. Đối với ứng dụng iOS, hãy sử dụng Bundle ID và IOS (thay vì tên gói và ANDROID).

    SELECT DISTINCT c.issue_id, a.geo.country, COUNT(DISTINCT c.user.id) as num_users_impacted
    FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID` c
    INNER JOIN  `PROJECT_ID.analytics_TABLE_NAME.events_*` a on c.user.id = a.user_id
    WHERE
      c.issue_id = "ISSUE_ID"
      AND a._TABLE_SUFFIX BETWEEN '20190101'
      AND '20200101'
    GROUP BY
      c.issue_id,
      a.geo.country,
      c.user.id

Ví dụ 8: 5 vấn đề hàng đầu cho đến thời điểm hiện tại

Dưới đây là truy vấn mẫu cho một ứng dụng Android. Đối với ứng dụng iOS, hãy sử dụng mã nhận dạng gói và IOS (thay vì tên gói và ANDROID).

SELECT
  issue_id,
  COUNT(DISTINCT event_id) AS events
FROM
  `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID_REALTIME`
WHERE
  DATE(event_timestamp) = CURRENT_DATE()
GROUP BY
  issue_id
ORDER BY
  events DESC
LIMIT
  5;

Ví dụ 9: 5 vấn đề hàng đầu kể từ NGÀY, bao gồm cả hôm nay

Bạn cũng có thể kết hợp bảng theo lô và bảng theo thời gian thực bằng truy vấn nối để thêm thông tin theo thời gian thực vào dữ liệu theo lô đáng tin cậy. Vì event_id là khoá chính, nên bạn có thể sử dụng DISTINCT event_id để loại bỏ mọi sự kiện phổ biến khỏi hai bảng.

Dưới đây là truy vấn mẫu cho một ứng dụng Android. Đối với ứng dụng iOS, hãy sử dụng mã nhận dạng gói và IOS (thay vì tên gói và ANDROID).

SELECT
  issue_id,
  COUNT(DISTINCT event_id) AS events
FROM (
  SELECT
    issue_id,
    event_id,
    event_timestamp
  FROM
    `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID_REALTIME`
  UNION ALL
  SELECT
    issue_id,
    event_id,
    event_timestamp
  FROM
    `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`)
WHERE
  event_timestamp >= "YYYY_MM_DD"
GROUP BY
  issue_id
ORDER BY
  events DESC
LIMIT
  5;

Tìm hiểu giản đồ Crashlytics trong BigQuery

Khi bạn thiết lập tính năng xuất dữ liệu Crashlytics sang BigQuery, Firebase sẽ xuất các sự kiện gần đây (sự cố, lỗi không nghiêm trọng và lỗi ANR), bao gồm cả các sự kiện từ tối đa 2 ngày trước khi liên kết, với tuỳ chọn điền lại tối đa 30 ngày.

Từ thời điểm đó cho đến khi bạn tắt tính năng xuất dữ liệu, Firebase sẽ xuất Crashlytics sự kiện hằng ngày. Có thể mất vài phút thì dữ liệu mới xuất hiện trong BigQuery sau mỗi lần xuất.

Tập dữ liệu

Crashlytics tạo một tập dữ liệu mới trong BigQuery cho Crashlytics . Tập dữ liệu này bao gồm toàn bộ dự án của bạn, ngay cả khi dự án đó có nhiều ứng dụng.

Bảng

Crashlytics tạo một bảng trong tập dữ liệu cho từng ứng dụng trong dự án của bạn, trừ phi bạn chọn không xuất dữ liệu cho ứng dụng đó. Firebase đặt tên cho bảng dựa trên giá trị nhận dạng của ứng dụng, trong đó dấu chấm được chuyển đổi thành dấu gạch dưới, và tên nền tảng được thêm vào cuối.

Ví dụ: dữ liệu cho một ứng dụng Android có tên gói com.google.test sẽ nằm trong bảng có tên com_google_test_ANDROID và dữ liệu theo thời gian thực (nếu được bật) sẽ nằm trong bảng có tên com_google_test_ANDROID_REALTIME

Các bảng chứa tập dữ liệu Crashlytics tiêu chuẩn ngoài bất kỳ dữ liệu nào khoá Crashlytics tuỳ chỉnh mà bạn xác định trong ứng dụng của mình.

Hàng

Mỗi hàng trong bảng biểu thị một lỗi mà ứng dụng gặp phải.

Cột

Các cột trong bảng giống hệt nhau đối với sự cố, lỗi không nghiêm trọng và lỗi ANR. Nếu Đã bật chế độ xuất trực tuyến Crashlytics sang BigQuery, sau đó bảng theo thời gian thực sẽ có các cột giống như bảng lô. Xin lưu ý rằng bạn có thể có các cột trong hàng đại diện cho các sự kiện không có dấu vết ngăn xếp.

Các cột bên trong dữ liệu đã xuất được liệt kê trong bảng này:

Tên trường Loại dữ liệu Mô tả
platform STRING Nền tảng của ứng dụng như đã đăng ký trong dự án Firebase (giá trị hợp lệ: IOS hoặc ANDROID)
bundle_identifier STRING Giá trị nhận dạng duy nhất của ứng dụng như đã đăng ký trong dự án Firebase (ví dụ: com.google.gmail)
Đối với các ứng dụng nền tảng của Apple, đây là mã nhận dạng gói của ứng dụng.
Đối với ứng dụng Android, đây là tên gói của ứng dụng.
event_id STRING Mã nhận dạng duy nhất của sự kiện
is_fatal BOOLEAN Ứng dụng có gặp sự cố hay không
error_type STRING Loại lỗi của sự kiện (ví dụ: FATAL, NON_FATAL, ANR, v.v.)
issue_id STRING Vấn đề liên quan đến sự kiện
variant_id STRING Biến thể vấn đề liên quan đến sự kiện này
Xin lưu ý rằng không phải sự kiện nào cũng có biến thể vấn đề tương ứng.
event_timestamp DẤU THỜI GIAN Thời điểm sự kiện xảy ra
device RECORD Thiết bị xảy ra sự kiện
device.manufacturer STRING Nhà sản xuất thiết bị
device.model STRING Mẫu thiết bị
device.architecture STRING Ví dụ: X86_32, X86_64, ARMV7, ARM64, ARMV7S hoặc ARMV7K
memory RECORD Trạng thái bộ nhớ của thiết bị
memory.used INT64 Số byte bộ nhớ đã sử dụng
memory.free INT64 Số byte bộ nhớ còn lại
storage RECORD Bộ nhớ liên tục của thiết bị
storage.used INT64 Số byte bộ nhớ đã dùng
storage.free INT64 Dung lượng lưu trữ còn lại (byte)
operating_system RECORD Thông tin chi tiết về hệ điều hành trên thiết bị
operating_system.display_version STRING Phiên bản hệ điều hành trên thiết bị
operating_system.name STRING Tên hệ điều hành trên thiết bị
operating_system.modification_state STRING Liệu thiết bị có bị sửa đổi hay không (ví dụ: ứng dụng đã bẻ khoá là MODIFIED và ứng dụng đã can thiệp vào hệ thống là UNMODIFIED)
operating_system.type STRING (Chỉ dành cho ứng dụng của Apple) Loại hệ điều hành đang chạy trên thiết bị (ví dụ: IOS, MACOS, v.v.)
operating_system.device_type STRING Loại thiết bị (ví dụ: MOBILE, TABLET, TV, v.v.); còn gọi là "danh mục thiết bị"
application RECORD Ứng dụng đã tạo ra sự kiện
application.build_version STRING Phiên bản bản dựng của ứng dụng
application.display_version STRING
user RECORD (Không bắt buộc) Thông tin được thu thập về người dùng ứng dụng
user.name STRING (Không bắt buộc) Tên của người dùng
user.email STRING (Không bắt buộc) Địa chỉ email của người dùng
user.id STRING (Không bắt buộc) Mã nhận dạng dành riêng cho ứng dụng được liên kết với người dùng
custom_keys BẢN GHI LẶP LẠI Cặp khoá-giá trị do nhà phát triển xác định
custom_keys.key STRING Khoá do nhà phát triển xác định
custom_keys.value STRING Giá trị do nhà phát triển xác định
installation_uuid STRING Mã nhận dạng một lượt cài đặt ứng dụng và thiết bị riêng biệt
crashlytics_sdk_versions STRING Phiên bản SDK Crashlytics đã tạo sự kiện
app_orientation STRING Ví dụ: PORTRAIT, LANDSCAPE, FACE_UP, FACE_DOWN, v.v.
device_orientation STRING Ví dụ: PORTRAIT, LANDSCAPE, FACE_UP, FACE_DOWN, v.v.
process_state STRING BACKGROUND hoặc FOREGROUND
logs BẢN GHI LẶP LẠI Thông điệp nhật ký có dấu thời gian do trình ghi nhật ký Crashlytics tạo, nếu được bật
logs.timestamp DẤU THỜI GIAN Thời điểm tạo nhật ký
logs.message STRING Tin nhắn đã ghi nhật ký
breadcrumbs BẢN GHI LẶP LẠI Breadcrumb Google Analytics có dấu thời gian, nếu được bật
breadcrumbs.timestamp DẤU THỜI GIAN Dấu thời gian liên kết với đường dẫn dạng chuỗi
breadcrumbs.name STRING Tên liên kết với đường dẫn dạng chuỗi
breadcrumbs.params BẢN GHI LẶP LẠI Các thông số liên quan đến breadcrumb (tập hợp liên kết phân cấp)
breadcrumbs.params.key STRING Khoá thông số liên kết với đường dẫn dạng chuỗi
breadcrumbs.params.value STRING Giá trị tham số được liên kết với đường dẫn dạng chuỗi
blame_frame RECORD Khung được xác định là nguyên nhân gốc rễ của sự cố hoặc lỗi
blame_frame.line INT64 Số dòng của tệp của khung
blame_frame.file STRING Tên của tệp khung
blame_frame.symbol STRING Biểu tượng đã được hydrat hoá hoặc biểu tượng thô nếu không thể hydrat hoá
blame_frame.offset INT64 Độ dời byte vào hình ảnh nhị phân chứa mã
Không đặt cho các ngoại lệ Java
blame_frame.address INT64 Địa chỉ trong hình ảnh nhị phân chứa mã
Chưa đặt đối với các khung Java
blame_frame.library STRING Tên hiển thị của thư viện chứa khung
blame_frame.owner STRING Ví dụ: DEVELOPER, VENDOR, RUNTIME, PLATFORM hoặc SYSTEM
blame_frame.blamed BOOLEAN Crashlytics có xác định rằng khung này là nguyên nhân gây ra sự cố hay không hoặc lỗi
exceptions BẢN GHI LẶP LẠI (Chỉ dành cho Android) Các trường hợp ngoại lệ đã xảy ra trong sự kiện này. Các ngoại lệ được lồng ghép được trình bày theo thứ tự thời gian đảo ngược, tức là bản ghi cuối cùng là ngoại lệ đầu tiên được gửi
exceptions.type STRING Loại ngoại lệ (ví dụ: java.lang.IllegalStateException)
exceptions.exception_message STRING Thông báo liên quan đến trường hợp ngoại lệ
exceptions.nested BOOLEAN Đúng đối với tất cả ngoại trừ ngoại lệ được gửi gần đây nhất (nghĩa là bản ghi đầu tiên)
exceptions.title STRING Tiêu đề của chuỗi tin nhắn
exceptions.subtitle STRING Tiêu đề phụ của chuỗi tin nhắn
exceptions.blamed BOOLEAN Đúng nếu Crashlytics xác định ngoại lệ là nguyên nhân gây ra lỗi hoặc sự cố
exceptions.frames BẢN GHI LẶP LẠI Các khung hình liên kết với ngoại lệ
exceptions.frames.line INT64 Số dòng của tệp của khung
exceptions.frames.file STRING Tên của tệp khung
exceptions.frames.symbol STRING Biểu tượng đã được hydrat hoá hoặc biểu tượng thô nếu không thể hydrat hoá
exceptions.frames.offset INT64 Độ dời byte vào hình ảnh nhị phân chứa mã
Không đặt cho các ngoại lệ Java
exceptions.frames.address INT64 Địa chỉ trong hình ảnh nhị phân chứa mã
Chưa đặt đối với các khung Java
exceptions.frames.library STRING Tên hiển thị của thư viện chứa khung
exceptions.frames.owner STRING Ví dụ: DEVELOPER, VENDOR, RUNTIME, PLATFORM hoặc SYSTEM
exceptions.frames.blamed BOOLEAN Crashlytics có xác định rằng khung này là nguyên nhân gây ra sự cố hay không hoặc lỗi
error BẢN GHI LẶP LẠI (chỉ dành cho ứng dụng Apple) lỗi không nghiêm trọng
error.queue_name STRING Hàng đợi mà luồng đang chạy
error.code INT64 Mã lỗi liên quan đến NSError tuỳ chỉnh đã ghi lại của ứng dụng
error.title STRING Tiêu đề của chuỗi tin nhắn
error.subtitle STRING Tiêu đề phụ của chuỗi tin nhắn
error.blamed BOOLEAN Liệu Crashlytics có xác định rằng khung này là nguyên nhân dẫn đến lỗi lỗi
error.frames BẢN GHI LẶP LẠI Các khung của dấu vết ngăn xếp
error.frames.line INT64 Số dòng của tệp của khung
error.frames.file STRING Tên của tệp khung
error.frames.symbol STRING Biểu tượng đã được hydrat hoá hoặc biểu tượng thô nếu không thể hydrat hoá
error.frames.offset INT64 Độ lệch byte vào hình ảnh nhị phân chứa mã
error.frames.address INT64 Địa chỉ trong hình ảnh nhị phân chứa mã
error.frames.library STRING Tên hiển thị của thư viện chứa khung
error.frames.owner STRING Ví dụ: DEVELOPER, VENDOR, RUNTIME, PLATFORM hoặc SYSTEM
error.frames.blamed BOOLEAN Liệu Crashlytics có xác định rằng khung này là nguyên nhân dẫn đến lỗi lỗi
threads BẢN GHI LẶP LẠI Các luồng có tại thời điểm diễn ra sự kiện
threads.crashed BOOLEAN Luồng có gặp sự cố hay không
threads.thread_name STRING Tên của luồng
threads.queue_name STRING (Chỉ dành cho ứng dụng của Apple) Hàng đợi mà luồng đang chạy
threads.signal_name STRING Tên của tín hiệu đã khiến ứng dụng gặp sự cố, chỉ xuất hiện khi gặp sự cố luồng gốc
threads.signal_code STRING Mã của tín hiệu khiến ứng dụng gặp sự cố; chỉ xuất hiện trên các luồng gốc bị sự cố
threads.crash_address INT64 Địa chỉ của tín hiệu khiến ứng dụng gặp sự cố; chỉ xuất hiện trên các luồng gốc gặp sự cố
threads.code INT64 (Chỉ dành cho ứng dụng của Apple) Mã lỗi của NSError được ghi nhật ký tuỳ chỉnh của ứng dụng
threads.title STRING Tiêu đề của chuỗi tin nhắn
threads.subtitle STRING Tiêu đề phụ của chuỗi tin nhắn
threads.blamed BOOLEAN Crashlytics có xác định rằng khung này là nguyên nhân gây ra sự cố hay không hoặc lỗi
threads.frames BẢN GHI LẶP LẠI Khung của luồng
threads.frames.line INT64 Số dòng của tệp của khung
threads.frames.file STRING Tên của tệp khung
threads.frames.symbol STRING Biểu tượng đã được hydrat hoá hoặc biểu tượng thô nếu không thể hydrat hoá
threads.frames.offset INT64 Độ lệch byte vào hình ảnh nhị phân chứa mã
threads.frames.address INT64 Địa chỉ trong hình ảnh nhị phân chứa mã
threads.frames.library STRING Tên hiển thị của thư viện chứa khung
threads.frames.owner STRING Ví dụ: DEVELOPER, VENDOR, RUNTIME, PLATFORM hoặc SYSTEM
threads.frames.blamed BOOLEAN Liệu Crashlytics có xác định rằng khung này là nguyên nhân gây ra lỗi hay không
unity_metadata.unity_version STRING Phiên bản Unity chạy trên thiết bị này
unity_metadata.debug_build BOOLEAN Nếu đây là bản gỡ lỗi
unity_metadata.processor_type STRING Loại bộ xử lý
unity_metadata.processor_count INT64 Số lượng bộ xử lý (lõi)
unity_metadata.processor_frequency_mhz INT64 Tần số của (các) bộ xử lý tính bằng MHz
unity_metadata.system_memory_size_mb INT64 Dung lượng bộ nhớ của hệ thống tính bằng Mb
unity_metadata.graphics_memory_size_mb INT64 Bộ nhớ đồ hoạ tính bằng MB
unity_metadata.graphics_device_id INT64 Giá trị nhận dạng của thiết bị đồ hoạ
unity_metadata.graphics_device_vendor_id INT64 Giá trị nhận dạng của nhà cung cấp bộ xử lý đồ hoạ
unity_metadata.graphics_device_name STRING Tên của thiết bị đồ hoạ
unity_metadata.graphics_device_vendor STRING Nhà cung cấp thiết bị đồ hoạ
unity_metadata.graphics_device_version STRING Phiên bản của thiết bị đồ hoạ
unity_metadata.graphics_device_type STRING Loại thiết bị đồ hoạ
unity_metadata.graphics_shader_level INT64 Cấp độ chương trình đổ bóng của đồ hoạ
unity_metadata.graphics_render_target_count INT64 Số lượng mục tiêu hiển thị đồ hoạ
unity_metadata.graphics_copy_texture_support STRING Hỗ trợ sao chép hoạ tiết đồ hoạ như được xác định trong API Unity
unity_metadata.graphics_max_texture_size INT64 Kích thước tối đa dành riêng cho việc hiển thị hoạ tiết
unity_metadata.screen_size_px STRING Kích thước màn hình tính bằng pixel, được định dạng thành chiều rộng x chiều cao
unity_metadata.screen_resolution_dpi STRING DPI của màn hình ở dạng số có dấu phẩy động
unity_metadata.screen_refresh_rate_hz INT64 Tốc độ làm mới của màn hình tính bằng Hz

Trực quan hoá dữ liệu Crashlytics đã xuất bằng Data Studio

Google Data Studio biến Crashlytics tập dữ liệu trong BigQuery thành các báo cáo dễ dàng dễ đọc hơn, dễ chia sẻ hơn và hoàn toàn có thể tuỳ chỉnh.

Để tìm hiểu thêm về cách sử dụng Data Studio, hãy thử hướng dẫn nhanh về Data Studio, Chào mừng bạn đến với Data Studio.

Sử dụng mẫu báo cáo Crashlytics

Data Studio có một báo cáo mẫu cho Crashlytics, bao gồm một nhóm phương diện và chỉ số toàn diện từ giản đồ Crashlytics BigQuery đã xuất. Nếu đã bật tính năng xuất trực tuyến Crashlytics sang BigQuery, thì bạn có thể xem dữ liệu đó trên trang Xu hướng theo thời gian thực của mẫu Data Studio. Bạn có thể sử dụng mẫu này làm mẫu để nhanh chóng tạo báo cáo và hình ảnh trực quan mới dựa trên dữ liệu sự cố thô của ứng dụng:

  1. Mở Crashlytics Mẫu trang tổng quan Data Studio.

  2. Nhấp vào Sử dụng mẫu ở góc trên bên phải.

  3. Trong trình đơn thả xuống Nguồn dữ liệu mới, hãy chọn Tạo nguồn dữ liệu mới.

  4. Nhấp vào Chọn trên thẻ BigQuery.

  5. Chọn một bảng chứa dữ liệu Crashlytics đã xuất bằng cách chọn Dự án của tôi > PROJECT_ID > firebase_crashlytics > TABLE_NAME.

    Bạn luôn có thể chọn bảng lô. Nếu bạn bật tính năng xuất trực tuyến Crashlytics sang BigQuery, thì bạn có thể chọn bảng theo thời gian thực.

  6. Trong phần Cấu hình, hãy đặt Crashlytics Cấp mẫu thành Mặc định.

  7. Nhấp vào Kết nối để tạo nguồn dữ liệu mới.

  8. Nhấp vào Thêm vào báo cáo để quay lại mẫu Crashlytics.

  9. Cuối cùng, hãy nhấp vào Tạo báo cáo để tạo bản sao của mẫu Trang tổng quan Data Studio Crashlytics.