Bạn có thể xuất dữ liệu Firebase Crashlytics của mình vào BigQuery để phân tích thêm. BigQuery cho phép bạn phân tích dữ liệu bằng SQL, xuất dữ liệu sang một nhà cung cấp dịch vụ đám mây khác và sử dụng dữ liệu đó cho mục đích trực quan hoá và tạo trang tổng quan tuỳ chỉnh bằng Google Data Studio.BigQuery
Bật tính năng xuất sang BigQuery
Trong bảng điều khiển Firebase, hãy chuyển đến trang Tích hợp.
Trong thẻ BigQuery, hãy nhấp vào Liên kết.
Làm theo hướng dẫn trên màn hình để bật tính năng xuất sang BigQuery.
Nếu bạn muốn có quyền truy cập gần như theo thời gian thực vào dữ liệu Crashlytics trong BigQuery, hãy cân nhắc nâng cấp lên tính năng xuất trực tuyến.
Điều gì xảy ra khi bạn bật tính năng xuất?
Bạn chọn vị trí của tập dữ liệu. Sau khi tạo tập dữ liệu, bạn sẽ không thể thay đổi vị trí này nữa. Tuy nhiên, bạn có thể sao chép tập dữ liệu sang một vị trí khác hoặc tự di chuyển (tạo lại) tập dữ liệu ở một vị trí khác. Để tìm hiểu thêm, hãy xem bài viết Thay đổi vị trí cho các tệp xuất hiện có.
Vị trí này chỉ áp dụng cho dữ liệu được xuất vào BigQuery và không ảnh hưởng đến vị trí của dữ liệu được lưu trữ để sử dụng trong trang tổng quan Crashlytics của bảng điều khiển Firebase hoặc trong Android Studio.
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 chế độ đồng bộ hoá dữ liệu hằng ngày với BigQuery.
Sau khi liên kết dự án, bạn thường phải đợi đến lần đồng bộ hoá vào ngày hôm sau thì tập dữ liệu đầu tiên mới được xuất sang BigQuery.
Quá trình đồng bộ hoá hằng ngày diễn ra một lần mỗi ngày, bất kể bạn có thiết lập chế độ xuất theo lịch nào trong BigQuery hay không. Xin lưu ý rằng thời gian và thời lượng của công việc đồng bộ hoá có thể thay đổi, vì vậy, bạn không nên lên lịch các thao tác hoặc công việc tiếp theo dựa trên một thời gian xuất cụ thể.
Firebase xuất bản sao dữ liệu hiện có của bạn sang BigQuery. Quá trình truyền dữ liệu ban đầu để xuất có thể mất đến 48 giờ.
Đối với mỗi ứng dụng được liên kết, tệp xuất này sẽ bao gồm một bảng lô chứa dữ liệu từ quá trình đồng bộ hoá hằng ngày.
Bạn có thể lên lịch điền lại dữ liệu theo cách thủ công cho bảng hàng loạt trong tối đa 30 ngày qua hoặc cho ngày gần đây nhất khi bạn bật tính năng xuất sang BigQuery (tuỳ theo ngày nào gần đây nhất).
Xin lưu ý rằng nếu đã bật tính năng xuất dữ liệu Crashlytics trước giữa tháng 10 năm 2024, bạn cũng có thể điền dữ liệu từ 30 ngày trước ngày bạn bật tính năng xuất.
Nếu bạn bật tính năng xuất theo luồng Crashlytics sang BigQuery, tất cả cá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 dữ liệu liên tục cập nhật.
Để tắt tính năng xuất sang BigQuery, hãy 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 vào một tập dữ liệu BigQuery có tên là firebase_crashlytics
. Theo mặc định, các bảng riêng lẻ sẽ được tạo trong tập dữ liệu Crashlytics cho mỗi ứng dụng trong dự án của bạn. Firebase đặt tên cho các bảng dựa trên mã 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 một bảng có tên com_google_test_ANDROID
. Bảng lô này được cập nhật một lần mỗi ngày. Nếu bạn bật chế độ xuất trực tuyến Crashlytics sang BigQuery, thì dữ liệu Crashlytics cũng sẽ được truyền trực tuyến theo thời gian thực vào một bảng có tên là com_google_test_ANDROID_REALTIME
.
Mỗi hàng trong bảng biểu thị 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.
Crashlytics xuất trực tuyến 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ể sử dụng công cụ này cho mọi mục đích cần đến dữ liệu trực tiếp, chẳng hạn như trình bày thông tin trong một 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 vấn đề về ứng dụng kích hoạt cảnh báo và quy trình tuỳ chỉnh.
Khi bật tính năng xuất dữ liệu theo luồng Crashlytics sang BigQuery, ngoài bảng theo lô, bạn cũng sẽ có một bảng theo thời gian thực. Dưới đây là những điểm khác biệt giữa các bảng mà bạn nên lưu ý:
Bảng lô | Bảng theo thời gian thự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ữ các sự kiện một cách bền vững trước khi ghi chúng và có thể điền lại 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 ngay dữ liệu đó vào BigQuery. Vì vậy, đây là lựa chọn 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 kết hợp để tận dụng lợi ích của cả hai.
Theo mặc định, bảng thời gian thực có thời gian hết hạn phân vùng là 30 ngày. Để tìm hiểu cách sửa đổi chế độ này, hãy xem phần Đặt thời gian hết hạn của phân vùng trong tài liệu BigQuery.
* Xem thông tin chi tiết về tính năng hỗ trợ điền dữ liệu cũ trong phần Nâng cấp lên cơ sở hạ tầng xuất dữ liệu mới.
Bật tính năng xuất dữ liệu truyền trực tuyến Crashlytics sang BigQuery
Trong bảng điều khiển Firebase, hãy chuyển đến trang Tích hợp.
Trong thẻ BigQuery, hãy nhấp vào Quản lý.
Đánh dấu vào hộp Bao gồm lượt phát trực tuyến.
Thao tác này cho phép phát trực tuyến cho tất cả các ứng dụng được liên kết.
Bạn có thể làm gì với dữ liệu đã xuất?
Dữ liệu xuất sang BigQuery chứa dữ liệu thô về sự cố, bao gồm loại thiết bị, hệ điều hành, các trường hợp 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 chính xác dữ liệu Crashlytics nào được xuất và sơ đồ 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 Trực quan hoá dữ liệu Crashlytics đã xuất bằng Data Studio.
Tạo chế độ xem
Bạn có thể chuyển đổi các 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 bài viết Tạo khung hiển thị trong tài liệu BigQuery.
Chạy truy vấn
Các ví dụ sau đây minh hoạ những 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 các 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 chúng có thể bổ sung cho hoạt động phân tích và hiểu biết của bạn về dữ liệu sự cố.
Ví dụ 1: Số lượt gặp sự cố theo ngày
Sau khi nỗ lực khắc phục nhiều lỗi nhất có thể, bạn cho rằng nhóm của mình cuối cùng đã sẵn sàng ra mắt ứng dụng chia sẻ ảnh mới. Trước khi làm việc đó, bạn muốn kiểm tra số lượng sự cố mỗi ngày trong tháng qua để đảm bảo rằng việc kiểm thử lỗi đã giúp ứng dụng ổn định hơn theo thời gian.
Dưới đây là một ví dụ về truy vấn cho ứ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 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 những sự cố phổ biến nhất
Để ưu tiên đúng cách các kế hoạch sản xuất, bạn cần tìm ra 10 sự cố phổ biến nhất trong ứng dụng của mình. Bạn tạo một truy vấn cung cấp các điểm dữ liệu liên quan.
Dưới đây là một ví dụ về truy vấn cho ứ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 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ị gặp sự cố hàng đầu
Mùa thu là mùa đ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 giải mới của các vấn đề cụ thể về thiết bị đang đến, đặc biệt là đối với Android. Để giải quyết những lo ngại về khả năng tương thích sắp xảy ra, bạn đã tổng hợp một truy vấn xác định 10 thiết bị gặp nhiều sự cố nhất trong tuần qua (168 giờ).
Dưới đây là một ví dụ về truy vấn cho ứ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 cấp độ nào trong trò chơi của bạn gặp 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á này 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á đó trong tệp xuất sang BigQuery, bạn có thể viết một truy vấn để báo cáo mức phân phối các giá trị current_level
được liên kết với từng sự kiện gặp sự cố.
Dưới đây là một ví dụ về truy vấn cho ứ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 User ID
Bạn có một ứng dụng Android đang ở giai đoạn tiếp cận sớm. Hầu hết người dùng đều thích ứng dụng của bạn, nhưng 3 người dùng đã gặp phải số lượng sự cố bất thường. Để tìm ra nguyên nhân của vấn đề, bạn viết một truy vấn để kéo tất cả các sự kiện gặp sự cố cho những người dùng đó bằng cách sử dụng mã nhận dạng người dùng của họ.
Dưới đây là một ví dụ về truy vấn cho ứ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 *
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ử beta. Nhóm của bạn có thể sử dụng truy vấn trong ví dụ"Tìm lỗi phổ biến nhất" ở trên để xác định mã vấn đề cụ thể về lỗi. Giờ đây, 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 chịu ảnh hưởng của sự cố này.
Dưới đây là một ví dụ về truy vấn cho ứ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 vấn đề về sự cố, được phân tích theo quốc gia
Nhóm của bạn phát hiện thấy một lỗi nghiêm trọng trong quá trình triển khai một bản phát hành mới. Bạn có thể sử dụng truy vấn trong ví dụ"Tìm các sự cố phổ biến nhất" ở trên để xác định mã vấn đề cụ thể về sự cố. Giờ đây, nhóm của bạn muốn biết liệu sự cố này có lan rộng đến người dùng ở nhiều quốc gia trên thế giới hay không.
Để viết truy vấn này, nhóm của bạn cần làm những việc sau:
Bật tính năng xuất dữ liệu Google Analytics sang BigQuery. Hãy xem phần Xuất dữ liệu dự án sang BigQuery.
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");
Viết một truy vấn sử dụng trường mã nhận dạng người dùng để kết hợp các sự kiện trong tập dữ liệu Google Analytics với các sự cố trong tập dữ liệu Crashlytics.
Sau đây là một ví dụ về truy vấn cho ứng dụng Android. Đối với ứng dụng iOS, hãy dùng mã nhận dạng gói 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 từ đầu ngày đến giờ
Dưới đây là một ví dụ về truy vấn cho ứ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, tính cả hôm nay
Bạn cũng có thể kết hợp các bảng theo lô và bảng theo thời gian thực bằng một truy vấn kết hợp để 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ể dùng DISTINCT event_id
để loại bỏ mọi sự kiện trùng lặp trong hai bảng.
Dưới đây là một ví dụ về truy vấn cho ứ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 chế độ 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 diễn ra tối đa 2 ngày trước khi liên kết, đồng thời bạn có thể điền lại tối đa 30 ngày.
Từ thời điểm đó cho đến khi bạn huỷ kích hoạt tính năng xuất, Firebase sẽ xuất các sự kiện Crashlytics 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 dữ liệu 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 sẽ tạo một bảng trong tập dữ liệu cho mỗi ứ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 các bảng dựa trên giá trị nhận dạng của ứng dụng, với 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 một 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 một bảng có tên com_google_test_ANDROID_REALTIME
Các bảng chứa một bộ dữ liệu Crashlytics tiêu chuẩn, ngoài mọi khoá Crashlytics tuỳ chỉnh do bạn xác định trong ứng dụng.
Hàng
Mỗi hàng trong bảng thể hiện một lỗi mà ứng dụng gặp phải.
Cột
Các cột trong bảng là giống nhau đối với sự cố, lỗi không nghiêm trọng và lỗi ANR. Nếu bạn bật chế độ Crashlyticsxuất trực tuyến sang BigQuery, thì bảng theo thời gian thực sẽ có các cột giống như bảng theo lô. Xin lưu ý rằng bạn có thể có các cột trong hàng đại diện cho những sự kiện không có dấu vết ngăn xếp.
Các cột trong tệp 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 cho ứng dụng khi được đăng ký trong dự án Firebase (ví dụ: com.google.gmail Đối với các ứng dụng trên nền tảng Apple, đây là mã nhận dạng gói của ứng dụng. Đối với các ứ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 đề liên quan. |
event_timestamp |
DẤU THỜI GIAN | Thời điểm xảy ra sự kiện |
device |
RECORD | Thiết bị mà sự kiện diễn ra |
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ớ đã dùng |
memory.free |
INT64 | Số byte bộ nhớ còn lại |
storage |
RECORD | Bộ nhớ ổn định của thiết bị |
storage.used |
INT64 | Số byte bộ nhớ đã dùng |
storage.free |
INT64 | Số byte bộ nhớ còn lại |
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 của hệ điều hành trên thiết bị |
operating_system.modification_state |
STRING | Thiết bị đã bị sửa đổi hay chưa (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 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 được gọi là "danh mục thiết bị" |
application |
RECORD | Ứng dụng đã tạo 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 |
REPEATED RECORD | 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 giúp xác định 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 |
REPEATED RECORD | 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 | Thông báo được ghi lại |
breadcrumbs |
REPEATED RECORD | Google AnalyticsTập hợp liên kết phân cấp 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 đánh dấu |
breadcrumbs.name |
STRING | Tên được liên kết với đường liên kết dạng đánh dấu |
breadcrumbs.params |
REPEATED RECORD | Các tham số được liên kết với đường liên kết dạng đánh dấu |
breadcrumbs.params.key |
STRING | Khoá thông số được liên kết với đường dẫn |
breadcrumbs.params.value |
STRING | Giá trị tham số được liên kết với đường liên kết |
blame_frame |
RECORD | Khung được xác định là nguyên nhân gốc gây ra sự cố hoặc lỗi |
blame_frame.line |
INT64 | Số dòng của tệp khung |
blame_frame.file |
STRING | Tên của tệp khung hình |
blame_frame.symbol |
STRING | Biểu tượng được kết xuất hoặc biểu tượng thô nếu không kết xuất được |
blame_frame.offset |
INT64 | Độ lệch byte vào hình ảnh nhị phân chứa mã Chưa đặt cho các trường hợp ngoại lệ Java |
blame_frame.address |
INT64 | Địa chỉ trong hình ảnh nhị phân chứa mã Chưa đặt cho các khung Java |
blame_frame.library |
STRING | Tên hiển thị của thư viện chứa khung hình |
blame_frame.owner |
STRING | Ví dụ: DEVELOPER , VENDOR , RUNTIME , PLATFORM hoặc SYSTEM |
blame_frame.blamed |
BOOLEAN | Liệu Crashlytics có xác định khung hình này là nguyên nhân gây ra sự cố hoặc lỗi hay không |
exceptions |
REPEATED RECORD | (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ệ lồng nhau đượ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 đưa ra |
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 cho tất cả, trừ ngoại lệ được ném cuối cùng (nghĩa là bản ghi đầu tiên) |
exceptions.title |
STRING | Tiêu đề của chuỗi |
exceptions.subtitle |
STRING | Phụ đề của chuỗi |
exceptions.blamed |
BOOLEAN | Đúng nếu Crashlytics xác định ngoại lệ chịu trách nhiệm về lỗi hoặc sự cố |
exceptions.frames |
REPEATED RECORD | Các khung hình liên kết với trường hợp ngoại lệ |
exceptions.frames.line |
INT64 | Số dòng của tệp khung |
exceptions.frames.file |
STRING | Tên của tệp khung hình |
exceptions.frames.symbol |
STRING | Biểu tượng được kết xuất hoặc biểu tượng thô nếu không kết xuất được |
exceptions.frames.offset |
INT64 | Độ lệch byte vào hình ảnh nhị phân chứa mã Chưa đặt cho các trường hợp ngoại lệ Java |
exceptions.frames.address |
INT64 | Địa chỉ trong hình ảnh nhị phân chứa mã Chưa đặt cho các khung Java |
exceptions.frames.library |
STRING | Tên hiển thị của thư viện chứa khung hình |
exceptions.frames.owner |
STRING | Ví dụ: DEVELOPER , VENDOR , RUNTIME , PLATFORM hoặc SYSTEM |
exceptions.frames.blamed |
BOOLEAN | Liệu Crashlytics có xác định khung hình này là nguyên nhân gây ra sự cố hoặc lỗi hay không |
error |
REPEATED RECORD | (Chỉ ứng dụng của 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 kết với NSError tuỳ chỉnh được ghi nhật ký của ứng dụng |
error.title |
STRING | Tiêu đề của chuỗi |
error.subtitle |
STRING | Phụ đề của chuỗi |
error.blamed |
BOOLEAN | Liệu Crashlytics có xác định rằng khung hình này là nguyên nhân gây ra lỗi hay không |
error.frames |
REPEATED RECORD | Khung của stacktrace |
error.frames.line |
INT64 | Số dòng của tệp khung |
error.frames.file |
STRING | Tên của tệp khung hình |
error.frames.symbol |
STRING | Biểu tượng được kết xuất hoặc biểu tượng thô nếu không kết xuất được |
error.frames.offset |
INT64 | Độ lệch byte trong 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 hình |
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 hình này là nguyên nhân gây ra lỗi hay không |
threads |
REPEATED RECORD | Các luồng có tại thời điểm xảy ra sự kiện |
threads.crashed |
BOOLEAN | Chuỗi có bị lỗi hay không |
threads.thread_name |
STRING | Tên của luồng |
threads.queue_name |
STRING | (Chỉ dành cho ứng dụng 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 trên các luồng gốc gặp sự cố |
threads.signal_code |
STRING | Mã của tín hiệu gây ra sự cố cho ứng dụng; chỉ xuất hiện trên các luồng gốc gặp 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 Apple) Mã lỗi của NSError tuỳ chỉnh được ghi lại của ứng dụng |
threads.title |
STRING | Tiêu đề của chuỗi |
threads.subtitle |
STRING | Phụ đề của chuỗi |
threads.blamed |
BOOLEAN | Liệu Crashlytics có xác định khung hình này là nguyên nhân gây ra sự cố hoặc lỗi hay không |
threads.frames |
REPEATED RECORD | Các khung hình của luồng |
threads.frames.line |
INT64 | Số dòng của tệp khung |
threads.frames.file |
STRING | Tên của tệp khung hình |
threads.frames.symbol |
STRING | Biểu tượng được tạo hoặc biểu tượng thô nếu không thể tạo |
threads.frames.offset |
INT64 | Độ lệch byte trong 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 hình |
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 hình 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 đang 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 | Mã 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 độ đổ bóng của đồ hoạ |
unity_metadata.graphics_render_target_count |
INT64 | Số lượng mục tiêu kết xuất đồ hoạ |
unity_metadata.graphics_copy_texture_support |
STRING | Hỗ trợ sao chép hoạ tiết đồ hoạ như được xác định trong Unity API |
unity_metadata.graphics_max_texture_size |
INT64 | Kích thước tối đa dành riêng cho việc kết xuất 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 là chiều rộng x chiều cao |
unity_metadata.screen_resolution_dpi |
STRING | DPI của màn hình dưới dạng số thập phân |
unity_metadata.screen_refresh_rate_hz |
INT64 | Tốc độ làm mới 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 chuyển đổi các tập dữ liệu Crashlytics của bạn trong BigQuery thành các báo cáo dễ đọc, dễ chia sẻ 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 dùng thử hướng dẫn bắt đầu 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, trong đó có một bộ 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 dữ liệu phát trực tiếp 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 thô về sự cố của ứng dụng:
Nhấp vào Sử dụng mẫu ở góc trên bên phải.
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.
Nhấp vào Chọn trên thẻ BigQuery.
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 hàng loạt. Nếu bạn bật chế độ Crashlyticsxuất trực tuyến sang BigQuery, thì bạn có thể chọn bảng theo thời gian thực.
Trong mục Configuration (Cấu hình), hãy đặt Crashlytics Template level (Cấp mẫu) thành Default (Mặc định).
Nhấp vào Kết nối để tạo nguồn dữ liệu mới.
Nhấp vào Thêm vào báo cáo để quay lại mẫu Crashlytics.
Cuối cùng, hãy nhấp vào Tạo báo cáo để tạo bản sao của Crashlyticsmẫu Trang tổng quan Data Studio.
Nâng cấp lên cơ sở hạ tầng xuất dữ liệu mới
Vào giữa tháng 10 năm 2024, Crashlytics đã ra mắt một cơ sở hạ tầng mới để xuất hàng loạt dữ liệu Crashlytics vào BigQuery.
Tất cả dự án Firebase sẽ tự động được nâng cấp lên cơ sở hạ tầng xuất theo lô mới chậm nhất là vào ngày 15 tháng 9 năm 2025. Bạn có thể nâng cấp trước ngày này, nhưng hãy đảm bảo rằng các bảng theo lô BigQuery đáp ứng các điều kiện tiên quyết để nâng cấp.
Bạn có thể nâng cấp lên cơ sở hạ tầng mới, nhưng hãy đảm bảo rằng các bảng theo lô BigQuery đáp ứng các điều kiện tiên quyết để nâng cấp.
Xác định xem bạn có đang sử dụng cơ sở hạ tầng mới hay không
Nếu bạn bật tính năng xuất theo lô từ giữa tháng 10 năm 2024 trở đi, thì dự án Firebase của bạn sẽ tự động sử dụng cơ sở hạ tầng xuất dữ liệu mới.
Bạn có thể kiểm tra cơ sở hạ tầng mà dự án của mình đang sử dụng: Chuyển đến bảng điều khiển Google Cloud, nếu "cấu hình chuyển dữ liệu" của bạn được gắn nhãn Firebase Crashlytics with Multi-Region Support
, thì dự án của bạn đang sử dụng cơ sở hạ tầng xuất dữ liệu mới.
Những điểm khác biệt quan trọng giữa cơ sở hạ tầng xuất dữ liệu cũ và cơ sở hạ tầng xuất dữ liệu mới
Cơ sở hạ tầng mới hỗ trợ Crashlytics vị trí tập dữ liệu bên ngoài Hoa Kỳ.
Đã bật tính năng xuất trước giữa tháng 10 năm 2024 và đã nâng cấp lên cơ sở hạ tầng xuất mới – Giờ đây, bạn có thể thay đổi vị trí xuất dữ liệu (không bắt buộc).
Đã bật tính năng xuất dữ liệu từ giữa tháng 10 năm 2024 trở đi – Bạn được nhắc chọn vị trí để xuất dữ liệu trong quá trình thiết lập.
Cơ sở hạ tầng mới không hỗ trợ việc điền lại dữ liệu từ trước khi bạn bật tính năng xuất.
Cơ sở hạ tầng cũ hỗ trợ điền lại dữ liệu tối đa 30 ngày trước ngày bạn bật tính năng xuất.
Cơ sở hạ tầng mới hỗ trợ việc điền lại tối đa 30 ngày qua hoặc cho ngày gần đây nhất khi bạn bật tính năng xuất sang BigQuery (tuỳ theo ngày nào gần đây nhất).
Các bảng theo lô BigQuery có tên cơ sở hạ tầng mới sử dụng các giá trị nhận dạng được đặt cho Ứng dụng Firebase trong dự án Firebase của bạn.
Cơ sở hạ tầng cũ ghi dữ liệu vào các bảng theo lô có tên dựa trên mã nhận dạng gói hoặc tên gói trong cấu hình Firebase trong cơ sở mã của ứng dụng.
Cơ sở hạ tầng mới ghi dữ liệu vào các bảng theo lô có tên dựa trên mã nhận dạng gói hoặc tên gói được đặt cho các ứng dụng Firebase đã đăng ký trong dự án Firebase.
Bước 1: Điều kiện tiên quyết để nâng cấp
Kiểm tra để đảm bảo các bảng theo lô BigQuery hiện có của bạn sử dụng các giá trị nhận dạng khớp với mã nhận dạng gói hoặc tên gói được đặt cho các Ứng dụng Firebase đã đăng ký trong dự án Firebase. Nếu không khớp, bạn có thể gặp phải tình trạng gián đoạn đối với dữ liệu hàng loạt đã xuất. Hầu hết các dự án sẽ ở trạng thái phù hợp và tương thích, nhưng bạn cần kiểm tra trước khi nâng cấp.
Bạn có thể tìm thấy tất cả Ứng dụng Firebase đã đăng ký trong dự án Firebase của mình trong bảng điều khiển Firebase: Chuyển đến phần Cài đặt dự án, sau đó di chuyển đến thẻ Ứng dụng của bạn để xem tất cả Ứng dụng Firebase và thông tin của các ứng dụng đó.
Bạn có thể tìm thấy tất cả các bảng BigQuery theo lô trong trang BigQuery của bảng điều khiển Google Cloud.
Ví dụ: sau đây là các trạng thái lý tưởng mà bạn sẽ không gặp phải vấn đề nào khi nâng cấp:
Bạn có một bảng lô có tên là
com_yourcompany_yourproject_IOS
và một ứng dụng Firebase iOS+ có mã nhận dạng góicom.yourcompany.yourproject
đã đăng ký trong dự án Firebase của bạn.Bạn có một bảng lô có tên là
com_yourcompany_yourproject_ANDROID
và một ứng dụng Android Firebase có tên góicom.yourcompany.yourproject
được đăng ký trong dự án Firebase.
Nếu bạn có tên bảng hàng loạt không khớp với các giá trị nhận dạng được đặt cho Ứng dụng Firebase đã đăng ký, thì hãy làm theo hướng dẫn sau này trên trang này trước khi nâng cấp theo cách thủ công hoặc trước ngày 15 tháng 9 năm 2025 để tránh làm gián đoạn quá trình xuất hàng loạt.
Bước 2: Nâng cấp lên cơ sở hạ tầng mới theo cách thủ công
Nếu đã bật tính năng xuất hàng loạt trước giữa tháng 10 năm 2024, thì bạn có thể nâng cấp lên cơ sở hạ tầng mới theo cách thủ công bằng cách chỉ cần tắt rồi bật lại tính năng xuất dữ liệu Crashlytics trong bảng điều khiển Firebase.
Sau đây là các bước chi tiết:
Trong bảng điều khiển Firebase, hãy chuyển đến trang Tích hợp.
Trong thẻ BigQuery, hãy nhấp vào Quản lý.
Tắt thanh trượt Crashlytics để tắt tính năng xuất. Khi được nhắc, hãy xác nhận rằng bạn muốn ngừng xuất dữ liệu.
Ngay lập tức bật lại nút trượt Crashlytics để bật lại tính năng xuất. Khi được nhắc, hãy xác nhận rằng bạn muốn xuất dữ liệu.
Quá trình xuất dữ liệu Crashlytics sang BigQuery hiện đang sử dụng cơ sở hạ tầng xuất mới.