Экспорт данных Firebase Crashlytics в BigQuery

Вы можете экспортировать данные Firebase Crashlytics в BigQuery для дальнейшего анализа. BigQuery позволяет анализировать данные с помощью BigQuery SQL, экспортировать их другому поставщику облачных услуг и использовать их для визуализации и пользовательских панелей мониторинга с помощью Google Data Studio.

Включить экспорт в BigQuery

  1. В консоли Firebase перейдите на страницу «Интеграции» .

  2. На карточке BigQuery нажмите Ссылка .

  3. Следуйте инструкциям на экране, чтобы включить экспорт в BigQuery .

    Если вам нужен доступ к данным Crashlytics в BigQuery практически в режиме реального времени, рассмотрите возможность перехода на потоковый экспорт .

Что произойдет, если включить экспорт?

  • Вы выбираете местоположение набора данных. После создания набора данных местоположение изменить нельзя, но вы можете скопировать набор данных в другое местоположение или вручную переместить (создать заново) набор данных в другом месте. Чтобы узнать больше, см. Изменение местоположения для существующих экспортов .

    Это расположение применимо только к данным, экспортированным в BigQuery , и не влияет на расположение данных, хранящихся для использования на панели управления Crashlytics консоли Firebase или в Android Studio.

  • По умолчанию все приложения в вашем проекте связаны с BigQuery , и любые приложения, которые вы позже добавляете в проект, автоматически связаны с BigQuery . Вы можете управлять тем, какие приложения отправляют данные .

  • Firebase настраивает ежедневную синхронизацию ваших данных с BigQuery .

    • После привязки проекта вам обычно приходится ждать синхронизации следующего дня, чтобы экспортировать первый набор данных в BigQuery .

    • Ежедневная синхронизация происходит один раз в день, независимо от запланированного экспорта, который вы могли настроить в BigQuery . Обратите внимание, что время и продолжительность задания синхронизации могут меняться, поэтому мы не рекомендуем планировать последующие операции или задания на основе определенного времени экспорта.

  • Firebase экспортирует копию ваших существующих данных в BigQuery . Первоначальное распространение данных для экспорта может занять до 48 часов.

    • Для каждого связанного приложения этот экспорт включает пакетную таблицу, содержащую данные ежедневной синхронизации.

    • Вы можете вручную запланировать заполнение данных для пакетной таблицы за последние 30 дней или на самую последнюю дату, когда вы включили экспорт в BigQuery (в зависимости от того, что наступило позже).

    Обратите внимание: если вы включили экспорт данных Crashlytics до середины октября 2024 года, вы также можете выполнить обратную засыпку за 30 дней до дня включения экспорта.

  • Если вы включите потоковый экспорт Crashlytics в BigQuery , все связанные приложения также будут иметь таблицу в реальном времени, содержащую постоянно обновляемые данные.

Чтобы отключить экспорт в BigQuery , отключите свой проект в консоли Firebase .

Какие данные экспортируются в BigQuery ?

Данные Firebase Crashlytics экспортируются в набор данных BigQuery с именем firebase_crashlytics . По умолчанию отдельные таблицы будут созданы внутри набора данных Crashlytics для каждого приложения в вашем проекте. Firebase именует таблицы на основе идентификатора приложения, при этом точки преобразуются в подчеркивания, а в конце добавляется имя платформы.

Например, данные для приложения Android с именем пакета com.google.test будут находиться в таблице с именем com_google_test_ANDROID . Эта пакетная таблица обновляется один раз в день. Если вы включите потоковый экспорт Crashlytics в BigQuery , то данные Crashlytics также будут передаваться в реальном времени в таблицу с именем com_google_test_ANDROID_REALTIME .

Каждая строка в таблице представляет собой событие, произошедшее в приложении, включая сбои, нефатальные ошибки и ошибки ANR.

Экспорт потоковой передачи Crashlytics в BigQuery

Вы можете транслировать данные Crashlytics в режиме реального времени с помощью потоковой передачи BigQuery . Вы можете использовать его для любых целей, требующих живых данных, например, для представления информации на живой панели мониторинга, просмотра развертывания в реальном времени или мониторинга проблем приложений, которые запускают оповещения и настраиваемые рабочие процессы.

Когда вы включаете экспорт потоковой передачи Crashlytics в BigQuery , в дополнение к пакетной таблице у вас также будет таблица в реальном времени. Вот различия, которые вы должны знать между таблицами:

Таблица партий Таблица в реальном времени
  • Данные экспортируются один раз в день.
  • События надежно сохраняются перед пакетной записью в BigQuery .
  • Данные можно заполнить за период до 30 дней*.
  • Данные экспортируются в режиме реального времени.
  • Обратная засыпка невозможна.

