Журналирование в GCP реализовано через
Stackdriver Logging. На прошлой неделе пришлось обратиться в техническую поддержку Google по поводу поломанной работы с зависимостями в AI Platform (ML Engine). Для тикета нужно было скачать логи заданий с ошибкой и без нее. Если пытаться выгружать логи через консоль GCP, то сохранит только ту часть, который видна в данный момент в интерфейсе (в моем случае это малая часть от полного лога).
Чтобы выгрузить весь лог целиком воспользуемся консольной командой
gcloud logging read. В моем случае для успешной задачи ML Engine фильтр будет
resource.labels.job_id="some_successful_ml_job" timestamp>="2020-01-27T14:28:43Z" а для задания с ошибкой:
resource.labels.job_id="some_failed_ml_job" timestamp>="2020-01-30T13:42:58Z" (чтобы использовать этот запрос в команде нужно экранировать двойную кавычку).
gcloud logging read "resource.labels.job_id=\"some_successful_ml_job\" timestamp>=\"2020-01-27T14:28:43Z\"" --format=json --order=asc > success.json
gcloud logging read "resource.labels.job_id=\"some_failed_ml_job\" timestamp>=\"2020-01-30T13:42:58Z\"" --format=json --order=asc > failure.json
Для удобства чтения я извлекаю из JSON только сам текст сообщения (узнать больше о фильтрации в jq можно
тут).
jq -r .[].jsonPayload.message < success.json > success.txt
jq -r .[].jsonPayload.message < failure.json > failure.txt