INVALID_ARGUMENT (ошибка 400) при вызове API отчетов об ошибках Stackdriver

При попытке вызвать API отчетов об ошибках Stackdriver (через обозреватель API или через Клиентская библиотека JavaScript), я получаю следующую ошибку:

Запрос:

{ "message" : "test" }

Ответ:

{
  "error": {
    "code": 400,
    "message": "Request contains an invalid argument.",
    "status": "INVALID_ARGUMENT"
  }
}

API отчетов об ошибках Stackdriver включен, и у меня есть права владельца на проект App Engine.

API просто не работает? Если я что-то делаю не так, может кто-нибудь помочь?


person Lee    schedule 30.07.2017    source источник


Ответы (1)


В документации по сообщениям о событиях говорится, что ServiceContext является требуется.

Если вы отправляете только сообщение (а не трассировку стека/исключение), вам необходимо указать контекст с reportLocation. Это отмечено в документации поля message, но не очевидно.

Следующие работы из проводника API:

{
 "context": {
  "reportLocation": {
   "functionName": "My Function"
  }
 },
 "message": "error message",
 "serviceContext": {
  "service": "My Microservice",
 }
}

Возможно, вас также заинтересуют документы по Как группируются ошибки.

FWIW, я работаю над этим продуктом, и я думаю, что сообщение об ошибке слишком общее. Проблема в том (?), что обслуживающий стек очищает сообщения, если только они не помечены как предназначенные для общего пользования. Я буду преследовать это вниз.

person Kirk Kelsey    schedule 04.08.2017
comment
Получив запрос, API должен проверить наличие всех необходимых параметров. Если они отсутствуют, API должен генерировать исключение с отсутствующими параметрами. - person Lee; 06.08.2017
comment
Обратите внимание, что реализация JS не указывать расположение отчета. Именно при тестировании оболочки JS я впервые столкнулся с ошибкой 400, и, похоже, именно поэтому. - person Lee; 06.08.2017
comment
Спасибо что подметил это. Имейте в виду, что модуль помечен как «Экспериментальный». - person Kirk Kelsey; 07.08.2017