Просматривайте, ищите и фильтруйте журналы веб-запросов вашего сайта с помощью Cloud Logging.

Вы можете подключить свой проект Firebase к Cloud Logging для просмотра, поиска и фильтрации журналов веб-запросов для каждого из ваших Hosting сайтов. Эти журналы берутся из CDN, автоматически предоставляемой Firebase, поэтому каждый запрос к вашему сайту и связанные с ним данные регистрируются.

Вот некоторые действия, которые можно выполнить с журналами Cloud Logging . Подробнее см. в каждом разделе этой страницы.

Если в вашем проекте несколько Hosting сайтов, вы можете выбрать, какой из них будет Hosting логи. Вы можете фильтровать и просматривать данные журналов по Hosting сайту и даже домену. Выбрав определённые Hosting сайты для экспорта журналов, вы также можете контролировать объём обрабатываемых данных для вашего проекта.

  1. Нажмите «Ссылка» на карточке интеграции Cloud Logging в консоли Firebase .

    Чтобы подключить или отключить Cloud Logging , вам потребуются разрешения, включенные в любую из следующих ролей: владелец или редактор проекта или администратор разработки Firebase .

  2. Следуйте инструкциям на экране, чтобы выбрать, какие из ваших Hosting сайтов должны экспортировать журналы в Cloud Logging .

    Если у вас уже есть один или несколько активных сайтов Hosting , в процессе связывания будет отображаться предполагаемый уровень использования данных для журналов каждого из ваших сайтов Hosting . Это значение рассчитывается за последние 30 дней.

После подключения к Cloud Logging журналы любых новых запросов к сайтам Hosting обычно появляются в течение 30 минут с момента создания запроса.

Вы также можете отключить Firebase Hosting от Cloud Logging , что остановит экспорт журналов веб-запросов в Cloud Logging .

Контролируйте использование данных с помощью журналов

После подключения к Cloud Logging вы сможете просматривать уровень использования данных для журналов с ваших Hosting сайтов:

Лучше понять ваш сайт

Интерфейс Logs Viewer в консоли Google Cloud предлагает инструменты для просмотра ваших журналов и данных с помощью запросов, встроенных фильтров и панелей данных. Подробнее о фильтрации журналов с помощью запросов читайте в следующем разделе.

  • Откуда на ваш сайт поступает трафик (в детальном плане)?
    Вы можете просмотреть информацию о каждом запросе, включая исходный IP-адрес, реферер, город и статус.

  • Когда пользователи посещают ваш сайт?
    Вы можете использовать панель «Гистограмма», чтобы увидеть распределение по определённым временным диапазонам. Это даст вам представление о нормальных пиках и спадах использования вашего приложения, а также позволит обнаружить любые неожиданные всплески трафика.

  • Каково распределение статусов для запросов конечных пользователей?
    Вы можете просматривать статус каждого запроса и даже диагностировать запросы с ошибками. Журналы можно фильтровать по категориям Critical , Error или Warning .

  • Сколько времени требуется вашему сайту, чтобы ответить на запрос?
    Вы можете просмотреть задержку вашего сайта для каждого запроса, используя значение latency зафиксированное в каждом журнале.

  • Использует ли ваш сайт кэширование контента?
    Каждый журнал содержит поле cacheHit , которое позволяет узнать, был ли ресурс вашего сайта быстро загружен из кэша CDN Hosting или же ему пришлось пройти весь путь до бэкэнда Hosting . Это поможет вам повысить производительность вашего сайта, максимально используя возможности глобальной CDN Firebase. Например, эти данные можно использовать для точной настройки кэширования статических ресурсов и динамического контента .

  • Каково распределение трафика по вашим доменам?
    Если у вас несколько доменов или Hosting площадок, вы можете фильтровать журналы по домену или сайту. Это позволит вам увидеть распределение трафика. Фильтрация по домену позволяет отслеживать, какой домен посещается чаще всего.

Фильтруйте свои журналы с помощью запросов

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

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

  • Ресурс ( resource.type ) — firebase_domain (домен сайта Firebase Hosting )
  • Имя журнала ( logName ) — webrequests ( Firebase Hosting )

Каждая запись журнала имеет предопределённую структуру и поля для запроса (см. LogEntry ). Для Hosting некоторые поля являются стандартными для HTTP-запроса, но есть и другие значения полей, которые формируются в результате обработки, выполняемой Hosting для каждого запроса.

Поле Описание
Firebase Hosting хранит следующие поля в объекте httpRequest записи журнала.
Эти поля определены в спецификации HTTP.
cacheHit Был ли ресурс ответа в кэше Hosting -CDN?
latency Длительность запроса в секундах с постфиксом s (например, 1.256s )
protocol Протокол, используемый для запроса (например, HTTP/1.1 , HTTP/2 , websocket )
referer Адрес предыдущей веб-страницы, с которой была сделана ссылка на запрашиваемую в данный момент страницу (если имеется)
remoteIp Исходный клиентский IP-адрес для запроса
requestMethod Метод запроса ( GET , POST , PUT и т. д.)
requestSize Размер запроса в байтах
requestUrl Полный URL запроса (например,
https://foo.web.app/bar или https://custom.domain.com?query=param )
responseSize Размер HTTP-ответа в байтах
serverIp не заселен
status Статус ответа HTTP (например, 200 или 404 )
userAgent Заголовок user-Agent запроса
Firebase Hosting хранит дополнительные поля в объекте jsonPayload записи журнала.
acceptEncoding (из HTTP-запроса) Какое кодирование контента, обычно алгоритм сжатия, поддерживает клиент (например, gzip или compress )
billable Был ли выставлен счет за ваш проект по запросу
customDomain Был ли запрос сделан в отношении пользовательского домена
hostname Имя хоста, к которому был сделан запрос
remoteIpCountry Страна происхождения запроса
remoteIpCity Город отправителя запроса

Используйте метрики на основе журналов

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

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

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

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

Firebase Hosting также генерирует следующие метрики, специфичные для Hosting . Эти метрики относятся не к отдельной записи журнала, а к конкретному сайту Hosting в целом.

  • log_bytes : общее количество байтов использования данных для каждого сайта

  • response_count : Общее количество ответов, написанных для сайта

    Эта метрика включает поле статуса HTTP, поэтому вы можете построить график ответов HTTP по статусу (в качестве примера).

Экспорт журналов в другие инструменты Google Cloud

Вы также можете экспортировать журналы своего сайта в другие инструменты Google Cloud , например Cloud Monitoring или BigQuery:

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

  • Используя BigQuery , вы можете выполнить любое из следующих действий:

    • Используйте Data Studio для создания панелей управления данными вашего Hosting .
    • Выполняйте запросы, чтобы получить более подробную информацию о ваших запросах (средний размер ответа, количество попаданий в кэш и промахов и т. д.).
    • Узнайте, какие URL-адреса на самом деле запрашивают ваши пользователи.
    • Объедините данные Hosting с другими данными Firebase, которые вы экспортировали в BigQuery, и выполняйте запросы по-новому.