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

Помимо метрик, которые мы предоставляем вашему проекту, вы также можете генерировать собственные метрики, используя метрики на основе логов от Google Cloud. Это позволяет отслеживать определенные закономерности в ваших логах и эффективно отлаживать проблемы с качеством.
Предварительные требования
- Подходит для интеграции с системами «умного дома».
- Полная отладка кода для проекта «Умный дом»
Что вы узнаете
- Как писать эффективные запросы для фильтрации журналов ошибок умного дома
- Как создать метрики на основе логов для генерации метрик из ваших запросов
- Как создавать диаграммы и панели мониторинга на основе метрик, полученных из логов.
2. Работа с логами
Как мы кратко упомянули в мастер-классе по отладке умного дома , работа с логами имеет решающее значение для успеха вашего проекта. В Google Cloud доступны отличные инструменты для мониторинга и анализа ваших логов. Чтобы получить доступ ко всем логам, доступным для вашего проекта, вы можете использовать Logs Explorer .
Доступ к журналам
Первый шаг для доступа к вашим журналам — войти в Google Cloud и выбрать свой проект. Перейдите в Logs Explorer через боковое меню, выбрав Operations > Logging > Logs Explorer . После открытия инструмента вы должны увидеть следующее:

Logs Explorer состоит из двух основных разделов: раздела для написания запросов ( конструктор запросов ) и области для отображения результатов поиска ( результаты запроса ).
Многие компоненты Google по умолчанию записывают логи в ваш проект. Чтобы найти и обработать логи, поступающие из вашей интеграции с системой «Умный дом», вам необходимо написать собственные запросы.
Написание запросов
Журналы публикуются в проекты в рамках определенного типа ресурса. Каждый тип ресурса представляет собой отдельную платформу в Google. Журналы, поступающие с платформы Smart Home, доступны вашему проекту в рамках типа ресурса assistant_action_project .
Кроме того, при создании всем записям в журналах присваивается уровень серьезности. В журналах системы «Умный дом» мы используем уровень ERROR для записей об ошибках и исключениях , а уровень DEBUG для всего остального.
В следующем примере мы напишем запрос для фильтрации логов, поступающих только с нашей платформы и содержащих ошибки, следующим образом:

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

Как видите, за последний час у нас возникло несколько ошибок, произошедших в разное время. Каждая строка представляет собой отдельный журнал ошибок. Вы можете дополнительно щелкнуть по отдельным журналам и развернуть вложенные поля, чтобы увидеть содержащуюся в них информацию.
Использование гистограммы
Logs Explorer предоставляет полезную функцию гистограммы для просмотра временного распределения записей логов, соответствующих вашему запросу. Чтобы активировать гистограмму, нажмите кнопку «Макет страницы» в правом верхнем углу и установите флажок «Гистограмма» , чтобы включить эту функцию.

После включения вы увидите распределение журналов, соответствующих вашему запросу:

Как видно на изображении выше, за последний час мы обнаружили несколько ошибок, которые сгруппированы неравномерно. Они, по-видимому, образуют три кластера примерно в 13:45, 14:00 и 14:15. Гистограмма может помочь выявить закономерности, которые трудно заметить, проверяя только значения временных меток.
В настоящий момент используемый нами запрос не различает журналы и отображает все ошибки, поступающие из нашей интеграции с системой «умный дом». Однако во многих случаях может потребоваться различать ошибки, например, для отслеживания закономерностей ошибок, возникающих из-за определенных типов или характеристик устройств. Для этого мы рассмотрим написание сложных запросов.
Расширенные запросы
При просмотре журнала событий умного дома вы увидите различные поля, из которых можно получить информацию:

action
-
trait: Характеристика целевого устройства, заданная пользователем (например, Вкл/Выкл, Пуск/Стоп, Яркость). -
actionType: Детальное отображение состояния свойства (например, Вкл., Выкл., Пауза, Остановка, Возобновление)
device
-
deviceType: Тип целевого устройства, указанный пользователем (например, Светильник, Выключатель, Стиральная машина)
status
-
isSuccess: Указывает, считается ли результат действия успешным (истина/ложь). -
statusType: Код состояния результата действия (указывает на код ошибки в случае неудачи) -
externalDebugString: Отладочная строка для действия (подробно описывает ошибку)
Другие области
Также существуют дополнительные поля, из которых можно получить информацию:
-
requestId: Уникальный идентификатор, связанный с запросом (сгенерированный Google). -
executionType: Путь, используемый запросом (указывает, облачный он или локальный). -
latencyMsec: Воспринимаемая задержка запроса на серверах Google (в мс) -
locale: Пара язык/регион, из которого отправлен запрос (например, en-US, fr-FR)
Используя поле характеристики из приведенного выше списка, мы изменим наш запрос, чтобы он включал только ошибки, связанные с характеристикой OnOff, следующим образом:
resource.type="assistant_action_project" AND severity=ERROR AND jsonPayload.executionLog.executionResults.actionResults.action.trait="TRAIT_ON_OFF"
После выполнения обновленного запроса система идентифицирует журналы и отображает соответствующий результат:

До сих пор мы выполняли все запросы вручную. Это отличный способ быстро проверить состояние ошибок, но не очень подходит для отслеживания изменений в характере ошибок с течением времени. Чтобы автоматизировать этот процесс и собирать данные за более длительные периоды времени, мы создадим метрики на основе логов.
3. Метрики на основе логов
Для подсчета количества записей в логах, соответствующих вашим запросам, за определенный период времени можно использовать метрики на основе логов. Это позволит вам увидеть закономерности в логах и получить ценную информацию о лежащих в их основе проблемах.
Создание метрики на основе логов
Чтобы создать метрику на основе логов, перейдите в раздел «Операции» > «Логирование» > «Метрики на основе логов» . Здесь отобразится список метрик на основе логов, уже доступных в вашем проекте. После нажатия кнопки «СОЗДАТЬ МЕТРИКУ» откроется экран создания метрики на основе логов:

Существует два основных типа метрик: метрика-счетчик подсчитывает количество записей в логах, соответствующих вашему запросу. Метрика распределения отслеживает базовое распределение и позволяет выполнять статистические операции, такие как вычисление среднего значения, медианы и 95-го процентиля.
Прокрутив страницу вниз, вы увидите раздел фильтров, где сможете ввести свой запрос.

В поле «Создать фильтр» мы вставим наш запрос из предыдущего раздела.
resource.type="assistant_action_project" AND severity=ERROR AND jsonPayload.executionLog.executionResults.actionResults.action.trait="TRAIT_ON_OFF"
Вы также можете нажать кнопку « ПРЕДПРОСМОТР ЖУРНАЛОВ» , чтобы быстро просмотреть предыдущие записи, соответствующие вашему фильтру. После этого вы можете нажать кнопку « СОЗДАТЬ МЕТРИКУ» и перейти к следующему разделу.
Просмотр данных метрик на основе журналов
Теперь, когда наша метрика на основе логов создана, она будет доступна в разделе «Пользовательские метрики» на странице «Метрики на основе логов».

В меню, соответствующем логарифмической метрике (3 точки), выберите «Просмотреть в обозревателе метрик» , чтобы увидеть данные, собранные в рамках логарифмической метрики:

Как только у нас появится новая ошибка, она будет зафиксирована нашей метрикой на основе логов и отображена в окне диаграммы в обозревателе метрик .
Мониторинг с помощью настраиваемых панелей мониторинга
Как только мы убедимся, что наша новая метрика на основе логов работает должным образом, пришло время сохранить этот график в пользовательскую панель мониторинга. Для этого нажмите кнопку «Сохранить график» в правом верхнем углу обозревателя метрик . Появится запрос на присвоение имени графику и выбор панели мониторинга, в которую вы хотите его сохранить:

После сохранения диаграммы на панели мониторинга к ней можно легко получить доступ в дальнейшем. Чтобы просмотреть список панелей мониторинга, доступных в вашем проекте, перейдите в раздел «Операции» > «Мониторинг» > «Панели мониторинга» .

Мы сохранили наш график на панели мониторинга под названием "Codelab Dashboard". При открытии этой панели отобразится следующее:

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

Поздравляем! Вы успешно научились преобразовывать запросы в метрики на основе логов и сохранять их в пользовательские панели мониторинга.
Следующие шаги
Опираясь на этот практический урок, попробуйте выполнить следующие упражнения и изучите дополнительные ресурсы:
- Ознакомьтесь с руководством по созданию метрик распределения , чтобы создавать метрики на основе логов по числовым полям, таким как задержка.
- Ознакомьтесь с библиотекой примеров запросов, предоставляемой Google Cloud, чтобы увидеть некоторые сложные фильтры, которые можно использовать для метрик на основе логов.