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

Связь между облаками имеет значение

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

Для устранения ошибок необходимо выполнить два шага:

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

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

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

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

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

  • Диаграмма «Уровень успешности» — это первая диаграмма, с которой следует начинать при мониторинге надежности ваших проектов. Падение значений на этой диаграмме может указывать на сбой в работе части или всей вашей пользовательской базы. Мы рекомендуем внимательно отслеживать эту диаграмму на предмет любых отклонений после каждого изменения или обновления вашего проекта.
  • Диаграмма задержки 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.

Проверьте все поля в вашем ответе на запрос на наличие непредусмотренных символов, несовпадающих скобок или ошибок форматирования. Некоторые символы Юникода могут быть неподдерживаемыми. Также убедитесь, что ваш ответ правильно структурирован как объект 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» . Это добавит фильтр в ваш запрос, чтобы отображать журналы, созданные в рамках вашего проекта.

Используйте кнопку «Уровень серьезности» , чтобы отфильтровать сообщения по уровням серьезности: «Экстренная ситуация» , «Информация» , «Отладка» и другим.

В 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 , которое поможет вам эффективно протестировать ваши изменения.

Учебные ресурсы

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