Использование BigQuery для анализа журналов

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

Два вопроса:

1) BigQuery особенно хорош или особенно плох в этом случае использования? 2) Как настроить возобновляемые журналы? Т.е. Я хочу сохранить только последние N журналов или последние X ГБ данных журнала. Я вижу, что удаление не поддерживается.


person aloo    schedule 01.05.2012    source источник


Ответы (3)


  1. Просто чтобы вы знали, есть отличная демонстрация перемещения данных журнала App Engine в BigQuery через App Engine MapReduce под названием log2bq (http://code.google.com/p/log2bq/).

  2. Re: «вариант использования» - Stack Overflow - не лучшее место для суждений о лучшем или худшем, но BigQuery используется внутри Google для анализа действительно очень больших данных журнала.

  3. Я не вижу преимущества хранить полный текст журнала в одном столбце. Если вы решите, что вам необходимо настроить возобновляемые «журналы», вы можете принимать ежедневные дампы журналов, создавая отдельные таблицы BigQuery, возможно, по одной в день, а затем удалять таблицы, когда они устаревают. См. https://developers.google.com/bigquery/docs/reference/v2/tables/delete для получения дополнительной информации о методе Table.delete.

person Michael Manoochehri    schedule 01.05.2012
comment
3. Преимущество хранения полного текста в одном столбце и извлечения из него некоторой полезной информации и сохранения ее в других столбцах состоит в том, что при необходимости мы можем видеть исходную, предварительно обработанную запись журнала. Чтобы настроить возобновляемые журналы, если мы будем использовать одну таблицу в день - как мы будем делать запросы в течение нескольких дней? - person aloo; 02.05.2012
comment
Отличный вопрос, если схемы таблиц одинаковы, вы можете использовать такой запрос: SELECT f1, f2 FROM table_day1, table_day2, table_day3; - person Michael Manoochehri; 02.05.2012
comment
Хм. Какие-нибудь ограничения на это? Какой номер Mac в таблицах? Если мне нужны возобновляемые журналы на 60 дней, тогда мне нужно иметь 60 пунктов таблицы, и каждый день они будут меняться? Думаю, я могу написать сценарий при выполнении запросов. - person aloo; 02.05.2012
comment
Вы могли вращаться всего между двумя столами. Выберите подмножество (за последние 48 часов) из одной таблицы и вставьте его в другую в начале дня. - person Larry Silverman; 04.05.2012
comment
@aloo Нет ограничений на количество таблиц, которые вы выражаете в операторе SQL, но максимальная длина запроса в настоящее время составляет 10 КБ. - person Michael Manoochehri; 30.05.2012

После реализации этого мы решили открыть исходный код созданного для этого фреймворка. Вы можете увидеть подробную информацию о структуре здесь: http://blog.streak.com/2012/07/export-your-google-app-engine-logs-to.html

person aloo    schedule 06.07.2012
comment
Ссылка на сообщение в блоге больше не работает. К сожалению, страница, которую вы искали в этом блоге, не существует. - person Jesse Webb; 06.02.2016

Если вы хотите, чтобы журналы проекта Google App Engine (Google Cloud) находились в BigQuery, Google добавил эту встроенную функцию в новую систему Cloud Logging. Это бета-функция, известная как «Экспорт журналов» https://cloud.google.com/logging/docs/install/logs_export

Они резюмируют это как:

Экспортируйте журналы Google Compute Engine и журналы Google App Engine в корзину Google Cloud Storage, набор данных Google BigQuery, тему Google Cloud Pub / Sub или любую их комбинацию.

Мы используем функцию «Stream App Engine Logs to BigQuery» в наших проектах Python GAE. Это отправляет журналы нашего приложения непосредственно в BigQuery по мере их возникновения, чтобы обеспечить записи журналов в наборе данных BigQuery в режиме, близком к реальному времени.

Также есть страница, описывающая, как использовать экспортированные журналы. https://cloud.google.com/logging/docs/export/using_exported_logs

Если мы хотим запросить журналы, экспортированные в BigQuery за несколько дней (например, за последнюю неделю), вы можете использовать SQL-запрос с предложением FROM следующим образом:

FROM
    (TABLE_DATE_RANGE(my_bq_dataset.myapplog_,
      DATE_ADD(CURRENT_TIMESTAMP(), -7, 'DAY'), CURRENT_TIMESTAMP()))
person Jesse Webb    schedule 06.02.2016