Как работать с экспортированными журналами драйверов стека из Google Cloud Projects в BigQuery

Я создал «экспорт» со страницы Stackdriver Logging в моем проекте Google Cloud. Я настроил экспорт для перехода в набор данных BigQuery.

Когда я захожу в BigQuery, я вижу набор данных.

В моем наборе данных нет таблиц, так как экспорт Stackdriver создал для меня набор данных BigQuery.

Как мне увидеть экспортированные данные? Поскольку таблиц нет, я не могу выполнить «выбор * из X». Я мог бы создать таблицу, но я не знаю, какие столбцы нужно добавить, и не знаю, как сообщить журналу Stackdriver о записи в эту таблицу.

Я, должно быть, пропустил шаг.

У Google есть короткое 1-минутное видео об экспорте в Big Query, но оно останавливается именно в том месте, где я нахожусь в процессе.


person Terry Chambers - Onix    schedule 31.07.2019    source источник
comment
После того, как вы определили экспорт с приемником в BQ, НОВЫЕ сообщения журнала будут записаны в BQ, который создаст таблицы. Поступали ли новые сообщения в журналы, соответствующие фильтрам экспорта?   -  person Kolban    schedule 31.07.2019
comment
@Kolban Когда я создаю экспорт - нет ли возможности экспортировать существующие журналы? Уже существует довольно много журналов, но нет, новые данные еще не были записаны в журналы.   -  person Terry Chambers - Onix    schedule 31.07.2019
comment
@Kolban Я вижу, что в конечном итоге он создал «таблицу» в наборе данных, но в ней нет строк. Я зашел в свое исходное приложение и выполнил некоторые действия, и я вижу обновленные записи журнала в пользовательском интерфейсе журнала Stackdriver. Приводит ли действие create export автоматически к регулярному процессу «синхронизации» для обновления данных дополнительными данными? Я воспринял это как разовую синхронизацию.   -  person Terry Chambers - Onix    schedule 31.07.2019


Ответы (2)


Когда новый экспорт Stackdriver определен, он затем начинает экспортировать вновь записанные записи журнала в целевой приемник (в данном случае BQ). Согласно документации, найденной здесь:

https://cloud.google.com/logging/docs/export/

Говорится:

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

Если кто-то хочет экспортировать существующие журналы в файл, можно использовать gcloud (или API), как описано здесь:

https://cloud.google.com/logging/docs/reference/tools/gcloud-logging#reading_log_entries

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

person Kolban    schedule 31.07.2019
comment
Я не вижу никаких строк в моем наборе данных / таблице, хотя я использовал приложение и могу видеть журналы в пользовательском интерфейсе журналов Stackdriver. Что мне нужно сделать, чтобы журналы автоматически перенаправлялись в таблицу BigQuery? Я чувствую, что где-то пропускаю шаг. - person Terry Chambers - Onix; 01.08.2019
comment
@ TerryChambers-Onix ... для ясности ... вы говорите о создании НОВЫХ сообщений журнала? После настройки экспорта в целевые таблицы BQ будут поступать НОВЫЕ сообщения журнала, соответствующие фильтру. Я бы запустил список приемников журналов gcloud, чтобы перечислить определенные мной экспорты, а затем запустить приемники журналов gcloud описать SINK_NAME, чтобы увидеть, каким может быть его определение. Возможно, вы захотите запустить их и обновить свой вопрос выводом (убедитесь, что вы не раскрываете информацию о компании). - person Kolban; 01.08.2019

Чтобы экспортировать журналы в bigquery из stackdrive, вы должны создать Logger Sink, используя код или пользовательский интерфейс регистрации GCP.

Затем создайте Sink, добавьте фильтр. https://cloud.google.com/logging/docs/export/configure_export_v2

введите описание изображения здесь

Затем добавьте журналы в драйвер стека, используя код

public static void writeLog(Severity severity, String logName, Map<String, String> jsonMap) {
List<Map<String, String>> maps = limitMap(jsonMap);
for (Map<String, String> map : maps) {
  LogEntry logEntry = LogEntry.newBuilder(Payload.JsonPayload.of(map))
      .setSeverity(severity)
      .setLogName(logName)
      .setResource(monitoredResource)
      .build();
  logging.write(Collections.singleton(logEntry));
}

}

private static MonitoredResource monitoredResource = 
MonitoredResource.newBuilder("global")
   .addLabel("project_id", logging.getOptions().getProjectId())
   .build();

https://cloud.google.com/bigquery/docs/writing-results

person Sneha Mule    schedule 24.04.2021