Запрос журналов Python в Glue Query с помощью CloudWatch Insights

Я новичок в CloudWatch Insights и пытался понять, как заставить его работать с ведением журнала Python. В настоящее время у меня есть AWS Glue настройка запроса ETL в PySpark/Python. Я использую в скрипте пакет logging по умолчанию для Python.

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

Вот пример сообщения журнала в скрипте:

import timeit

start = timeit.default_timer()

...run some code

stop = timeit.default_timer()

runtime = stop - start

logging.info('Runtime: {}'.format(runtime))

Я хотел бы запросить настраиваемое поле, например @Runtime, чтобы показать все среды выполнения в этом столбце для разных запусков. Я также хотел бы увидеть простой пример запроса Insight, чтобы я мог использовать его.

Любая помощь будет очень признательна!


comment
Можете ли вы вставить фрагменты кода, которые у вас есть до сих пор ... Ведение журнала такое же, как в журнале Python, которое мы обычно пишем на Python. Какой формат вы ищете? Примеры могут быть полезны   -  person Emerson    schedule 06.04.2020
comment
Добавлен фрагмент кода, надеюсь, он имеет смысл!   -  person mlenthusiast    schedule 06.04.2020


Ответы (1)


Это то же самое, что настроить простой регистратор

Простой пример ниже

MSG_FORMAT = '%(asctime)s %(levelname)s %(name)s: %(message)s'
logging.basicConfig(format=MSG_FORMAT)
logger = logging.getLogger('Something')
logger.setLevel(logging.INFO)

Тогда ваш код

start = timeit.default_timer()

...run some code

stop = timeit.default_timer()

runtime = stop - start

logger.info('Runtime: {}'.format(runtime))
person Emerson    schedule 06.04.2020
comment
Каков будет запрос CloudWatch Insights для этого? Вот что меня путает с @Emerson - person mlenthusiast; 06.04.2020
comment
пробовали ли вы поля @timestamp, @message | фильтр @message как Runtime '' - person Emerson; 06.04.2020
comment
fields @timestamp, @message | filter @message like "Something" работает, а не Runtime. Я ищу, чтобы в этом случае в таких полях, как @Runtime, отображалось значение времени выполнения. - person mlenthusiast; 06.04.2020
comment
`` поля @ отметка времени, @ сообщение | синтаксический анализ @message [*] * *: * как уровень, имя журнала, исключение | фильтр @exception, например RunTime - person Emerson; 06.04.2020
comment
`` поля @ отметка времени, @ сообщение | синтаксический анализ @message [*] *: * как уровень, имя журнала, исключение | фильтр @exception, например RunTime, извините, я добавил лишнюю звездочку - person Emerson; 06.04.2020
comment
Все еще не работает, я переключил @exception на Something и тоже попробовал - person mlenthusiast; 06.04.2020
comment
Позвольте нам продолжить это обсуждение в чате. - person Emerson; 06.04.2020
comment
Клеевые журналы представляют собой свалку их выбросов пряжи / искры, и это означает, что нужные журналы являются частью строки журнала выполнения в облачных часах. Это затрудняет синтаксический анализ и получение необходимой информации, особенно потому, что в вашей строке журнала есть символы новой строки. - person Emerson; 06.04.2020
comment
Возможное решение - отправить ваш журнал в виде потока на s3, а затем поместить эти сообщения журнала в cloudwatch и проанализировать их. Таким образом, ваши сообщения журнала не будут смешиваться с остальными связными сообщениями, которые сбрасываются в cloudwatch. - person Emerson; 06.04.2020
comment
Или, что еще лучше, попробуйте напрямую поместить настраиваемые события в свой клеевой код с помощью boto3, а затем запустить аналитику из этой группы журналов. - person Emerson; 06.04.2020