1

在使用 AWS 的入门指南进行全新安装时,我没有获取用户日志(在/greengrass/ggc/var/log/user中),这使得无法进行任何 Greengrass lambda 开发。

以下是一些症状:

  • /greengrass/ggc/var/log/user没有被创建(当我手动创建它和它下面的子目录时,user/us-east-1/,greengrassd 吹走所有这些子目录)
  • /greengrass/ggc/var/log/system/localwatch/localwatch.log中有一条消息,failed to list the user log directory, path: /greengrass/ggc/var/log/user
  • runtime.logcrash.log或任何其他系统日志中没有其他错误消息。

我有一堆理论,但我无法证实这一点:

  • 我一直在换掉同一个 RPi 上的 SD 卡,每个都有不同版本的 Raspbian(Jessie、Stretch、不同的内核版本)和不同的 Greengrass 组。这种 SD 卡的交换是否是一个原因(例如,AWS 或他们使用的其他服务(如 overlayFS)正在获取硬件指纹)?在我没有进行此交换的另一个 RPi 上,我似乎没有问题。

  • 组角色的 IAM 设置是否存在问题?我原以为 IAM 仅适用于云服务,而不适用于网关上的 Greengrass 服务。

任何人可能对此有任何见解将不胜感激!!!

4

3 回答 3

1

最终,事实证明这是一个配置错误,但我被 localwatch.log 中的错误消息抛出(正如我在最初的帖子中提到的那样)。

我所做的是设置一些在 RPi 上运行的 lambda 以立即报告(通过 console.logs)正在发生的事情,我将其中两个 lambda 设置为“使这个函数长期存在并使其无限期运行” (在 Greengrass UI 上的“组特定 lambda 配置”中)。因此,每次 Greengrass 守护程序启动时,都会有一些内容进入用户日志。

对于我的第二个 RPi,我手动配置了 lambda,但忘记让它们“长期存在”,因此它们从基于事件开始,因此默认情况下不运行 lambda。当我进入用户日志目录时,我什么也没找到,当我戳到 localwatch.log 时,我收到一条消息 "failed to list the user log directory, path: /greengrass/ggc/var/log/user" ,似乎表明 Greengrass 难以访问用户日志目录结构。这让我大发雷霆。

修复只是进入 GG UI 并将这两个 lambda 设置为长寿命,一旦 lambda 开始运行,就会创建用户日志目录(然后是日志)。

再次感谢 J. Benson 的回复。很高兴看到其他人积极使用 Greengrass,希望我们能够开始建立一个可以互相帮助的用户社区。请注意,我也在 AWS 论坛上发布了此内容,但将其标记为已解决。

于 2018-11-09T19:42:17.670 回答
1

这种事我只发生过一次。对我来说,在新系统上全新安装 GG 和核心有助于并消除所有错误。也就是说,您应该检查控制台中的一个位置以验证是否启用了日志:

- 在 Greengrass 组下,选择该组,然后从那里转到“设置”,您将看到“本地日志配置”。确保您已打开并重新部署以激活。

至于调试 lambda 代码,我推荐使用“ python-lambda-local ”来帮助调试 python 的 lambda 代码。另外,不要忘记其中一些文件位置需要sudo才能查看文件和子文件夹。

于 2018-11-08T20:37:35.533 回答
0

作为更新,如果其他人遇到此问题,我在使用 ggc docker 映像时遇到了同样的错误。因为我真的不想进行全新安装,所以我发现:

 1.Remove all log settings from the greengrass core settings page
 2.Deploy
 3.Remake the settings to match the logs you want to have
 4.Deploy

我不确定中间的第二次部署是否有任何作用,但在这样做之后,我准备好用户文件夹并设置日志工作。

于 2020-01-08T17:41:06.677 回答