Метрики на основе журналов для умного дома

1. Прежде чем начать

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

848f483bfcd2997a.png

Помимо метрик, которые мы предоставляем вашему проекту, вы также можете генерировать собственные метрики, используя метрики на основе логов от Google Cloud. Это позволяет отслеживать определенные закономерности в ваших логах и эффективно отлаживать проблемы с качеством.

Предварительные требования

Что вы узнаете

  • Как писать эффективные запросы для фильтрации журналов ошибок умного дома
  • Как создать метрики на основе логов для генерации метрик из ваших запросов
  • Как создавать диаграммы и панели мониторинга на основе метрик, полученных из логов.

2. Работа с логами

Как мы кратко упомянули в мастер-классе по отладке умного дома , работа с логами имеет решающее значение для успеха вашего проекта. В Google Cloud доступны отличные инструменты для мониторинга и анализа ваших логов. Чтобы получить доступ ко всем логам, доступным для вашего проекта, вы можете использовать Logs Explorer .

Доступ к журналам

Первый шаг для доступа к вашим журналам — войти в Google Cloud и выбрать свой проект. Перейдите в Logs Explorer через боковое меню, выбрав Operations > Logging > Logs Explorer . После открытия инструмента вы должны увидеть следующее:

78982d8b6d19b827.png

Logs Explorer состоит из двух основных разделов: раздела для написания запросов ( конструктор запросов ) и области для отображения результатов поиска ( результаты запроса ).

Многие компоненты Google по умолчанию записывают логи в ваш проект. Чтобы найти и обработать логи, поступающие из вашей интеграции с системой «Умный дом», вам необходимо написать собственные запросы.

Написание запросов

Журналы публикуются в проекты в рамках определенного типа ресурса. Каждый тип ресурса представляет собой отдельную платформу в Google. Журналы, поступающие с платформы Smart Home, доступны вашему проекту в рамках типа ресурса assistant_action_project .

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

В следующем примере мы напишем запрос для фильтрации логов, поступающих только с нашей платформы и содержащих ошибки, следующим образом:

753bfe72a9f8e959.png

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

3ef42da5a6c322e1.png

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

Использование гистограммы

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

10eaf1d204decf3c.png

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

dd3410e65a83cf5d.png

Как видно на изображении выше, за последний час мы обнаружили несколько ошибок, которые сгруппированы неравномерно. Они, по-видимому, образуют три кластера примерно в 13:45, 14:00 и 14:15. Гистограмма может помочь выявить закономерности, которые трудно заметить, проверяя только значения временных меток.

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

Расширенные запросы

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

825c57c36800844e.png

action

  • trait : Характеристика целевого устройства, заданная пользователем (например, Вкл/Выкл, Пуск/Стоп, Яркость).
  • actionType : Детальное отображение состояния свойства (например, Вкл., Выкл., Пауза, Остановка, Возобновление)

device

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"

После выполнения обновленного запроса система идентифицирует журналы и отображает соответствующий результат:

76176d7a41962341.png

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

3. Метрики на основе логов

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

Создание метрики на основе логов

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

296af6e7d8dcf6cf.png

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

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

f7f2093fa1bce2ac.png

В поле «Создать фильтр» мы вставим наш запрос из предыдущего раздела.

​​resource.type="assistant_action_project" AND severity=ERROR AND
jsonPayload.executionLog.executionResults.actionResults.action.trait="TRAIT_ON_OFF"

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

Просмотр данных метрик на основе журналов

Теперь, когда наша метрика на основе логов создана, она будет доступна в разделе «Пользовательские метрики» на странице «Метрики на основе логов».

1b2c88c18533fbcd.png

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

54a836fdc3a666a3.png

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

Мониторинг с помощью настраиваемых панелей мониторинга

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

52329085f841782e.png

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

44961e7cb3663341.png

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

f7e025c27f30f996.png

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

4. Поздравляем!

674c4f4392e98c1.png

Поздравляем! Вы успешно научились преобразовывать запросы в метрики на основе логов и сохранять их в пользовательские панели мониторинга.

Следующие шаги

Опираясь на этот практический урок, попробуйте выполнить следующие упражнения и изучите дополнительные ресурсы: