Как фильтровать журналы и создавать показатели на основе журналов

После того как данные Crashlytics и (необязательно) сеансов Firebase будут экспортированы в Cloud Logging, вы сможете фильтровать журналы и создавать показатели на основе данных журналов. Оба эти инструмента полезны для просмотра, использования и анализа конкретных данных.

Если вы ещё не сделали этого, ознакомьтесь с разделом Что можно делать с данными?, где приведены подробный список и примеры работы с данными, хранящимися в Cloud Logging.

Как фильтровать журналы с помощью запросов

Фильтрация журналов позволяет просматривать определенные данные, а также снижать расходы на хранение данных и дальнейший анализ. Для фильтрации журналов используется LQL (язык запросов к журналам).

Чтобы узнать, как фильтровать журналы с помощью запросов, ознакомьтесь со статьями Примеры запросов с использованием Logs Explorer и Как создавать запросы к журналам. В таблице ниже описаны поля, доступные для таких запросов.

Примеры фильтров

Для Crashlytics вот несколько примеров начальных фильтров для запроса:

  • Чтобы найти все критические сбои для определенной версии приложения, выполните следующие действия:

    logName="projects/PROJECT_ID/logs/firebasecrashlytics.googleapis.com%2Fevents"
    jsonPayload.issue.errorType="FATAL"
    jsonPayload.version.displayVersion="3.2.0"
  • Чтобы выявить сбои, происходящие на определенной модели устройства (например, Pixel 6a), выполните следующие действия:

    logName="projects/PROJECT_ID/logs/firebasecrashlytics.googleapis.com%2Fevents"
    jsonPayload.device.model="Pixel 6a"
  • Поиск определенного значения OutOfMemoryError во всех критических ошибках:

    logName="projects/PROJECT_ID/logs/firebasecrashlytics.googleapis.com%2Fevents"
    jsonPayload.issue.errorType="FATAL"
    jsonPayload.issue.subtitle="java.lang.OutOfMemoryError"
  • Чтобы найти события, связанные с определенным идентификатором проблемы Crashlytics, выполните следующие действия:

    logName="projects/PROJECT_ID/logs/firebasecrashlytics.googleapis.com%2Fevents"
    jsonPayload.issue.id="ISSUE_ID"

Схема журнала

Каждая запись в журнале имеет предопределенную структуру и поля, по которым можно выполнять запросы (см. LogEntry).

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

Создание показателей на основе данных журналов

Вы можете просматривать и создавать показатели на основе данных журналов, а затем использовать их в Cloud Monitoring для создания диаграмм, специальных сводок и специальных оповещений.

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

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

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

Примеры показателей на основе данных журналов

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

  • Используя данные Crashlytics
    , создайте показатель firebase/crashlytics_events с ярлыком errorType и определите его следующим образом:

    logName="projects/PROJECT_ID/logs/firebasecrashlytics.googleapis.com%2Fevents"

  • Используйте данные о сеансах Firebase.
    Создайте показатель firebase/session_events с ярлыком eventType и определите его следующим образом:

    logName="projects/PROJECT_ID/logs/firebasecrashlytics.googleapis.com%2Fsession_events"

Что дальше?