Пакетная таблица идеально подходит для долгосрочного анализа и выявления тенденций с течением времени, поскольку мы надежно сохраняем события перед их записью, и их можно заполнять в таблице до 30 дней*. Когда мы записываем данные в вашу таблицу в реальном времени, мы немедленно записываем их в BigQuery , поэтому она идеально подходит для живых панелей мониторинга и пользовательских оповещений. Эти две таблицы можно объединить с помощью запроса на сшивание, чтобы получить преимущества обеих.

По умолчанию таблица реального времени имеет срок действия раздела 30 дней. Чтобы узнать, как это изменить, см. раздел Установка срока действия раздела в документации BigQuery .

* Подробную информацию о поддержке обратного заполнения см. в разделе Обновление до новой инфраструктуры экспорта .

Включить потоковый экспорт Crashlytics в BigQuery

  1. В консоли Firebase перейдите на страницу «Интеграции» .

  2. На карточке BigQuery нажмите «Управление» .

  3. Установите флажок Включить потоковую передачу .

Это действие включает потоковую передачу для всех ваших связанных приложений.

Что можно сделать с экспортированными данными?

Экспорт в BigQuery содержит необработанные данные о сбоях, включая тип устройства, операционную систему, исключения (приложения Android) или ошибки (приложения Apple), а также журналы Crashlytics и другие данные.

Подробности экспорта данных Crashlytics и схему их таблиц см. далее на этой странице.

Используйте шаблон Data Studio

Чтобы включить данные в реальном времени в шаблоне Data Studio, следуйте инструкциям в разделе Визуализация экспортированных данных Crashlytics с помощью Data Studio .

Создать представления

Вы можете преобразовывать запросы в представления с помощью BigQuery UI. Подробные инструкции см. в разделе Создание представлений в документации BigQuery .

Выполнять запросы

В следующих примерах показаны запросы, которые вы можете запустить на своих данных Crashlytics для создания отчетов, которые объединяют данные о событиях сбоев в более понятные сводки. Поскольку эти типы отчетов недоступны на панели управления Crashlytics консоли Firebase , они могут дополнить ваш анализ и понимание данных о сбоях.

Пример 1: Сбои по дням

После работы над исправлением как можно большего количества ошибок вы думаете, что ваша команда наконец-то готова запустить ваше новое приложение для обмена фотографиями. Прежде чем вы это сделаете, вы хотите проверить количество сбоев в день за последний месяц, чтобы убедиться, что ваш bug-bash сделал приложение более стабильным с течением времени.

