Устранение ошибок интеграции

Вопрос от облака к облаку

Google Cloud предоставляет вам инструменты для мониторинга надежности ваших проектов с помощью Google Cloud Monitoring и отладки проблем с помощью журналов ошибок Google Cloud Logging . Всякий раз, когда происходит сбой при выполнении намерений пользователя, конвейер Google Home Analytics регистрирует этот сбой в ваших метриках и публикует журнал ошибок в журналах вашего проекта.

Устранение неполадок можно осуществить в два этапа:

  1. Контролируйте состояние своих проектов с помощью показателей умного дома.
  2. Исследуйте проблемы, проверив подробные описания ошибок в журналах ошибок.

Процесс аналогичен для локальной интеграции с использованием Local Home SDK . Как только вы освоите процесс устранения неполадок, вы сможете легко переходить между метриками и журналами, чтобы получить представление о своих ошибках.

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

Ошибки мониторинга

Вы можете использовать Google Cloud Monitoring dashboard для доступа к метрикам вашего проекта. Есть несколько ключевых диаграмм, которые особенно полезны для мониторинга качества и отладки:

  • Диаграмма Success Rate — это первая диаграмма, с которой следует начать, когда вы отслеживаете надежность своих проектов. Падения на этой диаграмме могут указывать на сбой для части или всей вашей пользовательской базы. Мы рекомендуем внимательно следить за этой диаграммой на предмет любых нарушений после каждого изменения или обновления вашего проекта.
  • Диаграмма 95-го процентиля задержки является важным индикатором того, как ваша интеграция Cloud-to-cloud работает для ваших пользователей. Внезапные колебания на этой диаграмме могут указывать на то, что ваши системы не справляются с запросами. Рекомендуется периодически проверять эту диаграмму, чтобы увидеть любое неожиданное поведение.
  • Диаграммы разбивки ошибок наиболее полезны, когда дело доходит до устранения неполадок в ваших интеграциях. Для каждой ошибки, выделенной в вашей диаграмме процента успеха, в вашей разбивке ошибок отображается код ошибки. Вы можете увидеть ошибки, отмеченные Google Home platform и способы их устранения в таблице ниже.

Коды ошибок платформы

Вот некоторые распространенные коды ошибок, которые вы можете увидеть в журналах проекта, чтобы определить проблемы, обнаруженные Google Home platform . Пожалуйста, обратитесь к следующей таблице для получения информации об устранении неполадок.

Код ошибки Описание
BACKEND_FAILURE_URL_ERROR Google получил от вашей службы код ошибки HTTP 4xx, отличный от 401.

Используйте requestId в GCP Logging для проверки журналов служб умного дома.
BACKEND_FAILURE_URL_TIMEOUT При попытке доступа к вашей службе истекло время ожидания запроса Google.

Убедитесь, что ваш сервис находится в сети, принимает соединения и не превышает емкость. Кроме того, проверьте, что целевое устройство включено, находится в сети и синхронизировано.
BACKEND_FAILURE_URL_UNREACHABLE Google получил от вашего сервиса код ошибки HTTP 5xx.

Используйте requestId в GCP Logging для проверки журналов служб умного дома.
DEVICE_NOT_FOUND Устройство не существует на стороне партнерского сервиса.

Обычно это указывает на сбой синхронизации данных или состояние гонки.
GAL_BAD_3P_RESPONSE Google не может проанализировать ответ от службы привязки аккаунтов из-за недопустимого формата или значений в полезной нагрузке.

Используйте requestId в GCP Logging для проверки журналов ошибок в службе привязки учетных записей.
GAL_INTERNAL Произошла внутренняя ошибка Google при попытке получить токен доступа.

Если вы заметили увеличение частоты возникновения этой ошибки в журнале GCP, свяжитесь с нами для получения дополнительной информации.
GAL_INVALID_ARGUMENT Произошла внутренняя ошибка Google при попытке получить токен доступа.

Если вы заметили увеличение частоты возникновения этой ошибки в журнале GCP, свяжитесь с нами для получения дополнительной информации.
GAL_NOT_FOUND Токены доступа и обновления пользователя, хранящиеся в Google, становятся недействительными и больше не могут быть обновлены. Пользователю необходимо повторно привязать свой аккаунт, чтобы продолжить использование вашего сервиса.

Если вы заметили увеличение частоты возникновения этой ошибки в журнале GCP, свяжитесь с нами для получения дополнительной информации.
GAL_PERMISSION_DENIED Произошла внутренняя ошибка Google, когда совместное использование токенов не было разрешено.

Если вы заметили увеличение частоты возникновения этой ошибки в журнале GCP, свяжитесь с нами для получения дополнительной информации.
GAL_REFRESH_IN_PROGRESS Срок действия токена доступа пользователя истек, и уже предпринимается другая параллельная попытка его обновления.

Это не проблема и никаких действий не требуется.
INVALID_AUTH_TOKEN Google получил от вашего сервиса код ошибки HTTP 401.

Токен доступа не просрочен, но ваша служба сделала его недействительным. Используйте requestId в GCP Logging, чтобы проверить журналы службы умного дома.
INVALID_JSON Ответ JSON не может быть проанализирован или понят.

Проверьте структуру вашего ответа JSON на наличие недопустимого синтаксиса, например, непарных скобок, пропущенных запятых, недопустимых символов.
OPEN_AUTH_FAILURE Срок действия токена доступа пользователя истек, и Google не может его обновить, или Google получил от вашей службы код ошибки HTTP 401.

