[译] 如何将 Stackdriver 链接到智能家居服务器以进行错误记录

你的智能家居设备与 Google Assistant 集成时,你可能会遇到如下错误:“没法更新设置,请检查你的链接。”前端

Google Assistant 设置中报告的常见错误android

这个错误可能源于帐号链接和 SYNC 同步过程的许多缘由。ios

为了更好地了解这些错误,你可使用 Stackdriver,Google Cloud 的日志系统。当帐户链接或随后的 SYNC 事件发生错误时,它会自动记录错误并向你提供信息。git

可能来自堆栈驱动程序的错误报告消息的屏幕截图github

你收到的日志会自动清除并移除任何我的可识别信息(PII),并且不会包含详细的追踪。web

启动时,你能够导航到项目的 Google Cloud 控制台,在抽屉导航的 Stackdriver 部分中选择 Logging 选项:后端

你能够经过 Google Assistant Action > All version_id 来查看专门为你的智能家居实现而出现的错误:api

尽管很方便,但必须转到单独的页面去查看错误可能不适合你的开发流,并且它可能不会为你提供易于访问的数据,例如,包含在每周统计报表中的数据。让咱们看看如何将你的日志从 Stackdriver 导出到你的基础设施中,让你在这些数据之上构建额外的集成。bash

使用 Stackdriver,你能够设置包含带有特定过滤器的日志接收装置。这个接收装置中的日志能够经过 Cloud 发布/订阅发送到你拥有的端点。服务器

域名验证

在将消息推送到端点以前,你须要验证你本身的域名。你能够经过 Google Cloud 控制台的 APIs & Services 部分进行注册。

Credentials > Domain Verification 下,添加一个域名。在添加完你本身的域名以后,你将被带到 Google 搜索控制。在继续操做以前,按照说明完成对你完整的验证:

配置发布/订阅

使用Google Cloud 发布/订阅,你能够静任务配置为在某些事件上运行,例如,当新日志出如今 Stackdriver 中时,经过添加过滤器你能够限制触发事件的日志类型。你也能够配置服务器端点来订阅这些事件。

要开始导出 SYNC 错误,请输入过滤器 “text:SYNC”,点击 CREATE EXPORT 按钮。在这里,你能够建立一个链接到 Google Cloud 发布/订阅的主题接收器。这将是你可以在每次出现日志条目时处理事件:

在抽屉导航中,打开发布/订阅概述,建立一个新的订阅:

这里,你能够新建一个订阅。对于交付类型,输入用于接收订阅的的 URL。为了进行验证域名验证,你必须拥有本身的服务器:

在你的服务器上,为了接受端点,你须要添加一个处理器。在这个示例中,它是 /alerts/stackdriver。这是你服务器上的一个钩子。Cloud 发布/订阅会向 URL 发送一个在请求体重包含日志数据的 POST 请求。下面的代码片断显示了使用 Node.js 的实现:

app.post('/alerts/stackdriver', (req, res) => {
  console.log('post stackdriver called', req.body);
  res.status(204).send('success');
  if (!!req.body.message && !!req.body.message.data) {
    const data = Buffer.from(req.body.message.data, 'base64')
      .toString('utf8');
    console.log('data: ', data);
    // optionally use regexp here to find request id and failure reason
  }
});
复制代码

咱们如今能够测试这个发布/订阅主题是否有效。在你的智能家居集成中,设置你的 SYNC 回复返回一个无效的设备类型,例如 LART。如下代码片断是这个响应示例:

const app = smarthome();
app.onSync(body => {
  return {
    requestId: body.requestId,
    payload: {
      agentUserId: '123',
      devices: [{
        type: 'action.devices.types.LART' 
        // More metadata
      }]
    }
  }
})
复制代码

当你尝试链接你的帐户时,你会在 Google Assistant 设置中看到一个错误,而后在 StackDriver 中看到与之对应的错误:

在你的服务器中,你也会看到此错误正在被记录。当你遇到此错误时,你能够查看已发送的 SYNC,并肯定该错误来自设备类型的错误。你能够经过修复返回此设备信息的字符串来修复 webhook 中的错误。你能够在如下代码片断中看到更正的内容:

const app = smarthome();
  app.onSync(body => {
    return {
      requestId: body.requestId,
      payload: {
        agentUserId: '123',
        devices: [{
          type: 'action.devices.types.LIGHT'
          // More metadata
        }]
      }
   }
})
复制代码

一旦你开始获取这些错误,你能够作许多事情来提升你的智能家居集成的可靠性,例如添加电子邮件警告或建立常见问题的仪表盘。经过及时发现这些问题并获取正在发生的事件的详细信息,你能够更快、更有信心地进行更正。

若是发现译文存在错误或其余须要改进的地方,欢迎到 掘金翻译计划 对译文进行修改并 PR,也可得到相应奖励积分。文章开头的 本文永久连接 即为本文在 GitHub 上的 MarkDown 连接。


掘金翻译计划 是一个翻译优质互联网技术文章的社区,文章来源为 掘金 上的英文分享文章。内容覆盖 AndroidiOS前端后端区块链产品设计人工智能等领域,想要查看更多优质译文请持续关注 掘金翻译计划官方微博知乎专栏

相关文章
相关标签/搜索