Вот пример запроса для приложения Android. Для приложения iOS используйте его идентификатор пакета и IOS (вместо имени пакета и 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;

Пример 2: Найдите наиболее распространенные сбои

Чтобы правильно расставить приоритеты в планах производства, вам нужно найти 10 самых распространенных сбоев в вашем приложении. Вы создаете запрос, который предоставляет соответствующие точки данных.

Вот пример запроса для приложения Android. Для приложения iOS используйте его идентификатор пакета и IOS (вместо имени пакета и 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;

Пример 3: 10 устройств с наибольшими отказами

Осень — сезон новых телефонов! Ваша компания знает, что это также означает сезон новых проблем, связанных с устройствами, особенно для Android. Чтобы опередить надвигающиеся проблемы совместимости, вы составляете запрос, который определяет 10 устройств, на которых за последнюю неделю (168 часов) произошло больше всего сбоев.

Вот пример запроса для приложения Android. Для приложения iOS используйте его идентификатор пакета и IOS (вместо имени пакета и 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;

Пример 4: Фильтрация по пользовательскому ключу

Вы — разработчик игр, который хочет знать, на каком уровне вашей игры происходит больше всего сбоев.

Чтобы отслеживать эту статистику, вы устанавливаете пользовательский ключ Crashlytics под названием current_level и обновляете его каждый раз, когда пользователь достигает нового уровня.

Быстрый

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

Objective-C

CrashlyticsKit setIntValue:3 forKey:@"current_level";

Ява

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

Пример 5: Извлечение идентификатора пользователя

У вас есть приложение 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: Количество пользователей, пострадавших от сбоя, с разбивкой по странам

Ваша команда обнаружила критическую ошибку во время развертывания нового релиза. Вы смогли использовать запрос из примера «Найти наиболее распространенные сбои» выше, чтобы определить конкретный идентификатор проблемы сбоя. Теперь ваша команда хотела бы узнать, распространился ли этот сбой на пользователей в разных странах мира.

Чтобы написать этот запрос, вашей команде необходимо будет сделать следующее:

  1. Включить экспорт данных Google Analytics в BigQuery . См. Экспорт данных проекта в BigQuery .

  2. Обновите свое приложение, чтобы передавать идентификатор пользователя как в Google Analytics SDK, так и в Crashlytics SDK.

    Быстрый

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

    Objective-C

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

    Ява

    Crashlytics.setUserIdentifier("123456789");
    mFirebaseAnalytics.setUserId("123456789");
    
  3. Напишите запрос, который использует поле идентификатора пользователя для объединения событий в наборе данных Google Analytics со сбоями в наборе данных Crashlytics .

    Вот пример запроса для приложения Android. Для приложения iOS используйте его идентификатор пакета и IOS (вместо имени пакета и 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

Пример 8: 5 главных проблем на сегодняшний день

Вот пример запроса для приложения 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;

Пример 9: 5 главных проблем с ДАТЫ, включая сегодняшний день

Вы также можете объединить таблицы batch и realtime с помощью запроса на сшивание, чтобы добавить информацию realtime к надежным данным batch. Поскольку event_id является первичным ключом, вы можете использовать DISTINCT event_id для дедупликации любых общих событий из двух таблиц.

Вот пример запроса для приложения Android. Для приложения iOS используйте его идентификатор пакета и IOS (вместо имени пакета и 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;

Понять схему Crashlytics в BigQuery

При настройке экспорта данных Crashlytics в BigQuery Firebase экспортирует последние события (сбои, нефатальные ошибки и ANR), включая события за два дня до ссылки, с возможностью обратного заполнения до 30 дней.

С этого момента и до тех пор, пока вы не деактивируете экспорт, Firebase экспортирует события Crashlytics ежедневно. Может потребоваться несколько минут, чтобы данные стали доступны в BigQuery после каждого экспорта.

Наборы данных

Crashlytics создает новый набор данных в BigQuery для данных Crashlytics . Набор данных охватывает весь ваш проект, даже если в нем есть несколько приложений.

Таблицы

Crashlytics создает таблицу в наборе данных для каждого приложения в вашем проекте, если вы не отказались от экспорта данных для этого приложения. Firebase называет таблицы на основе идентификатора приложения, с точками, преобразованными в подчеркивания, и именем платформы, добавленным в конец.

Например, данные для приложения Android с именем пакета com.google.test будут находиться в таблице с именем com_google_test_ANDROID , а данные в реальном времени (если они включены) будут находиться в таблице с именем com_google_test_ANDROID_REALTIME

Таблицы содержат стандартный набор данных Crashlytics в дополнение к любым пользовательским ключам Crashlytics , определенным вами в вашем приложении.

Ряды

Каждая строка в таблице представляет собой ошибку, обнаруженную приложением.

Колонны

Столбцы в таблице идентичны для сбоев, нефатальных ошибок и ANR. Если включен потоковый экспорт 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 БУЛЕВ True, если 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 НИТЬ DPI экрана как число с плавающей точкой
unity_metadata.screen_refresh_rate_hz INT64 Частота обновления экрана в Гц



Визуализируйте экспортированные данные Crashlytics с помощью Data Studio

Google Data Studio превращает ваши наборы данных Crashlytics в BigQuery в отчеты, которые легче читать, которыми легче делиться и которые полностью настраиваются.

Чтобы узнать больше об использовании Data Studio, ознакомьтесь с кратким руководством по Data Studio « Добро пожаловать в Data Studio» .

Используйте шаблон отчета Crashlytics

Data Studio имеет пример отчета для Crashlytics , который включает полный набор измерений и метрик из экспортированной схемы Crashlytics BigQuery . Если вы включили потоковый экспорт Crashlytics в BigQuery , то вы можете просматривать эти данные на странице Realtime trends шаблона Data Studio. Вы можете использовать пример в качестве шаблона для быстрого создания новых отчетов и визуализаций на основе необработанных данных о сбоях вашего собственного приложения:

  1. Откройте шаблон панели мониторинга Crashlytics Data Studio .

  2. Нажмите «Использовать шаблон» в правом верхнем углу.

  3. В раскрывающемся списке Новый источник данных выберите Создать новый источник данных .

  4. Нажмите «Выбрать» на карточке BigQuery .

  5. Выберите таблицу, содержащую экспортированные данные Crashlytics , выбрав Мои проекты > PROJECT_ID > firebase_crashlytics > TABLE_NAME .

    Ваша пакетная таблица всегда доступна для выбора. Если включен потоковый экспорт Crashlytics в BigQuery , то вместо этого вы можете выбрать свою таблицу в реальном времени.

  6. В разделе «Конфигурация» установите уровень шаблона Crashlytics на «По умолчанию» .

  7. Нажмите «Подключиться» , чтобы создать новый источник данных.

  8. Нажмите «Добавить в отчет» , чтобы вернуться к шаблону Crashlytics .

  9. Наконец, нажмите «Создать отчет» , чтобы создать копию шаблона панели мониторинга Crashlytics Data Studio.



Переход на новую экспортную инфраструктуру

В середине октября 2024 года Crashlytics запустила новую инфраструктуру для пакетного экспорта данных Crashlytics в BigQuery .

Вы можете перейти на новую инфраструктуру, но убедитесь, что ваши пакетные таблицы BigQuery соответствуют предварительным условиям для обновления.

Определите, находитесь ли вы в новой инфраструктуре

Если вы включили пакетный экспорт в середине октября 2024 года или позже, ваш проект Firebase автоматически использует новую инфраструктуру экспорта.

Вы можете проверить, какую инфраструктуру использует ваш проект: перейдите в консоль Google Cloud , и если ваша «конфигурация передачи данных» помечена как Firebase Crashlytics with Multi-Region Support , то ваш проект использует новую инфраструктуру экспорта.

Важные различия между старой и новой экспортной инфраструктурой

  • Новая инфраструктура поддерживает расположения наборов данных Crashlytics за пределами США.

    • Экспорт был включен до середины октября 2024 года и обновлен до новой инфраструктуры экспорта. Теперь вы можете по желанию изменить место для экспорта данных .

    • Экспорт включен в середине октября 2024 года или позже. Во время настройки вам было предложено выбрать место для экспорта данных.

  • Новая инфраструктура не поддерживает обратную загрузку данных, которые были до включения экспорта.

    • Старая инфраструктура поддерживала заполнение данных за 30 дней до даты включения экспорта.

    • Новая инфраструктура поддерживает обратные заполнения за последние 30 дней или за последнюю дату, когда вы включили экспорт в BigQuery (в зависимости от того, что наступило позже).

  • Новая инфраструктура именует пакетные таблицы BigQuery , используя идентификаторы, заданные для ваших приложений Firebase в вашем проекте Firebase.

    • Старая инфраструктура записывала данные в пакетные таблицы с именами, основанными на идентификаторах пакетов или именах пакетов в конфигурации Firebase в кодовой базе вашего приложения .

    • Новая инфраструктура записывает данные в пакетные таблицы с именами на основе идентификаторов пакетов или имен пакетов , заданных для зарегистрированных приложений Firebase в вашем проекте Firebase .

Шаг 1 : Предварительные условия для обновления

  1. Проверьте, что ваши существующие таблицы пакетов BigQuery используют соответствующие идентификаторы для идентификаторов пакетов или имен пакетов , установленных для ваших зарегистрированных приложений Firebase в вашем проекте Firebase . Если они не совпадают, то вы можете столкнуться с перебоями в экспортированных пакетных данных. Большинство проектов будут в надлежащем и совместимом состоянии, но важно проверить это перед обновлением.

    • Все приложения Firebase, зарегистрированные в вашем проекте Firebase, можно найти в консоли Firebase : перейдите в настройки проекта , затем прокрутите до карточки Ваши приложения , чтобы увидеть все ваши приложения Firebase и их информацию.

    • Все ваши пакетные таблицы BigQuery можно найти на странице BigQuery в консоли Google Cloud .

    Например, вот идеальные штаты, в которых у вас не возникнет проблем с обновлением:

    • У вас есть пакетная таблица с именем com_yourcompany_yourproject_IOS и приложение Firebase iOS+ с идентификатором пакета com.yourcompany.yourproject , зарегистрированным в вашем проекте Firebase.

    • У вас есть пакетная таблица с именем com_yourcompany_yourproject_ANDROID и приложение Firebase Android с именем пакета com.yourcompany.yourproject , зарегистрированное в вашем проекте Firebase.

  2. Если имена ваших пакетных таблиц не соответствуют идентификаторам, установленным для ваших зарегистрированных приложений Firebase, то перед выполнением обновления вручную следуйте инструкциям, приведенным далее на этой странице, чтобы избежать сбоев в пакетном экспорте.

Шаг 2 : Выполните обновление до новой инфраструктуры вручную

Если вы включили пакетный экспорт до середины октября 2024 года, то вы можете вручную перейти на новую инфраструктуру, просто отключив и снова включив экспорт данных Crashlytics в консоли Firebase .

Вот подробные шаги:

  1. В консоли Firebase перейдите на страницу «Интеграции» .

  2. На карточке BigQuery нажмите «Управление» .

  3. Выключите ползунок Crashlytics , чтобы отключить экспорт. При появлении запроса подтвердите, что хотите остановить экспорт данных.

  4. Немедленно снова включите ползунок Crashlytics , чтобы снова включить экспорт. При появлении запроса подтвердите, что вы хотите экспортировать данные.

    Экспорт данных Crashlytics в BigQuery теперь использует новую инфраструктуру экспорта.

Имя существующей пакетной таблицы не соответствует идентификатору вашего приложения Firebase