Если вы видите возросшую частоту появления этого кода, проверьте, не наблюдаете ли вы также возросшей частоты ошибок, связанных с намерениями умного дома или запросами на обновление токена.
PARTNER_RESPONSE_INVALID_ERROR_CODE В ответе указан нераспознанный код ошибки.

Если ответ на ваш запрос указывает на ошибку, обязательно используйте один из поддерживаемых нами кодов ошибок .
PARTNER_RESPONSE_INVALID_PAYLOAD Поле payload ответа не может быть проанализировано как объект JSON.

Проверьте, имеет ли поле полезной нагрузки в ответе на запрос соответствующие скобки и правильно ли оно структурировано как поле JSON.
PARTNER_RESPONSE_INVALID_STATUS Ответ не указывает статус или указывает неверный статус.

Ответы на запросы на выполнение намерений должны указывать статус: SUCCESS, OFFLINE, ERROR, EXCEPTIONS . Вы можете найти дополнительную информацию об обработке ошибок и исключений .
PARTNER_RESPONSE_MISSING_COMMANDS_AND_DEVICES Одно или несколько намерений, присутствующих в запросе, отсутствуют в ответе.

Убедитесь, что ваш ответ на выполнение правильно структурирован и что в вашем ответе присутствуют результаты для всех намерений из запроса.
PARTNER_RESPONSE_MISSING_DEVICE Одно или несколько устройств, указанных в запросе, отсутствуют в ответе.

Убедитесь, что ваш ответ на выполнение правильно структурирован и что все идентификаторы устройств из запроса присутствуют в вашем ответе.
PARTNER_RESPONSE_MISSING_PAYLOAD Ответ не содержит поля payload .

Обязательно включите поле полезной нагрузки в ответ на запрос. Вы можете узнать больше о том, как правильно построить ответ на выполнение .
PARTNER_RESPONSE_NOT_OBJECT Ответ не может быть проанализирован как объект JSON.

Проверьте все поля в вашем ответе на запрос на наличие непреднамеренных символов, несовпадающих скобок или ошибок форматирования. Некоторые символы Unicode могут не поддерживаться. Также убедитесь, что ваш ответ правильно структурирован как объект JSON.
PROTOCOL_ERROR Ошибка при обработке запроса.

Используйте requestId в Google Cloud Logging для проверки журналов служб умного дома.
RELINK_REQUIRED В ответе указана ошибка relinkRequired , которая предлагает пользователю повторно связать свои учетные записи Google и партнерские аккаунты.

Для получения дополнительной информации см. поддерживаемые коды ошибок .
RESPONSE_TIMEOUT Время ожидания ответа истекло.

Период ожидания ответа составляет 9 секунд с момента отправки запроса. Обязательно отправьте ответ в течение этого периода времени.
RESPONSE_UNAVAILABLE Ответ не получен или в ответе не указан статус.

Ответы на запросы о выполнении намерений должны быть структурированы в соответствии с документацией по умному дому и содержать указание статуса.
TRANSIENT_ERROR Временная ошибка — это ошибка, которая разрешится сама собой.

Чаще всего эти ошибки проявляются в виде разрыва соединения с устройством или службой. Также, если новые соединения с сервером не могут быть открыты.

Журналы поиска

Как только вы освоитесь с мониторингом интеграций с помощью метрик, следующим шагом станет устранение конкретных ошибок с помощью Cloud Logging . Журнал ошибок — это запись в формате JSON с полями, содержащими полезную информацию, такую ​​как время, код ошибки и сведения об исходном намерении умного дома.

В Google Cloud есть несколько систем, которые постоянно отправляют журналы в ваш проект. Вам нужно написать запросы, чтобы отфильтровать журналы и найти нужные. Запросы могут быть основаны на Временном диапазоне , Ресурсе , Серьезности журнала или пользовательских записях.

Запросить облачные журналы

Вы можете использовать кнопки запросов для создания собственных фильтров.

Запросы журнала облачных вычислений

Чтобы указать временной диапазон , нажмите кнопку выбора временного диапазона и выберите один из предоставленных вариантов. Это отфильтрует журналы и покажет те, которые происходят в выбранном временном диапазоне.

Чтобы указать ресурс , щелкните раскрывающийся список ресурсов , затем выберите Google Assistant Action Project . Это добавит фильтр в ваш запрос для отображения журналов, которые исходят из вашего проекта.

Используйте кнопку «Серьезность» для фильтрации по уровням «Аварийная ситуация» , «Информация» , «Отладка » и другим уровням серьезности журнала.

Вы также можете использовать поле Query в Logs Explorer для ввода пользовательских записей. Механизм запросов, используемый этим полем, поддерживает как базовые запросы, такие как сопоставление строк, так и более сложные типы запросов, включая компараторы ( <, >=, != ) и логические операторы ( AND, OR, NOT ).

Например, пользовательская запись ниже будет возвращать ошибки, возникающие из-за типа устройства LIGHT :

resource.type = "assistant_action_project" AND severity = ERROR AND jsonPayload.executionLog.executionResults.actionResults.device.deviceType = "LIGHT"

Посетите библиотеку запросов , чтобы найти больше примеров эффективного запроса журналов.

Тестирование исправлений

После того, как вы определите ошибки и примените обновления для их исправления, мы рекомендуем тщательно протестировать ваши исправления с помощью Google Home Test Suite . Мы предоставляем руководство пользователя по использованию Test Suite , которое проведет вас через эффективное тестирование ваших изменений.

Ресурсы обучения

В этом документе приведены шаги по устранению ошибок в вашем Smart Home Action. Вы также можете проверить наши codelabs, чтобы узнать больше об отладке: