В Stackdriver есть API отчетов об ошибках. Документация для Stackdriver API имеет возможность REST, что означает, что вы можете вызывать его из Скрипт приложений с использованием UrlFetchApp.fetch(url)
, где url
- это URL-адрес, необходимый для получения информации об ошибках. Базовый URL-адрес API Stackdriver: https://clouderrorreporting.googleapis.com
API должен быть включен.
С API можно использовать несколько методов.
Вам, вероятно, понадобится метод list
, для которого требуется URL-адрес:
https://clouderrorreporting.googleapis.com/v1beta1/{projectName=projects/*}/events
где параметр projectName
должен быть идентификатором проекта Google Cloud Platform.
См. Документацию по list
по адресу: projects.events.list < / а>
Возвращаемое значение для этого запроса HTTPS, в случае успеха, представляет собой "тело ответа" со следующей структурой и данными:
{
"errorEvents": [
{
object (ErrorEvent)
}
],
"nextPageToken": string,
"timeRangeBegin": string
}
ErrorEvent - это объект JSON со следующей структурой и данными:
{
"eventTime": string,
"serviceContext": {
object (ServiceContext)
},
"message": string,
"context": {
object (ErrorContext)
}
}
Итак, если вы хотите отправить электронное письмо с данными об ошибке из Stackdriver, оно не будет отправлено напрямую из Stackdriver, вам нужно сделать запрос в Stackdriver из Apps Script, получить информацию об ошибке, а затем отправить электронное письмо из Apps Script .
Конечно, у вас может быть собственная система обработки ошибок, которая регистрирует информацию об ошибках для некоторой внешней цели (например, вашей электронной таблицы или базы данных) с помощью UrlFetchApp.fetch (url);
Чтобы сделать запрос к Stackdriver API, вам понадобится примерно такой код:
var projectID = "Enter project ID";
var url = 'https://clouderrorreporting.googleapis.com/v1beta1/' + projectID
+ '/events';
var tkn = ScriptApp.getOAuthToken();
var options = {};
options.headers = {Authorization: 'Bearer ' + tkn}
options.muteHttpExceptions = true;
var rtrnObj = UrlFetchApp.fetch(url,options);
Logger.log(rtrnObj.getContentText())
Я не использовал этот API и не тестировал этот код. Если кто-то пользуется им и имеет информацию или обнаруживает ошибку, пожалуйста, оставьте комментарий.
person
Alan Wells
schedule
23.06.2019
getLogs()
, нецелесообразно? - person tehhowch   schedule 24.04.2018