在使用AWS getting started guide进行的全新安装中,我没有得到用户日志(在 / greengrass / ggc / var / log / user 中),这使得做任何Greengrass lambda开发。
以下是一些症状:
failed to list the user log directory, path:
/greengrass/ggc/var/log/user
我有很多理论,但我无法证实这一点:
我一直在交换相同RPi上的SD卡,每个SD卡上都有不同版本的Raspbian(Jessie,Stretch,不同的内核版本)和不同的Greengrass组。 SD卡的这种交换是否可能是原因(例如,AWS或它们使用的某些其他服务(例如overlayFS)带有硬件指纹)?在另一个我没有进行此交换的RPi上,我似乎没有问题。
组角色的IAM设置是否存在问题?我本以为IAM仅适用于云服务,不适用于网关上的Greengrass服务。
任何人对此有任何见解将不胜感激!!!
答案 0 :(得分:0)
我只发生过一次这种事。对我而言,在新系统上全新安装GG和内核有助于并消除了所有错误。也就是说,控制台中有一个地方应检查以验证是否已启用日志:
-在“ Greengrass组”下,选择组,然后从那里转到“设置”,您将看到“本地日志配置”。确保已启用这些功能,然后重新部署以进行激活。
至于调试lambda代码,我建议使用“ python-lambda-local”来帮助调试python的lambda代码。另外,请不要忘记其中某些文件位置需要 sudo 才能查看文件和子文件夹。
答案 1 :(得分:0)
最终,这是一个配置错误,但是我被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论坛上,但将其标记为已解决。
答案 2 :(得分: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
我不确定中间的第二个部署是否有任何作用,但是在执行此操作之后,我已经准备好用户文件夹并设置了工作日志。