Как сгруппировать записи журнала Cloud Function по исполнению? - PullRequest
2 голосов
/ 23 февраля 2020

В Google App Engine первого поколения журналы автоматически группируются по запросу в средстве просмотра журналов, а во втором поколении достаточно просто настроить .

В фон Облачные функции Я не могу найти какой-либо способ сделать это (сохранить фильтрацию вручную с помощью executionId в Logs Viewer). Из различных статей в Интернете я читал, что ключом является установка аргумента trace для идентификатора трассировки при вызове API ведения журнала Stackdriver, и что в контекстах HTTP этот идентификатор можно найти в X-Cloud-Trace-Context header.

В фоновом контексте нет заголовков (например, вызываемых из триггеров Pub / Sub или Storage). Я попытался установить это произвольное значение, такое как event_id из контекста функции, но группировка не происходит.

Вот сокращенное представление о том, как я это пробовал:

from google.cloud.logging.resource import Resource
import google.cloud.logging

log_name = 'cloudfunctions.googleapis.com%2Fcloud-functions'
cloud_client = google.cloud.logging.Client()
cloud_logger = cloud_client.logger(log_name)

request_id = None


def log(message):
    labels = {
        'project_id': 'settle-leif',
        'function_name': 'group-logs',
        'region': 'europe-west1',
    }
    resource = Resource(type='cloud_function', labels=labels)
    trace_id = f'projects/settle-leif/traces/{request_id}'
    cloud_logger.log_text(message, trace=trace_id, resource=resource)


def main(_data, context):
    global request_id
    request_id = context.event_id

    log('First message')
    log('Second message')

1 Ответ

2 голосов
/ 25 февраля 2020

К сожалению, похоже, что в настоящее время это невозможно.

Я подал проблему внутренне, запрашивая эту функцию, и обновлю этот ответ, если у меня будут обновления.

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