【问题标题】:AWS Greengrass does not generate user logsAWS Greengrass 不生成用户日志
【发布时间】:2019-04-11 11:25:39
【问题描述】:

在使用 AWS 的 getting started guide 进行全新安装时,我没有获取用户日志(在 /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 服务。

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

【问题讨论】:

    标签: aws-iot greengrass


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的建议,J. Benson。我设法解决了这个问题,我将作为答案单独发布,但想就您的建议回复您。是的,我确实设置了“本地日志配置”来输出系统和用户日志,并重新部署(多次)。这曾经在我的第二个 RPi 上很好地工作(但在我的第一个 RPi 上继续正常工作)。就我而言,我使用的是 NodeJS,而不是 Python,所以我不确定是否有等效的调试功能。我在很大程度上依赖用户日志来输出控制台。* 消息来解决我的代码。
    • @Jason-Choon,至于您在下面的帖子。我把一切都写出来。在我的用例中,我可以创建 greengrass 组,以及 n 台设备,包括订阅、证书和所有内容。这花了一些时间,但非常值得。我创建了自己的特定内容,但发现亚马逊的 [ELF] (github.com/aws-samples/aws-iot-elf) 项目也很有帮助。
    【解决方案2】:

    最终,事实证明这是一个配置错误,但我被 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 并将这两个 lambdas 设置为长寿命,一旦 lambdas 开始运行,就会创建用户日志目录(然后是随后的日志)。

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

    【讨论】:

    • 作为旁注。我发现配置 GG lambdas 有点容易出错。要配置的东西太多了,所以我经常忘记一些事情并犯错误(比如设置“长寿命”的 lambda、订阅、资源和权限等)。如果您将 Greengrass 用于涉及许多网关(如 Raspberry Pis)的应用程序,您最终将需要自动化部署过程来犯这些错误。这是一个复杂的野兽,因为您需要导航 Greengrass API!!!
    【解决方案3】:

    如果其他人遇到此问题,作为更新,我在使用 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
    

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

    【讨论】:

      猜你喜欢
      • 2021-07-20
      • 2019-09-08
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多