监控Amazon IoT Greengrass日志 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

监控Amazon IoT Greengrass日志

Amazon IoT Greengrass 由云服务和 Amazon IoT Greengrass 核心软件组成。Amazon IoT Greengrass核心软件可以将日志写入 Amazon CloudWatch Logs 和核心设备的本地文件系统。在核心设备上运行的 Greengrass 组件也可以将日志写入日志和本地文件 CloudWatch 系统。您可以使用日志来监控事件和排查问题。所有 Amazon IoT Greengrass 日志条目包含时间戳、日志级别和事件相关信息。

默认情况下,Amazon IoT GreengrassCore 软件仅将日志写入本地文件系统。您可以实时查看文件系统日志,因此可以调试自己开发和部署的 Greengrass 组件。您还可以将核心设备配置为将日志写入日 CloudWatch 志,这样您就可以在不访问本地文件系统的情况下对核心设备进行故障排除。有关更多信息,请参阅 启用记录到 CloudWatch 日志

访问文件系统日志

Amazon IoT GreengrassCore 软件将日志存储在核心设备上的/greengrass/v2/logs文件夹中,其中/greengrass/v2是Amazon IoT Greengrass根文件夹的路径。logs 文件夹具有以下结构。

/greengrass/v2 └── logs ├── greengrass.log ├── greengrass_2021_09_14_15_0.log ├── ComponentName.log ├── ComponentName_2021_09_14_15_0.log └── main.log

有关插件、通用组件和 Lambda 组件之间区别的更多信息,请参阅。组件类型

在使用文件系统日志时,请注意以下几点:

  • root 用户权限

    您必须具有根权限才能读取文件系统上的 Amazon IoT Greengrass 日志。

  • 日志文件轮换

    Amazon IoT GreengrassCore 软件每小时或在日志文件超过文件大小限制时轮换日志文件。轮换的日志文件的文件名中包含时间戳。例如,可以命名greengrass_2021_09_14_15_0.log轮换的 Amazon IoT Greengrass Core 软件日志文件。默认文件大小限制为 1,024 KB (1 MB)。你可以在 Greengrass nucleus 组件上配置文件大小限制。

  • 删除日志文件

    当 C Amazon IoT Greengrass ore 软件日志文件或 Greengrass 组件日志文件(包括轮换的日志文件)的大小超过磁盘空间限制时,C Amazon IoT Greengrass ore 软件会清理较早的日志文件。Amazon IoT Greengrass核心软件日志和每个组件日志的默认磁盘空间限制为 10,240 KB (10 MB)。您可以在 Greengrass nucleus 组件或日志管理器组件上配置Amazon IoT Greengrass核心软件日志磁盘空间限制。您可以在日志管理器组件上配置每个组件的日志磁盘空间限制。

查看Amazon IoT Greengrass核心软件日志文件
  • 运行以下命令以实时查看日志文件。/greengrass/v2替换为Amazon IoT Greengrass根文件夹的路径。

    Linux or Unix
    sudo tail -f /greengrass/v2/logs/greengrass.log
    Windows Command Prompt (CMD)
    type C:\greengrass\v2\logs\com.example.HelloWorld.log

    type命令将文件内容写入终端。多次运行此命令以观察文件中的更改。

    PowerShell
    gc C:\greengrass\v2\logs\greengrass.log -Tail 10 -Wait
查看组件的日志文件
  • 运行以下命令以实时查看日志文件。将/greengrass/v2C:\greengrass\v2 替换为Amazon IoT Greengrass根文件夹的路径,然后替换 com.example。 HelloWorld使用组件的名称。

    Linux or Unix
    sudo tail -f /greengrass/v2/logs/com.example.HelloWorld.log
    PowerShell
    gc C:\greengrass\v2\logs\com.example.HelloWorld.log -Tail 10 -Wait

你也可以使用 Greengrass CLI 的logs命令来分析核心设备上的 Greengr ass 日志。要使用该logs命令,必须将 Greengrass nucleus 配置为输出 JSON 格式的日志文件。有关更多信息,请参阅 Greengrass 命令行界面日志

访问 CloudWatch 日志

您可以部署日志管理器组件来配置核心设备以写入 CloudWatch 日志。有关更多信息,请参阅 启用记录到 CloudWatch 日志。然后,您可以在 Amazon CloudWatch 控制台的 “日志” 页面上或使用 CloudWatch 日志 API 查看日志。

日志组名称
/aws/greengrass/componentType/region/componentName

日志组名称使用以下变量:

  • componentType— 组件的类型,可以是以下类型之一:

    • GreengrassSystemComponent— 此日志组包括核心和插件组件的日志,它们与 Greengrass 核心在同一 JVM 中运行。该组件是 Greengrass 核的一部分。

    • UserComponent— 此日志组包括设备上通用组件、Lambda 组件和其他应用程序的日志。该组件不是 Greengrass 核的一部分。

    有关更多信息,请参阅 组件类型

  • region— 核心设备使用的Amazon区域。

  • componentName— 组件的名称。对于系统日志,此值为System

日志流名称
/date/thing/thingName

日志流名称使用以下变量:

  • date— 日志的日期,例如2020/12/15。日志管理器组件使用该yyyy/MM/dd格式。

  • thingName— 核心设备的名称。

注意

如果事物名称包含冒号 (:),则日志管理器会将冒号替换为加号 (+)。

使用日志管理器组件写入日志时,需要考虑以下注意事项: CloudWatch

  • 日志延迟

    注意

    我们建议您升级到日志管理器版本 2.3.0,该版本可减少轮换和活动日志文件的日志延迟。当你升级到日志管理器 2.3.0 时,我们建议你同时升级到 Greengrass nucleus 2.9.1。

    日志管理器组件版本 2.2.8(及更早版本)仅处理和上传轮换日志文件中的日志。默认情况下,Amazon IoT GreengrassCore 软件每小时或在 1,024 KB 之后轮换一次日志文件。因此,只有在 C Amazon IoT Greengrass ore 软件或 Greengrass 组件写入价值超过 1,024 KB 的日志之后,日志管理器组件才会上传日志。您可以配置较低的日志文件大小限制,以使日志文件更频繁地轮换。这会导致日志管理器组件更频繁地将 CloudWatch 日志上传到日志。

    日志管理器组件版本 2.3.0(及更高版本)处理并上传所有日志。当您写入新日志时,日志管理器版本 2.3.0(及更高版本)会处理并直接上传该活动日志文件,而不是等待其轮换。这意味着您可以在 5 分钟或更短的时间内查看新日志。

    日志管理器组件会定期上传新日志。默认情况下,日志管理器组件每 5 分钟上传一次新日志。您可以配置较低的上传间隔,以便日志管理器组件通过配置来更频繁地将 CloudWatch 日志上传到日志。periodicUploadIntervalSec有关如何配置此周期间隔的更多信息,请参阅配置

    日志可以近乎实时地从同一 Greengrass 文件系统上传。如果您需要实时观察日志,请考虑使用文件系统日志

    注意

    如果您使用不同的文件系统写入日志,则日志管理器会恢复到日志管理器组件版本 2.2.8 及更早版本中的行为。有关访问文件系统日志的信息,请参阅访问文件系统日志

  • 时钟偏差

    日志管理器组件使用标准的签名版本 4 签名流程来创建对 CloudWatch 日志的 API 请求。如果核心设备上的系统时间不同步超过 15 分钟,则 CloudWatch Logs 会拒绝请求。有关更多信息,请参阅《Amazon Web Services 一般参考》中的签名版本 4 签名流程

访问系统服务日志

如果您将 Amazon IoT Greengrass Core 软件配置为系统服务,则可以查看系统服务日志以解决问题,例如软件无法启动。

查看系统服务日志 (CLI)
  1. 运行以下命令查看Amazon IoT Greengrass核心软件系统服务日志。

    Linux or Unix (systemd)
    sudo journalctl -u greengrass.service
    Windows Command Prompt (CMD)
    type C:\greengrass\v2\logs\greengrass.wrapper.log
    PowerShell
    gc C:\greengrass\v2\logs\greengrass.wrapper.log
  2. 在 Windows 设备上,Amazon IoT GreengrassCore 软件会为系统服务错误创建单独的日志文件。运行以下命令查看系统服务错误日志。

    Windows Command Prompt (CMD)
    type C:\greengrass\v2\logs\greengrass.err.log
    PowerShell
    gc C:\greengrass\v2\logs\greengrass.err.log

在 Windows 设备上,您还可以使用事件查看器应用程序来查看系统服务日志。

查看 Windows 服务日志(事件查看器)
  1. 打开事件查看器应用程序。

  2. 选择 Windows 日志将其展开。

  3. 选择应用程序以查看应用程序服务日志。

  4. 查找并打开来源为的事件日志greengrass

启用记录到 CloudWatch 日志

您可以部署日志管理器组件来配置核心设备以将日志写入日 CloudWatch 志。您可以为Amazon IoT Greengrass核心软件 CloudWatch 日志启用日志,也可以为特定 Greengrass 组件启用 CloudWatch 日志。

注意

Greengrass 核心设备的令牌交换角色必须允许核心设备写入 CloudWatch 日志,如以下示例 IAM 策略所示。如果您安装了具有自动资源配置功能的 Amazon IoT Greengrass Core 软件,则您的核心设备具有这些权限。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Effect": "Allow", "Resource": "arn:aws:logs:*:*:*" } ] }

要将核心设备配置为将Amazon IoT Greengrass核心软件日志写入 CloudWatch 日志,请创建一个部署,为该aws.greengrass.LogManager组件指定设置uploadToCloudWatchtrue为的配置更新。 Amazon IoT Greengrass核心软件日志包括 Greengrass 核心和插件组件的日志。

