Любая идея о том, как использовать gcp stackdriver для сбора журналов, когда результат запроса bigquery пуст (с использованием pthon)? - PullRequest
0 голосов
/ 25 сентября 2019

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

код облачной функции:

def main(request):

    query = "select * from `myproject.mydataset.mytable`"
    client = bigquery.Client()
    job_config = bigquery.QueryJobConfig()
    dest_dataset = client.dataset(destination_dataset, destination_project)
    dest_table = dest_dataset.table(destination_table)
    job_config.destination = dest_table
    job_config.create_disposition = 'CREATE_IF_NEEDED'
    job_config.write_disposition = 'WRITE_APPEND'
    job = client.query(query, location='US', job_config=job_config)
    job.result()

1 Ответ

1 голос
/ 25 сентября 2019
  • Перейдите в раздел ведения журнала Stackdriver в консоли GCP.
  • Активировать расширенный фильтр (нажмите на стрелку справа от поля фильтра)
  • заполните пользовательское поле следующим образом:
resource.type="bigquery_resource"
"device_states"
protoPayload.methodName="jobservice.getqueryresults"
NOT protoPayload.serviceData.jobGetQueryResultsResponse.totalResults>"0"

Таким образом,Вы выбираете только общий результат, равный 0. Хитрость заключается в том, что totalResults отсутствует с 0 результатом.С этим синтаксисом это работает.

Затем вы можете создать экспорт в BigQuery, Storage или PubSub или создать метрику.Если вы сделаете это, то сможете использовать этот показатель в мониторинге и предупреждениях Stackdriver.Все зависит от того, что вы хотите сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...