智能家居基于日志的指标

1. 准备工作

正如我们在调试智能家居 Codelab 中所述,我们会将指标和日志发布到你的智能家居项目。这些指标可帮助你确定智能家居 Action 的哪些方面存在问题,而日志则有助于你深入了解这些问题以将其解决。

848f483bfcd2997a.png

除了我们为你的项目提供的指标外,你还可以使用 Google Cloud Platform 中基于日志的指标生成自己的指标。这样一来,你就能监控日志中的某些模式并有效调试质量问题。

前提条件

学习内容

  • 如何编写有效查询来过滤智能家居错误日志
  • 如何创建基于日志的指标以根据你的查询生成指标
  • 如何根据基于日志的指标创建图表和信息中心以进行监控

2. 使用日志

正如我们在调试智能家居 Codelab 中简要介绍的那样,使用日志是项目取得成功的关键。Google Cloud Platform 上提供了许多实用的日志监控和分析工具。如需访问项目可用的所有日志,您可以使用日志浏览器

访问日志

访问日志的第一步是登录 Google Cloud Platform 并选择您的项目。然后,依次点击操作 > 日志记录 > 日志浏览器,使用侧边菜单进入日志浏览器。打开该工具后,你应会看到以下视图:

78982d8b6d19b827.png

日志浏览器包含两个主要部分:位于顶部用于编写查询的部分(查询构建器);用于显示匹配结果的区域(查询结果)。

默认情况下,Google 的许多不同组件会将日志写入你的项目。如需查找并使用来自智能家居集成的日志,必须编写自定义查询。

编写查询

日志将发布到相应资源类型下的项目。每种资源类型代表着 Google 的不同平台。来自智能家居平台的日志可用于你在 assistant_action_project 资源类型下的项目。

此外,在创建每个日志时,系统都会为其分配一个严重级别。对于智能家居日志,我们对表示错误和异常的日志使用 ERROR 级别,对所有其他日志使用 DEBUG 级别。

在下方示例中,我们编写了一个查询来过滤仅来自我们平台且代表错误的日志,如下所示:

753bfe72a9f8e959.png

编写好查询后,请点击运行查询按钮以启动该查询。执行此操作应会显示来自智能家居集成的错误:

3ef42da5a6c322e1.png

如你所见,我们发现过去一小时内的不同时间出现了许多错误。每行代表一个错误日志。你可以进一步点击各个日志,并展开嵌套字段以查看其中包含的信息。

使用直方图

日志浏览器提供了一项实用的直方图功能,以便你查看与你的查询匹配的日志的时间分布情况。如需启用直方图,请点击右上角按钮中的页面布局,然后勾选直方图以启用该功能。

10eaf1d204decf3c.png

启用后,即可看到与你的查询相匹配的日志的分布情况:

dd3410e65a83cf5d.png

如上图所示,在过去一小时内,我们发现了一些稀疏集群的错误。它们似乎形成了三个集群,分别在下午 1:45、2:00 和 2:15 左右。直方图可帮助你检测出仅通过检查时间戳值难以发现的集群模式。

目前,我们使用的查询不会区分日志,且会显示来自智能家居集成的所有错误。很多时候,你可能想要区分错误,例如跟踪源自特定设备类型或特征的错误模式。为此,我们来看看如何编写高级查询。

高级查询

检查智能家居事件日志时,你将看到各种可供你从中收集信息的字段:

825c57c36800844e.png

action

  • trait:按用户定位设备特征(例如 OnOff、StartStop、Brightness)
  • actionType:特征的精细状态(例如:开启、关闭、暂停、停止、继续)

device

  • deviceType:按用户定位设备类型(例如:灯具、开关、洗衣机)

status

  • isSuccess:Action 的结果是否被视为成功 (true/false)
  • statusType:Action 结果的状态代码(如果不成功,会指示一个错误代码)
  • externalDebugString:Action 的调试字符串(详细说明该错误)

其他字段

你还可以从其他字段中提取信息:

  • requestId:与请求相关联的唯一 ID(由 Google 生成)
  • executionType:请求使用的路径(指明是 Cloud 还是 Local)
  • 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

在与基于日志的指标对应的菜单(三点状)中,选择在 Metrics Explorer 中查看,以查看基于日志的指标中收集的数据:

54a836fdc3a666a3.png

一旦出现新的错误,我们基于日志的指标就会捕获该错误,并将其显示在 Metrics Explorer 的图表窗口中。

通过自定义信息中心进行监控

在看到新的基于日志的指标按预期运作后,就可以将此图表视图保存到自定义信息中心了。为此,请点击 Metrics Explorer 右上角的保存图表按钮。系统会显示一条提示,提醒你为图表命名并选择要保存图表的信息中心:

52329085f841782e.png

将图表保存到相应的信息中心后,我们就可以在那里轻松访问该图表。如需访问项目可用的信息中心列表,请依次点击操作 > 监控 > 信息中心

44961e7cb3663341.png

我们已将图表保存到一个名为“Codelab 信息中心”的信息中心内。打开该信息中心会显示以下视图:

f7e025c27f30f996.png

如你所见,表示基于日志的指标的图表和新收集的数据都会在此显示。智能家居日志会实时发布到你的项目。当有新的日志时,你将看到基于日志的指标会立即将其统计在内。

4. 恭喜

674c4f4392e98c1.png

恭喜!你已成功学会如何将查询转换为基于日志的指标,并将其保存到自定义信息中心以进行监控。

后续步骤

在此 Codelab 的基础上,尝试做以下练习并浏览其他资源:

  • 如需了解如何创建基于日志的指标(例如延迟时间),请参阅创建分布指标指南。
  • 查看 Google Cloud 提供的示例查询库,了解可用于基于日志的指标的一些复杂过滤条件。