Firebase Crashlytics का डेटा यहां एक्सपोर्ट किया जा सकता है इसके लिए BigQuery विश्लेषण किया जा सकता है. BigQuery की मदद से, BigQuery SQL का इस्तेमाल करके डेटा का विश्लेषण किया जा सकता है. साथ ही, उसे किसी दूसरे क्लाउड सेवा देने वाली कंपनी के पास एक्सपोर्ट किया जा सकता है. इसके अलावा, Google Data Studio में विज़ुअलाइज़ेशन और कस्टम डैशबोर्ड के लिए भी इसका इस्तेमाल किया जा सकता है.
BigQuery में एक्सपोर्ट करने की सुविधा चालू करना
- Firebase कंसोल में, इंटिग्रेशन पेज पर जाएं.
- BigQuery कार्ड में, लिंक करें पर क्लिक करें.
- BigQuery में एक्सपोर्ट करने की सुविधा चालू करने के लिए, स्क्रीन पर दिए गए निर्देशों का पालन करें.
यहां बताया गया है कि BigQuery में एक्सपोर्ट करने की सुविधा चालू करने पर क्या होता है:
आपके प्रोजेक्ट के सभी ऐप्लिकेशन डिफ़ॉल्ट रूप से, BigQuery से लिंक होते हैं. साथ ही, बाद में प्रोजेक्ट में जोड़े जाने वाले ऐप्लिकेशन भी अपने-आप BigQuery से लिंक कर दिए जाते हैं. आप मैनेज करें कि कौनसे ऐप्लिकेशन डेटा भेजेंगे.
Firebase आपके Firebase प्रोजेक्ट से आपके डेटा को रोज़ सिंक करने की सुविधा सेट अप करता है, ताकि BigQuery.
Firebase, BigQuery पर आपके मौजूदा डेटा की कॉपी एक्सपोर्ट करता है. लिंक किए गए हर ऐप्लिकेशन के लिए, इसमें बैच टेबल शामिल होती है जिसमें रोज़ के सिंक का डेटा शामिल हो.
अगर आपको Crashlytics स्ट्रीमिंग एक्सपोर्ट को BigQuery पर चालू करें, लिंक किए गए सभी ऐप्लिकेशन में एक रीयल टाइम टेबल भी होगी, जिसमें लगातार अपडेट होते रहेंगे डेटा शामिल है.
BigQuery पर एक्सपोर्ट करने की सुविधा बंद करने के लिए, Firebase कंसोल में जाकर, अपने प्रोजेक्ट को अनलिंक करें.
BigQuery में कौनसा डेटा एक्सपोर्ट किया जाता है?
Firebase Crashlytics के डेटा को BigQuery के डेटासेट में एक्सपोर्ट किया गया है
firebase_crashlytics
. डिफ़ॉल्ट रूप से, इसके अंदर अलग-अलग टेबल बनाई जाएंगी
आपके प्रोजेक्ट में मौजूद हर ऐप्लिकेशन के लिए, Crashlytics डेटासेट. Firebase, टेबल के नाम ऐप्लिकेशन के आइडेंटिफ़ायर के आधार पर तय करता है. इसमें पीरियड को अंडरस्कोर में बदल दिया जाता है और आखिर में प्लैटफ़ॉर्म का नाम जोड़ दिया जाता है.
उदाहरण के लिए, com.google.test
पैकेज नाम वाले Android ऐप्लिकेशन का डेटा
com_google_test_ANDROID
नाम की टेबल में होगा. यह बैच टेबल अपडेट की गई है
दिन में एक बार. अगर Crashlytics की स्ट्रीमिंग एक्सपोर्ट चालू की जाती है, तो
BigQuery, इसके बाद Crashlytics का डेटा भी रीयलटाइम में स्ट्रीम किया जाएगा
com_google_test_ANDROID_REALTIME
नाम की टेबल में.
टेबल की हर लाइन, ऐप्लिकेशन में हुए किसी इवेंट के बारे में बताती है. जैसे, ऐप्लिकेशन बंद होने की समस्याएं, गड़बड़ियां, और ANR.
Crashlytics BigQuery में स्ट्रीमिंग एक्सपोर्ट
BigQuery स्ट्रीमिंग की मदद से, अपने Crashlytics डेटा को रीयल टाइम में स्ट्रीम किया जा सकता है. इसका इस्तेमाल, लाइव डेटा की ज़रूरत वाले किसी भी काम के लिए किया जा सकता है. जैसे, लाइव डैशबोर्ड में जानकारी दिखाना, रोल आउट को लाइव देखना या चेतावनियों और कस्टम वर्कफ़्लो को ट्रिगर करने वाली ऐप्लिकेशन की समस्याओं को मॉनिटर करना.
अगर Crashlytics स्ट्रीमिंग एक्सपोर्ट को BigQuery में चालू किया जाता है, तो बैच टेबल के अलावा आपके पास एक रीयलटाइम टेबल भी होगी. यहां टेबल के बीच के अंतर के बारे में बताया गया है:
बैच टेबल | रीयलटाइम टेबल |
---|---|
|
|
बैच टेबल, लंबे समय तक के विश्लेषण और समय के साथ रुझानों की पहचान करने के लिए बेहतरीन है. ऐसा इसलिए, क्योंकि हम इवेंट को लिखने से पहले उन्हें सुरक्षित तरीके से सेव करते हैं. साथ ही, इन्हें 30 दिनों तक टेबल में बैकफ़िल किया जा सकता है. जब हम आपकी रीयल टाइम टेबल में डेटा डालते हैं, तो हम उसे तुरंत BigQuery में डाल देते हैं. इसलिए, यह लाइव डैशबोर्ड और कस्टम सूचनाओं के लिए सबसे सही है. ये दोनों टेबल एक स्टिचिंग क्वेरी के साथ संयोजित किया जाता है. दोनों के फ़ायदे.
डिफ़ॉल्ट रूप से, रीयल टाइम टेबल में, सेगमेंट की समयसीमा 30 दिन की होती है. यहां की यात्रा पर हूं इसे संशोधित करने का तरीका जानें, देखें सेगमेंट की समयसीमा खत्म होने की तारीख सेट करना BigQuery दस्तावेज़ में पढ़ें.
Crashlytics से BigQuery पर स्ट्रीमिंग एक्सपोर्ट करने की सुविधा चालू करना
- Firebase कंसोल में, इंटिग्रेशन पेज पर जाएं.
- BigQuery कार्ड में, मैनेज करें पर क्लिक करें.
- स्ट्रीमिंग शामिल करें चेकबॉक्स को चुनें.
इस कार्रवाई से आपके लिंक किए गए सभी ऐप्लिकेशन के लिए स्ट्रीमिंग चालू हो जाएगी.
एक्सपोर्ट किए गए डेटा का इस्तेमाल करके क्या किया जा सकता है?
BigQuery को एक्सपोर्ट किए जाने वाले डेटा में, क्रैश डेटा शामिल नहीं होता. जैसे, डिवाइस टाइप, अपवाद (Android ऐप्लिकेशन) या गड़बड़ियां (Apple ऐप्लिकेशन) और Crashlytics लॉग और अन्य डेटा.
देखें कि Crashlytics का कौनसा डेटा एक्सपोर्ट किया गया है और उसकी टेबल क्या है स्कीमा के बाद इस पेज पर जाएं.
Data Studio टेंप्लेट का इस्तेमाल करना
अपने Data Studio टेंप्लेट में रीयलटाइम डेटा चालू करने के लिए, इसमें निर्देश एक्सपोर्ट किए गए Crashlytics के डेटा को Data Studio की मदद से विज़ुअलाइज़ करना.
व्यू बनाना
BigQuery यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करके, क्वेरी को व्यू में बदला जा सकता है. ज़्यादा जानकारी के लिए, BigQuery दस्तावेज़ में व्यू बनाना देखें.
क्वेरी चलाएं
यहां दिए गए उदाहरणों में ऐसी क्वेरी दिखाई गई हैं जिन्हें अपने Crashlytics डेटा पर चलाया जा सकता है. इससे, क्रैश इवेंट के डेटा को आसानी से समझी जा सकने वाली खास जानकारी में एग्रीगेट करने वाली रिपोर्ट जनरेट की जा सकती हैं. चूंकि इस प्रकार की रिपोर्ट उपलब्ध नहीं होती हैं Firebase कंसोल के Crashlytics डैशबोर्ड में, ये ऐड-ऑन जोड़कर काम कर सकते हैं क्रैश डेटा का विश्लेषण और समझ.
पहला उदाहरण: दिन के हिसाब से क्रैश
ज़्यादा से ज़्यादा गड़बड़ियों को ठीक करने के बाद, आपको लगता है कि आपकी टीम अब फ़ोटो शेयर करने वाला नया ऐप्लिकेशन लॉन्च करने के लिए तैयार है. हालांकि, ऐसा करने से पहले आपको पिछले महीने के लिए, हर दिन ऐप्लिकेशन के क्रैश होने की संख्या देखनी है. इससे आपको यह पक्का करने में मदद मिलेगी कि गड़बड़ियों को ठीक करने की प्रोसेस के बाद, ऐप्लिकेशन ज़्यादा बेहतर तरीके से काम कर रहा है या नहीं.
यहां Android ऐप्लिकेशन के लिए क्वेरी का उदाहरण दिया गया है. iOS ऐप्लिकेशन के लिए, पैकेज के नाम और ANDROID
के बजाय, उसके बंडल आईडी और IOS
का इस्तेमाल करें.
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;
दूसरा उदाहरण: ऐप्लिकेशन के सबसे ज़्यादा क्रैश होने की समस्या का पता लगाना
प्रोडक्शन प्लान को सही तरीके से प्राथमिकता देने के लिए, आपको सबसे लोकप्रिय 10 गेम चुनने होंगे आपके ऐप्लिकेशन में व्यापक रूप से बंद हो जाता है. आपने ऐसी क्वेरी बनाई है जो काम की है डेटा के पॉइंट.
यहां Android ऐप्लिकेशन के लिए क्वेरी का उदाहरण दिया गया है. iOS ऐप्लिकेशन के लिए, पैकेज के नाम और ANDROID
के बजाय, उसके बंडल आईडी और IOS
का इस्तेमाल करें.
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;
उदाहरण 3: क्रैश होने वाले टॉप 10 डिवाइस
पतझड़ नया फ़ोन सीज़न है! आपकी कंपनी को पता है कि इसका मतलब यह भी है कि डिवाइस से जुड़ी नई समस्याओं का मौसम शुरू हो गया है. खास तौर पर, Android के लिए. डिवाइसों के साथ काम करने से जुड़ी समस्याओं से पहले से निपटने के लिए, आपने एक क्वेरी बनाई है. इससे उन 10 डिवाइसों की पहचान की जा सकती है जिन पर पिछले हफ़्ते (168 घंटे) में सबसे ज़्यादा क्रैश हुए.
यहां Android ऐप्लिकेशन के लिए क्वेरी का उदाहरण दिया गया है. iOS ऐप्लिकेशन के लिए, पैकेज के नाम और ANDROID
के बजाय, उसके बंडल आईडी और IOS
का इस्तेमाल करें.
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;
चौथा उदाहरण: कस्टम बटन के हिसाब से फ़िल्टर करना
आप एक गेम डेवलपर हैं और आपको यह जानना है कि आपके गेम के किस लेवल में सबसे ज़्यादा क्रैश आते हैं.
उस आंकड़े को ट्रैक करने के लिए, current_level
नाम की एक कस्टम Crashlytics कुंजी सेट की जाती है. साथ ही, हर बार जब उपयोगकर्ता किसी नए लेवल पर पहुंचता है, तो उसे अपडेट किया जाता है.
Swift
Crashlytics.sharedInstance().setIntValue(3, forKey: "current_level");
Objective-C
CrashlyticsKit setIntValue:3 forKey:@"current_level";
Java
Crashlytics.setInt("current_level", 3);
BigQuery में एक्सपोर्ट करने के लिए, उस कुंजी का इस्तेमाल करके, हर क्रैश इवेंट से जुड़ी current_level
वैल्यू के डिस्ट्रिब्यूशन की रिपोर्ट करने के लिए क्वेरी लिखी जा सकती है.
यहां Android ऐप्लिकेशन के लिए क्वेरी का उदाहरण दिया गया है. iOS ऐप्लिकेशन के लिए, उसके बंडल आईडी का इस्तेमाल करें
और IOS
(पैकेज के नाम और 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
पांचवां उदाहरण: यूज़र आईडी निकालना
आपके पास Android ऐप्लिकेशन का रिलीज़ होने से पहले इस्तेमाल करने का विकल्प है. आपके ज़्यादातर उपयोगकर्ताओं को यह पसंद आया, लेकिन तीन उपयोगकर्ताओं को ऐप्लिकेशन के क्रैश होने की समस्या का सामना करना पड़ा. समस्या की पूरी जानकारी पाने के लिए समस्या है, तो आप एक ऐसी क्वेरी लिखते हैं जो उन उपयोगकर्ताओं के लिए सभी क्रैश इवेंट की जानकारी हासिल करती है, उपयोगकर्ता आईडी का इस्तेमाल कर रहे हैं.
यहां Android ऐप्लिकेशन के लिए क्वेरी का उदाहरण दिया गया है. iOS ऐप्लिकेशन के लिए, उसके बंडल आईडी का इस्तेमाल करें
और IOS
(पैकेज के नाम और 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
उदाहरण 6: उन सभी उपयोगकर्ताओं को ढूंढना जिन्हें क्रैश की खास समस्या का सामना करना पड़ रहा है
आपकी टीम ने गलती से बीटा टेस्टर के ग्रुप को एक गंभीर गड़बड़ी भेज दी है. आपकी टीम "सबसे बड़े क्रैश का पता लगाना" उदाहरण के लिए का इस्तेमाल करें. अब आपकी टीम को ऐप्लिकेशन के उन उपयोगकर्ताओं की सूची निकालने के लिए एक क्वेरी चलानी है जिन पर इस क्रैश का असर पड़ा है.
यहां Android ऐप्लिकेशन के लिए क्वेरी का उदाहरण दिया गया है. iOS ऐप्लिकेशन के लिए, उसके बंडल आईडी का इस्तेमाल करें
और IOS
(पैकेज के नाम और 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;
उदाहरण 7: ऐसे उपयोगकर्ताओं की संख्या जिन पर क्रैश की समस्या का असर पड़ा है. इस समस्या को देश के हिसाब से बांटा गया है
आपकी टीम को नई रिलीज़ के रोल आउट के दौरान, एक गंभीर गड़बड़ी का पता चला है. आपने लोगों तक पहुंचाया मुफ़्त में से क्वेरी का इस्तेमाल कर पाए "सबसे बड़े क्रैश का पता लगाना" उदाहरण के लिए का इस्तेमाल करें. आपकी टीम अब देखना चाहती है कि अगर यह क्रैश दुनिया भर के अलग-अलग देशों के उपयोगकर्ताओं में फैल गया है.
यह क्वेरी लिखने के लिए, आपकी टीम को ये काम करने होंगे:
Google Analytics के डेटा को BigQuery में एक्सपोर्ट करने की सुविधा चालू करें. प्रोजेक्ट डेटा को BigQuery में एक्सपोर्ट करना लेख पढ़ें.
दोनों Google Analytics SDK टूल में यूज़र आईडी पास करने के लिए अपना ऐप्लिकेशन अपडेट करें और Crashlytics SDK टूल.
Swift
Crashlytics.sharedInstance().setUserIdentifier("123456789"); Analytics.setUserID("123456789");
Objective-C
CrashlyticsKit setUserIdentifier:@"123456789"; FIRAnalytics setUserID:@"12345678 9";
Java
Crashlytics.setUserIdentifier("123456789"); mFirebaseAnalytics.setUserId("123456789");
ऐसी क्वेरी लिखें जो Google Analytics डेटासेट के इवेंट को Crashlytics डेटासेट के क्रैश से जोड़ने के लिए, यूज़र आईडी फ़ील्ड का इस्तेमाल करती हो.
यहां Android ऐप्लिकेशन के लिए क्वेरी का उदाहरण दिया गया है. iOS ऐप्लिकेशन के लिए, पैकेज के नाम और
ANDROID
के बजाय, उसके बंडल आईडी औरIOS
का इस्तेमाल करें.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
उदाहरण 8: आज तक की पांच सबसे बड़ी समस्याएं
यहां Android ऐप्लिकेशन के लिए क्वेरी का उदाहरण दिया गया है. iOS ऐप्लिकेशन के लिए, उसके बंडल आईडी का इस्तेमाल करें
और IOS
(पैकेज के नाम और 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;
नौवां उदाहरण: DATE से लेकर आज तक की पांच सबसे बड़ी समस्याएं
भरोसेमंद बैच डेटा में रीयल-टाइम जानकारी जोड़ने के लिए, स्टिचिंग क्वेरी की मदद से बैच और रीयल-टाइम टेबल को भी जोड़ा जा सकता है. event_id
एक मुख्य कुंजी है. इसलिए, दोनों टेबल से किसी भी सामान्य इवेंट को हटाने के लिए, DISTINCT event_id
का इस्तेमाल किया जा सकता है.
यहां Android ऐप्लिकेशन के लिए क्वेरी का उदाहरण दिया गया है. iOS ऐप्लिकेशन के लिए, पैकेज के नाम और ANDROID
के बजाय, उसके बंडल आईडी और IOS
का इस्तेमाल करें.
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;
BigQuery में Crashlytics स्कीमा को समझना
जब Firebase में, Crashlytics का डेटा एक्सपोर्ट BigQuery में सेट अप किया जाता है हाल ही के इवेंट (क्रैश, साधारण गड़बड़ियां, और ANR) एक्सपोर्ट करता है, जिनमें इवेंट शामिल हैं लिंक से दो दिन पहले तक बैकफ़िल ज़्यादा से ज़्यादा 30 दिन लग सकते हैं.
इसके बाद, जब तक एक्सपोर्ट की सुविधा बंद नहीं की जाती, तब तक Firebase हर दिन Crashlytics इवेंट एक्सपोर्ट करता है. डेटा इकट्ठा होने में कुछ मिनट लग सकते हैं हर एक्सपोर्ट के बाद, BigQuery में उपलब्ध होगा.
डेटासेट
Crashlytics, Crashlytics के लिए BigQuery में नया डेटासेट बनाता है डेटा. डेटासेट में आपके पूरे प्रोजेक्ट का डेटा शामिल होता है. भले ही, उसमें एक से ज़्यादा ऐप्लिकेशन हों.
टेबल
Crashlytics आपके प्रोजेक्ट में मौजूद हर ऐप्लिकेशन के लिए, डेटासेट में एक टेबल बनाता है. ऐसा तब तक होता है, जब तक आपने उस ऐप्लिकेशन के डेटा को एक्सपोर्ट करने की सुविधा से ऑप्ट आउट नहीं किया है. Firebase, ऐप्लिकेशन के आइडेंटिफ़ायर के आधार पर टेबल का नाम तय करता है. इसमें पीरियड को अंडरस्कोर में बदल दिया जाता है और आखिर में प्लैटफ़ॉर्म का नाम जोड़ दिया जाता है.
उदाहरण के लिए, com.google.test
पैकेज नाम वाले Android ऐप्लिकेशन का डेटा
com_google_test_ANDROID
नाम की टेबल और रीयलटाइम डेटा में दिखेगा
(चालू होने पर) com_google_test_ANDROID_REALTIME
नाम की टेबल में होगी
टेबल में Crashlytics डेटा का स्टैंडर्ड सेट होता है. साथ ही, इसमें आपके ऐप्लिकेशन में तय की गई कस्टम Crashlytics कुंजियां भी शामिल होती हैं.
लाइन
टेबल की हर लाइन, ऐप्लिकेशन में हुई गड़बड़ी के बारे में बताती है.
कॉलम
टेबल में मौजूद कॉलम, क्रैश, सामान्य गड़बड़ियों, और ANRs के लिए एक जैसे होते हैं. अगर आपने Crashlytics स्ट्रीमिंग एक्सपोर्ट को BigQuery पर चालू करें. इसके बाद रीयलटाइम टेबल में वही कॉलम होंगे जो बैच टेबल में हैं. ध्यान दें कि हो सकता है कि आपके पास लाइनों में ऐसे कॉलम हों जो ऐसे इवेंट दिखाते हों जिनमें स्टैक ट्रेस न हों.
एक्सपोर्ट में शामिल कॉलम इस टेबल में दिए गए हैं:
फ़ील्ड का नाम | डेटा टाइप | ब्यौरा |
---|---|---|
platform |
स्ट्रिंग | Firebase प्रोजेक्ट में रजिस्टर किया गया ऐप्लिकेशन का प्लैटफ़ॉर्म
(मान्य वैल्यू: IOS या ANDROID )
|
bundle_identifier |
स्ट्रिंग | Firebase प्रोजेक्ट में रजिस्टर किए गए ऐप्लिकेशन का यूनीक आइडेंटिफ़ायर (उदाहरण के लिए, com.google.gmail Apple प्लैटफ़ॉर्म के ऐप्लिकेशन के लिए, यह ऐप्लिकेशन का बंडल आईडी होता है. Android ऐप्लिकेशन के लिए, यह ऐप्लिकेशन का पैकेज नाम होता है. |
event_id |
स्ट्रिंग | इवेंट का यूनीक आईडी |
is_fatal |
बूलियन | ऐप्लिकेशन क्रैश हुआ या नहीं |
error_type |
स्ट्रिंग | इवेंट का किस तरह का गड़बड़ी है (उदाहरण के लिए, FATAL ,
NON_FATAL , ANR वगैरह) |
issue_id |
स्ट्रिंग | इवेंट से जुड़ी समस्या |
variant_id |
स्ट्रिंग | इस इवेंट से जुड़ी समस्या का वैरिएंट ध्यान दें कि हर इवेंट में, समस्या का वैरिएंट नहीं होता. |
event_timestamp |
टाइमस्टैंप | इवेंट कब हुआ |
device |
रिकॉर्ड | वह डिवाइस जिस पर इवेंट हुआ |
device.manufacturer |
स्ट्रिंग | डिवाइस बनाने वाली कंपनी |
device.model |
स्ट्रिंग | डिवाइस का मॉडल |
device.architecture |
स्ट्रिंग | उदाहरण के लिए, X86_32 , X86_64 , ARMV7 ,
ARM64 , ARMV7S या ARMV7K |
memory |
रिकॉर्ड | डिवाइस की मेमोरी की स्थिति |
memory.used |
INT64 | इस्तेमाल की गई मेमोरी के बाइट |
memory.free |
INT64 | बची हुई मेमोरी के बाइट |
storage |
रिकॉर्ड | डिवाइस का स्थायी स्टोरेज |
storage.used |
INT64 | इस्तेमाल किया गया स्टोरेज (बाइट में) |
storage.free |
INT64 | बचे हुए स्टोरेज के बाइट |
operating_system |
रिकॉर्ड | डिवाइस पर मौजूद ओएस की जानकारी |
operating_system.display_version |
स्ट्रिंग | डिवाइस पर ओएस का वर्शन |
operating_system.name |
स्ट्रिंग | डिवाइस पर ओएस का नाम |
operating_system.modification_state |
स्ट्रिंग | डिवाइस में बदलाव किया गया है या नहीं
(उदाहरण के लिए, MODIFIED ऐप्लिकेशन, रूट किया गया ऐप्लिकेशन है और रूट किया गया ऐप्लिकेशन
UNMODIFIED ) |
operating_system.type |
स्ट्रिंग | (सिर्फ़ Apple ऐप्लिकेशन के लिए) डिवाइस पर चलने वाले ऑपरेटिंग सिस्टम का टाइप (उदाहरण के लिए,
IOS , MACOS वगैरह) |
operating_system.device_type |
स्ट्रिंग | डिवाइस किस तरह का है (उदाहरण के लिए, MOBILE , TABLET ,
TV वगैरह); "डिवाइस श्रेणी" के रूप में भी जाना जाता है |
application |
रिकॉर्ड | वह ऐप्लिकेशन जिसने इवेंट जनरेट किया |
application.build_version |
स्ट्रिंग | ऐप्लिकेशन का बिल्ड वर्शन |
application.display_version |
स्ट्रिंग | |
user |
रिकॉर्ड | (ज़रूरी नहीं) ऐप्लिकेशन के उपयोगकर्ता के बारे में इकट्ठा की गई जानकारी |
user.name |
स्ट्रिंग | (ज़रूरी नहीं) उपयोगकर्ता का नाम |
user.email |
स्ट्रिंग | (ज़रूरी नहीं) उपयोगकर्ता का ईमेल पता |
user.id |
स्ट्रिंग | (ज़रूरी नहीं) उपयोगकर्ता से जुड़ा, ऐप्लिकेशन से जुड़ा आईडी |
custom_keys |
दोहराया गया रिकॉर्ड | डेवलपर के तय किए गए की-वैल्यू पेयर |
custom_keys.key |
स्ट्रिंग | डेवलपर की ओर से तय की गई कुंजी |
custom_keys.value |
स्ट्रिंग | डेवलपर की ओर से तय की गई वैल्यू |
installation_uuid |
स्ट्रिंग | ऐसा आईडी जो किसी खास ऐप्लिकेशन और डिवाइस को इंस्टॉल किए जाने की पहचान करता है |
crashlytics_sdk_versions |
स्ट्रिंग | इवेंट जनरेट करने वाले Crashlytics SDK टूल का वर्शन |
app_orientation |
स्ट्रिंग | उदाहरण के लिए, PORTRAIT , LANDSCAPE ,
FACE_UP , FACE_DOWN वगैरह |
device_orientation |
स्ट्रिंग | उदाहरण के लिए, PORTRAIT , LANDSCAPE ,
FACE_UP , FACE_DOWN वगैरह |
process_state |
स्ट्रिंग | BACKGROUND या FOREGROUND |
logs |
दोहराया गया रिकॉर्ड | टाइमस्टैंप वाले लॉग मैसेज, जिन्हें Crashlytics लॉगर ने जनरेट किया, अगर चालू है |
logs.timestamp |
टाइमस्टैंप | लॉग कब बनाया गया था |
logs.message |
स्ट्रिंग | लॉग किया गया मैसेज |
breadcrumbs |
दोहराया गया रिकॉर्ड | टाइमस्टैंप वाला Google Analytics ब्रेडक्रंब, अगर चालू है |
breadcrumbs.timestamp |
टाइमस्टैंप | ब्रेडक्रंब से जुड़ा टाइमस्टैंप |
breadcrumbs.name |
स्ट्रिंग | ब्रेडक्रंब से जुड़ा नाम |
breadcrumbs.params |
बार-बार रिकॉर्ड करना | ब्रेडक्रंब से जुड़े पैरामीटर |
breadcrumbs.params.key |
स्ट्रिंग | ब्रेडक्रंब से जुड़ी पैरामीटर कुंजी |
breadcrumbs.params.value |
स्ट्रिंग | ब्रेडक्रंब से जुड़ी पैरामीटर वैल्यू |
blame_frame |
रिकॉर्ड | वह फ़्रेम जिसकी पहचान क्रैश या गड़बड़ी की मुख्य वजह के तौर पर की गई है |
blame_frame.line |
INT64 | फ़्रेम की फ़ाइल की लाइन नंबर |
blame_frame.file |
स्ट्रिंग | फ़्रेम फ़ाइल का नाम |
blame_frame.symbol |
स्ट्रिंग | हाइड्रेट किया गया सिंबल या अगर हाइड्रेट नहीं किया जा सकता, तो रॉ सिंबल |
blame_frame.offset |
INT64 | उस बाइनरी इमेज में बाइट ऑफ़सेट जो कोड है Java अपवादों के लिए सेट न करें |
blame_frame.address |
INT64 | बाइनरी इमेज में दिया गया पता, जिसमें कोड शामिल है Java फ़्रेम के लिए सेट न करें |
blame_frame.library |
स्ट्रिंग | उस लाइब्रेरी का डिसप्ले नेम जिसमें फ़्रेम शामिल है |
blame_frame.owner |
स्ट्रिंग | उदाहरण के लिए, DEVELOPER , VENDOR ,
RUNTIME , PLATFORM या SYSTEM |
blame_frame.blamed |
बूलियन | Crashlytics ने यह तय किया है कि क्रैश या गड़बड़ी की वजह यह फ़्रेम है या नहीं |
exceptions |
दोहराया गया रिकॉर्ड | (सिर्फ़ Android के लिए) इस इवेंट के दौरान हुई गड़बड़ियां. नेस्ट किए गए अपवाद, समय के हिसाब से उलटे क्रम में दिखाए जाते हैं. इसका मतलब है कि आखिरी रिकॉर्ड, सबसे पहले दिखाया गया अपवाद है |
exceptions.type |
स्ट्रिंग | अपवाद का टाइप
(उदाहरण के लिए, java.lang.IllegalStateException) |
exceptions.exception_message |
स्ट्रिंग | अपवाद से जुड़ा मैसेज |
exceptions.nested |
बूलियन | आखिरी बार लागू किए गए अपवाद को छोड़कर बाकी सभी के लिए सही है (पहला रिकॉर्ड) |
exceptions.title |
स्ट्रिंग | थ्रेड का टाइटल |
exceptions.subtitle |
स्ट्रिंग | थ्रेड का सबटाइटल |
exceptions.blamed |
बूलियन | सही है, अगर Crashlytics को लगता है कि अपवाद की वजह से गड़बड़ी या क्रैश |
exceptions.frames |
दोहराया गया रिकॉर्ड | अपवाद से जुड़े फ़्रेम |
exceptions.frames.line |
INT64 | फ़्रेम की फ़ाइल की लाइन नंबर |
exceptions.frames.file |
स्ट्रिंग | फ़्रेम फ़ाइल का नाम |
exceptions.frames.symbol |
स्ट्रिंग | हाइड्रेट किया गया सिंबल या अगर हाइड्रेट नहीं किया जा सकता, तो रॉ सिंबल |
exceptions.frames.offset |
INT64 | उस बाइनरी इमेज में बाइट ऑफ़सेट जो कोड है Java अपवादों के लिए सेट न करें |
exceptions.frames.address |
INT64 | बाइनरी इमेज में दिया गया पता, जिसमें कोड शामिल है Java फ़्रेम के लिए सेट न करें |
exceptions.frames.library |
स्ट्रिंग | उस लाइब्रेरी का डिसप्ले नेम जिसमें फ़्रेम शामिल है |
exceptions.frames.owner |
स्ट्रिंग | उदाहरण के लिए, DEVELOPER , VENDOR ,
RUNTIME , PLATFORM या SYSTEM |
exceptions.frames.blamed |
बूलियन | Crashlytics ने यह तय किया है कि क्रैश या गड़बड़ी की वजह यह फ़्रेम है या नहीं |
error |
बार-बार रिकॉर्ड करना | (सिर्फ़ Apple के ऐप्लिकेशन के लिए) गड़बड़ियां, जो गंभीर नहीं हैं |
error.queue_name |
स्ट्रिंग | वह सूची जिस पर थ्रेड चल रहा था |
error.code |
INT64 | ऐप्लिकेशन के कस्टम लॉग किए गए NSError से जुड़ा गड़बड़ी का कोड |
error.title |
स्ट्रिंग | थ्रेड का टाइटल |
error.subtitle |
स्ट्रिंग | थ्रेड का सबटाइटल |
error.blamed |
बूलियन | क्या Crashlytics ने यह तय किया है कि गड़बड़ी का मकसद यह फ़्रेम है |
error.frames |
बार-बार रिकॉर्ड करना | स्टैक ट्रेस के फ़्रेम |
error.frames.line |
INT64 | फ़्रेम की फ़ाइल की लाइन नंबर |
error.frames.file |
स्ट्रिंग | फ़्रेम फ़ाइल का नाम |
error.frames.symbol |
स्ट्रिंग | हाइड्रेट किया गया सिंबल या अगर हाइड्रेट नहीं किया जा सकता, तो रॉ सिंबल |
error.frames.offset |
INT64 | उस बाइनरी इमेज में बाइट ऑफ़सेट जो कोड है |
error.frames.address |
INT64 | बाइनरी इमेज में पता, जिसमें कोड शामिल है |
error.frames.library |
स्ट्रिंग | उस लाइब्रेरी का डिसप्ले नेम जिसमें फ़्रेम शामिल है |
error.frames.owner |
स्ट्रिंग | उदाहरण के लिए, DEVELOPER , VENDOR ,
RUNTIME , PLATFORM या SYSTEM |
error.frames.blamed |
बूलियन | क्या Crashlytics ने यह तय किया है कि गड़बड़ी का मकसद यह फ़्रेम है |
threads |
बार-बार रिकॉर्ड करना | इवेंट के दौरान मौजूद थ्रेड |
threads.crashed |
बूलियन | थ्रेड क्रैश हुआ है या नहीं |
threads.thread_name |
स्ट्रिंग | थ्रेड का नाम |
threads.queue_name |
स्ट्रिंग | (सिर्फ़ Apple के ऐप्लिकेशन के लिए) वह सूची जिस पर थ्रेड चल रहा था |
threads.signal_name |
स्ट्रिंग | उस सिग्नल का नाम जिसकी वजह से ऐप्लिकेशन क्रैश हुआ. यह नाम, सिर्फ़ क्रैश होने पर मौजूद होता है नेटिव थ्रेड |
threads.signal_code |
स्ट्रिंग | ऐप्लिकेशन के क्रैश होने की वजह बताने वाले सिग्नल का कोड; केवल क्रैश होने पर मौजूद नेटिव थ्रेड |
threads.crash_address |
INT64 | उस सिग्नल का पता जिसकी वजह से ऐप्लिकेशन क्रैश हुआ; सिर्फ़ क्रैश हुई नेटिव थ्रेड पर मौजूद होता है |
threads.code |
INT64 | (सिर्फ़ Apple के ऐप्लिकेशन के लिए) ऐप्लिकेशन के कस्टम लॉग किए गए NSError का गड़बड़ी कोड |
threads.title |
स्ट्रिंग | थ्रेड का टाइटल |
threads.subtitle |
स्ट्रिंग | थ्रेड का सबटाइटल |
threads.blamed |
बूलियन | Crashlytics ने यह तय किया है कि क्रैश या गड़बड़ी की वजह यह फ़्रेम है या नहीं |
threads.frames |
दोहराया गया रिकॉर्ड | थ्रेड के फ़्रेम |
threads.frames.line |
INT64 | फ़्रेम की फ़ाइल की लाइन नंबर |
threads.frames.file |
स्ट्रिंग | फ़्रेम फ़ाइल का नाम |
threads.frames.symbol |
स्ट्रिंग | हाइड्रेट किया गया सिंबल या अगर हाइड्रेट नहीं किया जा सकता, तो रॉ सिंबल |
threads.frames.offset |
INT64 | उस बाइनरी इमेज में बाइट ऑफ़सेट जो कोड है |
threads.frames.address |
INT64 | बाइनरी इमेज में पता, जिसमें कोड शामिल है |
threads.frames.library |
स्ट्रिंग | उस लाइब्रेरी का डिसप्ले नेम जिसमें फ़्रेम शामिल है |
threads.frames.owner |
स्ट्रिंग | उदाहरण के लिए, DEVELOPER , VENDOR ,
RUNTIME , PLATFORM या SYSTEM |
threads.frames.blamed |
बूलियन | क्या Crashlytics ने यह तय किया है कि गड़बड़ी का मकसद यह फ़्रेम है |
unity_metadata.unity_version |
स्ट्रिंग | इस डिवाइस पर Unity का वर्शन |
unity_metadata.debug_build |
बूलियन | अगर यह एक डीबग बिल्ड है |
unity_metadata.processor_type |
स्ट्रिंग | प्रोसेसर का टाइप |
unity_metadata.processor_count |
INT64 | प्रोसेसर (कोर) की संख्या |
unity_metadata.processor_frequency_mhz |
INT64 | प्रोसेसर की फ़्रीक्वेंसी, मेगाहर्ट्ज़ में |
unity_metadata.system_memory_size_mb |
INT64 | सिस्टम की मेमोरी का साइज़, एमबी में |
unity_metadata.graphics_memory_size_mb |
INT64 | एमबी में ग्राफ़िक्स मेमोरी |
unity_metadata.graphics_device_id |
INT64 | ग्राफ़िक डिवाइस का आइडेंटिफ़ायर |
unity_metadata.graphics_device_vendor_id |
INT64 | ग्राफ़िक प्रोसेसर के वेंडर का आइडेंटिफ़ायर |
unity_metadata.graphics_device_name |
स्ट्रिंग | ग्राफ़िक डिवाइस का नाम |
unity_metadata.graphics_device_vendor |
स्ट्रिंग | ग्राफ़िक डिवाइस का वेंडर |
unity_metadata.graphics_device_version |
स्ट्रिंग | ग्राफ़िक डिवाइस का वर्शन |
unity_metadata.graphics_device_type |
स्ट्रिंग | ग्राफ़िक्स डिवाइस का टाइप |
unity_metadata.graphics_shader_level |
INT64 | ग्राफ़िक्स का शेडर लेवल |
unity_metadata.graphics_render_target_count |
INT64 | ग्राफ़िकल रेंडरिंग टारगेट की संख्या |
unity_metadata.graphics_copy_texture_support |
स्ट्रिंग | Unity API में बताए गए तरीके से, ग्राफ़िक्स टेक्सचर कॉपी करने की सुविधा |
unity_metadata.graphics_max_texture_size |
INT64 | टेक्सचर को रेंडर करने के लिए तय किया गया ज़्यादा से ज़्यादा साइज़ |
unity_metadata.screen_size_px |
स्ट्रिंग | स्क्रीन का साइज़, पिक्सल में. इसे चौड़ाई x ऊंचाई के तौर पर फ़ॉर्मैट किया जाता है |
unity_metadata.screen_resolution_dpi |
स्ट्रिंग | फ़्लोटिंग पॉइंट नंबर के तौर पर स्क्रीन का डीपीआई |
unity_metadata.screen_refresh_rate_hz |
INT64 | स्क्रीन की रीफ़्रेश दर हर्ट्ज़ में |
Data Studio की मदद से, एक्सपोर्ट किए गए Crashlytics डेटा को विज़ुअलाइज़ करना
Google Data Studio आपकी BigQuery में मौजूद Crashlytics डेटासेट को ऐसी रिपोर्ट में डालें जिन्हें आसानी से किया जा सकता है और पूरी तरह से कस्टमाइज़ करने योग्य होता है.
Data Studio का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, Data Studio की शुरुआती गाइड, Data Studio में आपका स्वागत है देखें.
Crashlytics रिपोर्ट टेंप्लेट का इस्तेमाल करना
Data Studio में Crashlytics के लिए एक सैंपल रिपोर्ट होती है. इसमें, एक्सपोर्ट किए गए CrashlyticsBigQuery स्कीमा के डाइमेंशन और मेट्रिक का पूरा सेट शामिल होता है. अगर आपने Crashlytics BigQuery पर स्ट्रीमिंग एक्सपोर्ट की सुविधा चालू की है, तो उस डेटा को Data Studio टेंप्लेट के रीयल टाइम रुझान पेज पर देखा जा सकता है. अपने ऐप्लिकेशन के क्रैश के रॉ डेटा के आधार पर, नई रिपोर्ट और विज़ुअलाइज़ेशन तुरंत बनाने के लिए, सैंपल को टेंप्लेट के तौर पर इस्तेमाल किया जा सकता है:
सबसे ऊपर दाएं कोने में मौजूद, टेंप्लेट का इस्तेमाल करें पर क्लिक करें.
नया डेटा सोर्स ड्रॉप-डाउन में, नया डेटा सोर्स बनाएं चुनें.
BigQuery कार्ड पर, चुनें पर क्लिक करें.
वह टेबल चुनें जिसमें एक्सपोर्ट किया गया Crashlytics का डेटा शामिल है. इसके लिए, मेरे प्रोजेक्ट > PROJECT_ID > firebase_crashlytics > TABLE_NAME.
आपकी बैच टेबल हमेशा उपलब्ध रहती है. अगर आपने Crashlytics स्ट्रीमिंग एक्सपोर्ट को BigQuery पर एक्सपोर्ट करने की सुविधा चालू है. इसके बाद, आप इसके बजाय, अपनी रीयलटाइम टेबल चुन सकते हैं.
कॉन्फ़िगरेशन में जाकर, Crashlytics टेंप्लेट लेवल को डिफ़ॉल्ट पर सेट करें.
नया डेटा सोर्स बनाने के लिए, कनेक्ट करें पर क्लिक करें.
Crashlytics टेंप्लेट पर वापस जाने के लिए, रिपोर्ट में जोड़ें पर क्लिक करें.
आखिर में, Crashlytics की कॉपी बनाने के लिए, रिपोर्ट बनाएं पर क्लिक करें Data Studio डैशबोर्ड टेंप्लेट.