{ "logsUploaderConfiguration": { "systemLogsConfiguration": { "uploadToCloudWatch": "true" } } }

要将核心设备配置为将 Greengrass 组件的日志写入日志, CloudWatch 请创建一个指定配置更新的部署,将该组件添加到组件日志配置列表中。当您将组件添加到此列表时,日志管理器组件会将其日志写入 CloudWatch 日志。组件日志包括通用组件和 Lambda 组件的日志。

{ "logsUploaderConfiguration": { "componentLogsConfigurationMap": { "com.example.HelloWorld": { } } } }

部署日志管理器组件时,还可以配置磁盘空间限制,以及核心设备是否在将日志文件写入 CloudWatch 日志后将其删除。有关更多信息,请参阅 为 Amazon IoT Greengrass 配置日志记录

为 Amazon IoT Greengrass 配置日志记录

您可以配置以下选项来自定义 Greengrass 核心设备的日志记录。要配置这些选项,请创建一个部署,以指定 Greengrass 核心或日志管理器组件的配置更新。

  • 将日志写入 CloudWatch 日志

    要对核心设备进行远程故障排除,您可以将核心设备配置为将Amazon IoT Greengrass核心软件和组件日志写入 CloudWatch 日志。为此,请部署和配置日志管理器组件。有关更多信息,请参阅 启用记录到 CloudWatch 日志

  • 删除上传的日志文件

    为了减少磁盘空间使用量,您可以将核心设备配置为在将日志文件写入日志后删除 CloudWatch 日志文件。有关更多信息,请参阅日志管理器组件的deleteLogFileAfterCloudUpload参数,您可以为Amazon IoT Greengrass核心软件日志和组件日志指定该参数。

  • 日志磁盘空间限制

    要限制磁盘空间的使用,可以在核心设备上为每个日志(包括其轮换的日志文件)配置最大磁盘空间。例如,您可以为greengrass.log和轮换greengrass.log的文件配置最大组合磁盘空间。有关更多信息,请参阅 Greengrass nucleus 组件logging.totalLogsSizeKB的参数和日志管理器组件diskSpaceLimit的参数,您可以Amazon IoT Greengrass为核心软件日志和组件日志指定这些参数。

  • 日志文件大小限制

    您可以为每个日志文件配置最大文件大小。日志文件超过此文件大小限制后,Amazon IoT GreengrassCore 软件会创建一个新的日志文件。日志管理器组件版本 2.28(及更早版本)仅将轮换的日志文件写入 CloudWatch 日志,因此您可以指定较低的文件大小限制,以便更频繁地将日志写入 CloudWatch 日志。日志管理器组件版本 2.3.0(及更高版本)会处理和上传所有日志,而不是等待轮换。有关更多信息,请参阅 Greengrass nucleus 组件的日志文件大小限制参数 ()。logging.fileSizeKB

  • 最低日志级别

    您可以配置 Greengrass nucleus 组件写入文件系统日志的最低日志级别。例如,您可以指定DEBUG级别日志来帮助进行故障排除,也可以指定ERROR级别日志以减少核心设备创建的日志量。有关更多信息,请参阅 Greengrass nucleus 组件的日志级别参数 ()。 logging.level

    您还可以配置日志管理器组件写入日志的最低 CloudWatch 日志级别。例如,您可以指定更高的日志级别以降低日志成本。有关更多信息,请参阅日志管理器组件的minimumLogLevel参数,您可以为Amazon IoT Greengrass核心软件日志和组件日志指定该参数。

  • 检查要写入日志的日志的时间间隔 CloudWatch

    要增加或减少日志管理器组件将日志写入日志的频率,您可以配置它检查要写入的新日志文件的间隔。 CloudWatch 例如,与默认的 5 分钟间隔相比,您可以指定更短的时间间隔来查看 CloudWatch 日志中的日志。您可以指定更高的间隔以降低成本,因为日志管理器组件会将日志文件批处理成更少的请求。有关更多信息,请参阅日志管理器组件的上传间隔参数 (periodicUploadIntervalSec)。

  • 日志格式

    您可以选择 C Amazon IoT Greengrass ore 软件是以文本格式还是 JSON 格式写入日志。如果您阅读日志,请选择文本格式;如果您使用应用程序读取或解析日志,则选择 JSON 格式。有关更多信息,请参阅 Greengrass nucleus 组件的日志格式参数 ()。 logging.format

  • 本地文件系统日志文件夹

    您可以在核心设备上将日志文件夹从更改/greengrass/v2/logs为另一个文件夹。有关更多信息,请参阅 Greengrass nucleus 组件的输出目录参数 ()。 logging.outputDirectory

Amazon CloudTrail日志

Amazon IoT Greengrass与Amazon CloudTrail一项服务集成,该服务提供用户、角色或Amazon Web Service中的操作记录Amazon IoT Greengrass。有关更多信息,请参阅 使用记录 Amazon IoT Greengrass V2 API 调用 Amazon CloudTrail