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

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

日志管理器

日志管理器组件 (aws.greengrass.LogManager) 将日志从Amazon IoT Greengrass核心设备上传到 Amazon CloudWatch Logs。您可以上传来自 Greengrass 核心、其他 Greengrass 组件以及不是 Greengrass 组件的其他应用程序和服务的日志。有关如何监视日志和本地文件系统中的 CloudWatch 日志的更多信息,请参阅监控Amazon IoT Greengrass日志

在使用日志管理器组件来写入 Log CloudWatch s 时,请注意以下几点:

  • 记录延迟

    注意

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

    日志管理器组件版本 2.2.8(及更早版本)仅处理和上传来自轮换日志文件的日志。默认情况下,Amazon IoT GreengrassCore 软件每小时轮换一次日志文件,或者在 1,024 KB 之后轮换日志文件。因此,只有在Amazon IoT Greengrass Core 软件或 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一般参考中的签名版本 4 签名流程

有关此组件将日志上传到的日志组和日志流的信息,请参阅用量

版本

此组件有以下版本:

  • 2.3.x

  • 2.2.x

  • 2.1.x

  • 2.0.x

类型

此组件是插件组件 (aws.greengrass.plugin)。Greengrass 核心在与核心相同的 Java 虚拟机 (JVM) 中运行此组件。当你在核心设备上更改此组件的版本时,nucleus 会重新启动。

该组件使用与 Greengrass 核心相同的日志文件。有关更多信息,请参阅监控Amazon IoT Greengrass日志

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

操作系统

此组件可以安装在运行以下操作系统的核心设备上:

  • Linux

  • Windows

要求

此组件具有以下要求:

  • Greengrass 设备角色必须允许logs:CreateLogGrouplogs:CreateLogStreamlogs:PutLogEvents、、和logs:DescribeLogStreams操作,如以下示例 IAM 策略所示。

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

    默认情况下,您在安装Amazon IoT Greengrass核心软件时创建的 Greengrass 设备角色包含此示例策略中的权限。

    有关更多信息,请参阅 A mazon CloudWatch Lo CloudWatch gaks 用户指南中的为 Logs 使用基于身份的策略(IAM 策略)

端点和端口

除了基本操作所需的端点和端口外,此组件还必须能够对以下端点和端口执行出站请求。有关更多信息,请参阅允许设备流量通过代理或防火墙

Endpoint 端口 必填 描述

logs.region.amazonaws.com

443

如果您将日志写入日 CloudWatch 志,则为必填项。

附属物

部署组件时,Amazon IoT Greengrass还会部署其依赖项的兼容版本。这意味着您必须满足组件及其所有依赖项的要求才能成功部署该组件。本节列出了此组件的已发布版本的依赖关系以及为每个依赖项定义组件版本的语义版本限制。您还可以在Amazon IoT Greengrass控制台中查看组件每个版本的依赖关系。在组件详细信息页面上,查找 “依赖关系” 列表。

2.2.8 – 2.3.1

下表列出了此组件版本 2.2.8 到 2.3.1 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.1.0 <3.0 软性
2.2.7

下表列出了此组件版本 2.2.7 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.1.0 <2.9.0 软性
2.2.6

下表列出了此组件版本 2.2.6 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.1.0 <2.8.0 软性
2.2.5

下表列出了此组件版本 2.2.5 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.1.0 <2.7.0 0 软性
2.2.1 - 2.2.4

下表列出了此组件版本 2.2.1-2.2.4 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.1.0 <2.6.0 软性
2.1.3 and 2.2.0

下表列出了此组件版本 2.1.3 和 2.2.0 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.1.0 <2.5.0 软性
2.1.2

下表列出了此组件的版本 2.1.2 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.1.0 <2.0 软性
2.1.1

下表列出了此组件的版本 2.1.1 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.1.0 <2.0 软性
2.1.0

下表列出了此组件的版本 2.1.0 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.1.0 <2.0 软性
2.0.x

下表列出了此组件版本 2.0.x 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.3 <2.1.0 软性

有关组件依赖关系的更多信息,请参阅组件配方参考

配置

此组件提供以下配置参数,您可以在部署组件时对其进行自定义。

v2.3.x
logsUploaderConfiguration

(可选)日志管理器组件上传的日志的配置。此对象包含以下信息:

systemLogsConfiguration

(可选)Amazon IoT Greengrass核心软件系统日志的配置,其中包括来自 Greengrass 核心插件组件的日志。指定此配置以使日志管理器组件能够管理系统日志。此对象包含以下信息:

uploadToCloudWatch

(可选)您可以将系统日志上传到 CloudWatch 日志。

默认值:false

minimumLogLevel

(可选)要上传的日志消息的最低级别。只有将 Greengrass nucleus 组件配置为输出 JSON 格式的日志,此最低级别才适用。要启用 JSON 格式日志,请指定JSON日志格式参数 (logging.format)。

从以下日志级别中选择,此处按级别顺序列出:

  • DEBUG

  • INFO

  • WARN

  • ERROR

默认值:INFO

diskSpaceLimit

(可选)Greengrass 系统日志文件的最大总大小,以您指定的单位为单位diskSpaceLimitUnit。在 Greengrass 系统日志文件的总大小超过此最大总大小后,Amazon IoT GreengrassCore 软件会删除最旧的 Greengrass 系统日志文件。

此参数等同于 Greengrass nucleus 组件的对数大小限制参数 (totalLogsSizeKB)。Amazon IoT GreengrassCore 软件使用两个值中的最小值作为 Greengrass 系统最大总日志大小。

diskSpaceLimitUnit

(可选)的单位diskSpaceLimit。从以下选项中进行选择:

  • KB— 千字节

  • MB— 兆字节

  • GB— 千兆字节

默认值:KB

deleteLogFileAfterCloudUpload

(可选)在日志管理器组件将日志上传到日志后,您可以删除 CloudWatch 日志文件。

默认值:false

componentLogsConfigurationMap

(可选)核心设备上组件的日志配置图。此地图中的每个componentName对象都定义了组件或应用程序的日志配置。日志管理器组件将这些组件日志上传到 CloudWatch 日志。

重要

我们强烈建议每个组件使用单个配置密钥。您应该只将一组文件作为目标,这些文件在使用时只有一个正在写入的日志文件logFileRegex。不遵循此建议可能会导致重复日志上传到 CloudWatch。如果您使用单个正则表达式将多个活动日志文件作为目标,我们建议您升级到 log manager v2.3.1 并考虑使用示例配置更改配置

注意

如果您是从 v2.2.0 之前的日志管理器版本升级,则可以继续使用该componentLogsConfiguration列表代替componentLogsConfigurationMap。不过,强烈建议您使用地图格式,以便可以使用合并和重置更新来修改特定组件的配置。有关componentLogsConfiguration参数的信息,请参阅此组件的 v2.1.x 的配置参数。

componentName

此日志配置的componentName组件或应用程序的日志配置。您可以指定 Greengranizations 组件的名称或其他值来标识此日志组。

每个对象包含以下信息:

minimumLogLevel

(可选)要上传的日志消息的最低级别。只有当该组件的日志使用特定的 JSON 格式时,此最低级别才适用,您可以在Amazon IoT Greengrass日志模块存储库中找到该格式 GitHub。

从以下日志级别中选择,此处按级别顺序列出:

  • DEBUG

  • INFO

  • WARN

  • ERROR

默认值:INFO

diskSpaceLimit

(可选)此组件的所有日志文件的最大总大小,以您在中指定的单位为单位diskSpaceLimitUnit。在该组件的日志文件的总大小超过此最大总大小后,Amazon IoT GreengrassCore 软件会删除该组件最旧的日志文件。

此参数与 Greengrass nucleus 组件的日志大小限制参数 (totalLogsSizeKB) 有关。Amazon IoT GreengrassCore 软件使用这两个值中的最小值作为该组件的最大总日志大小。

diskSpaceLimitUnit

(可选)的单位diskSpaceLimit。从以下选项中进行选择:

  • KB— 千字节

  • MB— 兆字节

  • GB— 千兆字节

默认值:KB

logFileDirectoryPath

(可选)包含此组件日志文件的文件夹的路径。

您无需为打印到标准输出 (stdout) 和标准错误 (stderr) 的 Greengrass 组件指定此参数。

默认值:/greengrass/v2/logs

logFileRegex

(可选)一个正则表达式,它指定组件或应用程序使用的日志文件名格式。日志管理器组件使用此正则表达式来识别位于的文件夹中的日志文件logFileDirectoryPath

您无需为打印到标准输出 (stdout) 和标准错误 (stderr) 的 Greengrass 组件指定此参数。

如果您的组件或应用程序轮换日志文件,请指定与轮换后的日志文件名相匹配的正则表达式。例如,您可以指定hello_world\\w*.log上传 Hello World 应用程序的日志。该\\w*模式匹配零个或多个单词字符,其中包括字母数字字符和下划线。这个正则表达式匹配名称中带有和不带时间戳的日志文件。在此示例中,日志管理器上传以下日志文件:

  • hello_world.log— Hello World 应用程序的最新日志文件。

  • hello_world_2020_12_15_17_0.log— Hello World 应用程序的较早日志文件。

默认:componentName\\w*.log,其中 component Name 是此日志配置的组件名称。

deleteLogFileAfterCloudUpload

(可选)在日志管理器组件将日志上传到日志后,您可以删除 CloudWatch 日志文件。

默认值:false

multiLineStartPattern

(可选)一种正则表达式,用于标识新行上的日志消息何时为新日志消息。如果正则表达式与新行不匹配,则日志管理器组件会将新行附加到前一行的日志消息中。

默认情况下,日志管理器组件检查该行是否以空格字符开头,例如制表符或空格。如果不是,则日志管理器将该行作为新的日志消息处理。否则,它会将该行附加到当前日志消息中。此行为可确保日志管理器组件不会拆分跨越多行的消息,例如堆栈跟踪。

periodicUploadIntervalSec

(可选)日志管理器组件检查要上传的新日志文件的时段(以秒为单位)。

默认值:300(5 分钟)

最小值:1(1 秒)

例 示例:配置合并更新

以下示例配置指定将系统日志和com.example.HelloWorld组件日志上传到日 CloudWatch 志。

{ "logsUploaderConfiguration": { "systemLogsConfiguration": { "uploadToCloudWatch": "true", "minimumLogLevel": "INFO", "diskSpaceLimit": "10", "diskSpaceLimitUnit": "MB", "deleteLogFileAfterCloudUpload": "false" }, "componentLogsConfigurationMap": { "com.example.HelloWorld": { "minimumLogLevel": "INFO", "diskSpaceLimit": "20", "diskSpaceLimitUnit": "MB", "deleteLogFileAfterCloudUpload": "false" } } }, "periodicUploadIntervalSec": "300" }
例 示例:使用日志管理器 v2.3.1 上传多个活动日志文件的配置

如果您要将多个活动日志文件作为目标,则推荐使用以下示例配置。此示例配置指定了要上传到哪些活动日志文件 CloudWatch。使用此配置示例配置还将上传任何与之匹配的旋转文件logFileRegex。日志管理器 v2.3.1 支持此示例配置。

{ "logsUploaderConfiguration": { "componentLogsConfigurationMap": { "com.example.A": { "logFileRegex": "com.example.A\\w*.log", "deleteLogFileAfterCloudUpload": "false" } "com.example.B": { "logFileRegex": "com.example.B\\w*.log", "deleteLogFileAfterCloudUpload": "false" } } }, "periodicUploadIntervalSec": "10" }
v2.2.x
logsUploaderConfiguration

(可选)日志管理器组件上传的日志的配置。此对象包含以下信息:

systemLogsConfiguration

(可选)Amazon IoT Greengrass核心软件系统日志的配置,其中包括来自 Greengrass 核心插件组件的日志。指定此配置以使日志管理器组件能够管理系统日志。此对象包含以下信息:

uploadToCloudWatch

(可选)您可以将系统日志上传到 CloudWatch 日志。

默认值:false

minimumLogLevel

(可选)要上传的日志消息的最低级别。只有将 Greengrass nucleus 组件配置为输出 JSON 格式的日志,此最低级别才适用。要启用 JSON 格式日志,请指定JSON日志格式参数 (logging.format)。

从以下日志级别中选择,此处按级别顺序列出:

  • DEBUG

  • INFO

  • WARN

  • ERROR

默认值:INFO

diskSpaceLimit

(可选)Greengrass 系统日志文件的最大总大小,以您指定的单位为单位diskSpaceLimitUnit。在 Greengrass 系统日志文件的总大小超过此最大总大小后,Amazon IoT GreengrassCore 软件会删除最旧的 Greengrass 系统日志文件。

此参数等同于 Greengrass nucleus 组件的对数大小限制参数 (totalLogsSizeKB)。Amazon IoT GreengrassCore 软件使用两个值中的最小值作为 Greengrass 系统最大总日志大小。

diskSpaceLimitUnit

(可选)的单位diskSpaceLimit。从以下选项中进行选择:

  • KB— 千字节

  • MB— 兆字节

  • GB— 千兆字节

默认值:KB

deleteLogFileAfterCloudUpload

(可选)在日志管理器组件将日志上传到日志后,您可以删除 CloudWatch 日志文件。

默认值:false

componentLogsConfigurationMap

(可选)核心设备上组件的日志配置图。此地图中的每个componentName对象都定义了组件或应用程序的日志配置。日志管理器组件将这些组件日志上传到 CloudWatch 日志。

注意

如果您是从 v2.2.0 之前的日志管理器版本升级,则可以继续使用该componentLogsConfiguration列表代替componentLogsConfigurationMap。不过,强烈建议您使用地图格式,以便可以使用合并和重置更新来修改特定组件的配置。有关componentLogsConfiguration参数的信息,请参阅此组件的 v2.1.x 的配置参数。

componentName

此日志配置的componentName组件或应用程序的日志配置。您可以指定 Greengranizations 组件的名称或其他值来标识此日志组。

每个对象包含以下信息:

minimumLogLevel

(可选)要上传的日志消息的最低级别。只有当该组件的日志使用特定的 JSON 格式时,此最低级别才适用,您可以在Amazon IoT Greengrass日志模块存储库中找到该格式 GitHub。

从以下日志级别中选择,此处按级别顺序列出:

  • DEBUG

  • INFO

  • WARN

  • ERROR

默认值:INFO

diskSpaceLimit

(可选)此组件的所有日志文件的最大总大小,以您在中指定的单位为单位diskSpaceLimitUnit。在该组件的日志文件的总大小超过此最大总大小后,Amazon IoT GreengrassCore 软件会删除该组件最旧的日志文件。

此参数与 Greengrass nucleus 组件的日志大小限制参数 (totalLogsSizeKB) 有关。Amazon IoT GreengrassCore 软件使用这两个值中的最小值作为该组件的最大总日志大小。

diskSpaceLimitUnit

(可选)的单位diskSpaceLimit。从以下选项中进行选择:

  • KB— 千字节

  • MB— 兆字节

  • GB— 千兆字节

默认值:KB

logFileDirectoryPath

(可选)包含此组件日志文件的文件夹的路径。

您无需为打印到标准输出 (stdout) 和标准错误 (stderr) 的 Greengrass 组件指定此参数。

默认值:/greengrass/v2/logs

logFileRegex

(可选)一个正则表达式,它指定组件或应用程序使用的日志文件名格式。日志管理器组件使用此正则表达式来识别位于的文件夹中的日志文件logFileDirectoryPath

您无需为打印到标准输出 (stdout) 和标准错误 (stderr) 的 Greengrass 组件指定此参数。

如果您的组件或应用程序轮换日志文件,请指定与轮换后的日志文件名相匹配的正则表达式。例如,您可以指定hello_world\\w*.log上传 Hello World 应用程序的日志。该\\w*模式匹配零个或多个单词字符,其中包括字母数字字符和下划线。这个正则表达式匹配名称中带有和不带时间戳的日志文件。在此示例中,日志管理器上传以下日志文件:

  • hello_world.log— Hello World 应用程序的最新日志文件。

  • hello_world_2020_12_15_17_0.log— Hello World 应用程序的较早日志文件。

默认:componentName\\w*.log,其中 component Name 是此日志配置的组件名称。

deleteLogFileAfterCloudUpload

(可选)在日志管理器组件将日志上传到日志后,您可以删除 CloudWatch 日志文件。

默认值:false

multiLineStartPattern

(可选)一种正则表达式,用于标识新行上的日志消息何时为新日志消息。如果正则表达式与新行不匹配,则日志管理器组件会将新行附加到前一行的日志消息中。

默认情况下,日志管理器组件检查该行是否以空格字符开头,例如制表符或空格。如果不是,则日志管理器将该行作为新的日志消息处理。否则,它会将该行附加到当前日志消息中。此行为可确保日志管理器组件不会拆分跨越多行的消息,例如堆栈跟踪。

periodicUploadIntervalSec

(可选)日志管理器组件检查要上传的新日志文件的时段(以秒为单位)。

默认值:300(5 分钟)

最小值:1(1 秒)

例 示例:配置合并更新

以下示例配置指定将系统日志和com.example.HelloWorld组件日志上传到日 CloudWatch 志。

{ "logsUploaderConfiguration": { "systemLogsConfiguration": { "uploadToCloudWatch": "true", "minimumLogLevel": "INFO", "diskSpaceLimit": "10", "diskSpaceLimitUnit": "MB", "deleteLogFileAfterCloudUpload": "false" }, "componentLogsConfigurationMap": { "com.example.HelloWorld": { "minimumLogLevel": "INFO", "diskSpaceLimit": "20", "diskSpaceLimitUnit": "MB", "deleteLogFileAfterCloudUpload": "false" } } }, "periodicUploadIntervalSec": "300" }
v2.1.x
logsUploaderConfiguration

(可选)日志管理器组件上传的日志的配置。此对象包含以下信息:

systemLogsConfiguration

(可选)Amazon IoT Greengrass核心软件系统日志的配置,其中包括来自 Greengrass 核心插件组件的日志。指定此配置以使日志管理器组件能够管理系统日志。此对象包含以下信息:

uploadToCloudWatch

(可选)您可以将系统日志上传到 CloudWatch 日志。

默认值:false

minimumLogLevel

(可选)要上传的日志消息的最低级别。只有将 Greengrass nucleus 组件配置为输出 JSON 格式的日志,此最低级别才适用。要启用 JSON 格式日志,请指定JSON日志格式参数 (logging.format)。

从以下日志级别中选择,此处按级别顺序列出:

  • DEBUG

  • INFO

  • WARN

  • ERROR

默认值:INFO

diskSpaceLimit

(可选)Greengrass 系统日志文件的最大总大小,以您指定的单位为单位diskSpaceLimitUnit。在 Greengrass 系统日志文件的总大小超过此最大总大小后,Amazon IoT GreengrassCore 软件会删除最旧的 Greengrass 系统日志文件。

此参数等同于 Greengrass nucleus 组件的对数大小限制参数 (totalLogsSizeKB)。Amazon IoT GreengrassCore 软件使用两个值中的最小值作为 Greengrass 系统最大总日志大小。

diskSpaceLimitUnit

(可选)的单位diskSpaceLimit。从以下选项中进行选择:

  • KB— 千字节

  • MB— 兆字节

  • GB— 千兆字节

默认值:KB

deleteLogFileAfterCloudUpload

(可选)在日志管理器组件将日志上传到日志后,您可以删除 CloudWatch 日志文件。

默认值:false

componentLogsConfiguration

(可选)核心设备上组件的日志配置列表。此列表中的每项配置都定义了组件或应用程序的日志配置。日志管理器组件将这些组件日志上传到 CloudWatch 日志

每个对象包含以下信息:

componentName

此日志配置的组件或应用程序的名称。您可以指定 Greengranizations 组件的名称或其他值来标识此日志组。

minimumLogLevel

(可选)要上传的日志消息的最低级别。只有当该组件的日志使用特定的 JSON 格式时,此最低级别才适用,您可以在Amazon IoT Greengrass日志模块存储库中找到该格式 GitHub。

从以下日志级别中选择,此处按级别顺序列出:

  • DEBUG

  • INFO

  • WARN

  • ERROR

默认值:INFO

diskSpaceLimit

(可选)此组件的所有日志文件的最大总大小,以您在中指定的单位为单位diskSpaceLimitUnit。在该组件的日志文件的总大小超过此最大总大小后,Amazon IoT GreengrassCore 软件会删除该组件最旧的日志文件。

此参数与 Greengrass nucleus 组件的日志大小限制参数 (totalLogsSizeKB) 有关。Amazon IoT GreengrassCore 软件使用这两个值中的最小值作为该组件的最大总日志大小。

diskSpaceLimitUnit

(可选)的单位diskSpaceLimit。从以下选项中进行选择:

  • KB— 千字节

  • MB— 兆字节

  • GB— 千兆字节

默认值:KB

logFileDirectoryPath

(可选)包含此组件日志文件的文件夹的路径。

您无需为打印到标准输出 (stdout) 和标准错误 (stderr) 的 Greengrass 组件指定此参数。

默认值:/greengrass/v2/logs

logFileRegex

(可选)一个正则表达式,它指定组件或应用程序使用的日志文件名格式。日志管理器组件使用此正则表达式来识别位于的文件夹中的日志文件logFileDirectoryPath

您无需为打印到标准输出 (stdout) 和标准错误 (stderr) 的 Greengrass 组件指定此参数。

如果您的组件或应用程序轮换日志文件,请指定与轮换后的日志文件名相匹配的正则表达式。例如,您可以指定hello_world\\w*.log上传 Hello World 应用程序的日志。该\\w*模式匹配零个或多个单词字符,其中包括字母数字字符和下划线。这个正则表达式匹配名称中带有和不带时间戳的日志文件。在此示例中,日志管理器上传以下日志文件:

  • hello_world.log— Hello World 应用程序的最新日志文件。

  • hello_world_2020_12_15_17_0.log— Hello World 应用程序的较早日志文件。

默认:componentName\\w*.log,其中 component Name 是此日志配置的组件名称。

deleteLogFileAfterCloudUpload

(可选)在日志管理器组件将日志上传到日志后,您可以删除 CloudWatch 日志文件。

默认值:false

multiLineStartPattern

(可选)一种正则表达式,用于标识新行上的日志消息何时为新日志消息。如果正则表达式与新行不匹配,则日志管理器组件会将新行附加到前一行的日志消息中。

默认情况下,日志管理器组件检查该行是否以空格字符开头,例如制表符或空格。如果不是,则日志管理器将该行作为新的日志消息处理。否则,它会将该行附加到当前日志消息中。此行为可确保日志管理器组件不会拆分跨越多行的消息,例如堆栈跟踪。

periodicUploadIntervalSec

(可选)日志管理器组件检查要上传的新日志文件的时段(以秒为单位)。

默认值:300(5 分钟)

最小值:1(1 秒)

例 示例:配置合并更新

以下示例配置指定将系统日志和com.example.HelloWorld组件日志上传到日 CloudWatch 志。

{ "logsUploaderConfiguration": { "systemLogsConfiguration": { "uploadToCloudWatch": "true", "minimumLogLevel": "INFO", "diskSpaceLimit": "10", "diskSpaceLimitUnit": "MB", "deleteLogFileAfterCloudUpload": "false" }, "componentLogsConfiguration": [ { "componentName": "com.example.HelloWorld", "minimumLogLevel": "INFO", "diskSpaceLimit": "20", "diskSpaceLimitUnit": "MB", "deleteLogFileAfterCloudUpload": "false" } ] }, "periodicUploadIntervalSec": "300" }
v2.0.x
logsUploaderConfiguration

(可选)日志管理器组件上传的日志的配置。此对象包含以下信息:

systemLogsConfiguration

(可选)Amazon IoT Greengrass核心软件系统日志的配置。指定此配置以使日志管理器组件能够管理系统日志。此对象包含以下信息:

uploadToCloudWatch

(可选)您可以将系统日志上传到 CloudWatch 日志。

默认值:false

minimumLogLevel

(可选)要上传的日志消息的最低级别。只有将 Greengrass nucleus 组件配置为输出 JSON 格式的日志,此最低级别才适用。要启用 JSON 格式日志,请指定JSON日志格式参数 (logging.format)。

从以下日志级别中选择,此处按级别顺序列出:

  • DEBUG

  • INFO

  • WARN

  • ERROR

默认值:INFO

diskSpaceLimit

(可选)Greengrass 系统日志文件的最大总大小,以您指定的单位为单位diskSpaceLimitUnit。在 Greengrass 系统日志文件的总大小超过此最大总大小后,Amazon IoT GreengrassCore 软件会删除最旧的 Greengrass 系统日志文件。

此参数等同于 Greengrass nucleus 组件的对数大小限制参数 (totalLogsSizeKB)。Amazon IoT GreengrassCore 软件使用两个值中的最小值作为 Greengrass 系统最大总日志大小。

diskSpaceLimitUnit

(可选)的单位diskSpaceLimit。从以下选项中进行选择:

  • KB— 千字节

  • MB— 兆字节

  • GB— 千兆字节

默认值:KB

deleteLogFileAfterCloudUpload

(可选)在日志管理器组件将日志上传到日志后,您可以删除 CloudWatch 日志文件。

默认值:false

componentLogsConfiguration

(可选)核心设备上组件的日志配置列表。此列表中的每项配置都定义了组件或应用程序的日志配置。日志管理器组件将这些组件日志上传到 CloudWatch 日志

每个对象包含以下信息:

componentName

此日志配置的组件或应用程序的名称。您可以指定 Greengranizations 组件的名称或其他值来标识此日志组。

minimumLogLevel

(可选)要上传的日志消息的最低级别。只有当该组件的日志使用特定的 JSON 格式时,此最低级别才适用,您可以在Amazon IoT Greengrass日志模块存储库中找到该格式 GitHub。

从以下日志级别中选择,此处按级别顺序列出:

  • DEBUG

  • INFO

  • WARN

  • ERROR

默认值:INFO

diskSpaceLimit

(可选)此组件的所有日志文件的最大总大小,以您在中指定的单位为单位diskSpaceLimitUnit。在该组件的日志文件的总大小超过此最大总大小后,Amazon IoT GreengrassCore 软件会删除该组件最旧的日志文件。

此参数与 Greengrass nucleus 组件的日志大小限制参数 (totalLogsSizeKB) 有关。Amazon IoT GreengrassCore 软件使用这两个值中的最小值作为该组件的最大总日志大小。

diskSpaceLimitUnit

(可选)的单位diskSpaceLimit。从以下选项中进行选择:

  • KB— 千字节

  • MB— 兆字节

  • GB— 千兆字节

默认值:KB

logFileDirectoryPath

包含此组件日志文件的文件夹的路径。

要上传 Greengrass 组件的日志,请指定/greengrass/v2/logs并将 /greengrass/v2 替换为你的 Greengrass 根文件夹。

logFileRegex

用于指定组件或应用程序使用的日志文件名格式的正则表达式。日志管理器组件使用此正则表达式来识别位于的文件夹中的日志文件logFileDirectoryPath

要上传 Greengrass 组件的日志,请指定与轮换日志文件名相匹配的正则表达式。例如,您可以指定com.example.HelloWorld\\w*.log上传 Hello World 组件的日志。该\\w*模式匹配零个或多个单词字符,其中包括字母数字字符和下划线。这个正则表达式匹配名称中带有和不带时间戳的日志文件。在此示例中,日志管理器上传以下日志文件:

  • com.example.HelloWorld.log— Hello World 组件的最新日志文件。

  • com.example.HelloWorld_2020_12_15_17_0.log— Hello World 组件的较早日志文件。Greengrass 核心向日志文件添加了旋转时间戳。

deleteLogFileAfterCloudUpload

(可选)在日志管理器组件将日志上传到日志后,您可以删除 CloudWatch 日志文件。

默认值:false

multiLineStartPattern

(可选)一种正则表达式,用于标识新行上的日志消息何时为新日志消息。如果正则表达式与新行不匹配,则日志管理器组件会将新行附加到前一行的日志消息中。

默认情况下,日志管理器组件检查该行是否以空格字符开头,例如制表符或空格。如果不是,则日志管理器将该行作为新的日志消息处理。否则,它会将该行附加到当前日志消息中。此行为可确保日志管理器组件不会拆分跨越多行的消息,例如堆栈跟踪。

periodicUploadIntervalSec

(可选)日志管理器组件检查要上传的新日志文件的时段(以秒为单位)。

默认值:300(5 分钟)

最小值:1(1 秒)

例 示例:配置合并更新

以下示例配置指定将系统日志和com.example.HelloWorld组件日志上传到日 CloudWatch 志。

{ "logsUploaderConfiguration": { "systemLogsConfiguration": { "uploadToCloudWatch": "true", "minimumLogLevel": "INFO", "diskSpaceLimit": "10", "diskSpaceLimitUnit": "MB", "deleteLogFileAfterCloudUpload": "false" }, "componentLogsConfiguration": [ { "componentName": "com.example.HelloWorld", "minimumLogLevel": "INFO", "logFileDirectoryPath": "/greengrass/v2/logs", "logFileRegex": "com.example.HelloWorld\\w*.log", "diskSpaceLimit": "20", "diskSpaceLimitUnit": "MB", "deleteLogFileAfterCloudUpload": "false" } ] }, "periodicUploadIntervalSec": "300" }

用量

日志管理器组件将上传为以下日志组和日志流中。

2.1.0 and later
日志组名称
/aws/greengrass/componentType/region/componentName

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

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

    • GreengrassSystemComponent— 该组件是 Greengrass 核的一部分。该日志组包含插件组件的日志,这些组件与 Greengrass 核心在同一 JVM 中运行。

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

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

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

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

日志流名称
/date/thing/thingName

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

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

  • thingName— 核心设备的名称。

注意

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

2.0.x
日志组名称
/aws/greengrass/componentType/region/componentName

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

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

    • GreengrassSystemComponent— 该组件是 Greengrass 核的一部分。

    • UserComponent— 此组件不是 Greengrass 核的一部分。日志管理器将这种类型用于设备上的 Greengrass 组件和其他应用程序。

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

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

日志流名称
/date/deploymentTargets/thingName

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

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

  • deploymentTargets— 其部署包括组件的东西。日志管理器组件用斜杠分隔每个目标。如果组件作为本地部署的结果在核心设备上运行,则此值为LOCAL_DEPLOYMENT

    举一个例子,你有一个名为的核心设备MyGreengrassCore,而核心设备有两个部署:

    • 以核心设备为目标的部署MyGreengrassCore

    • 针对名为的事物组的部署MyGreengrassCoreGroup,该事物组包含核心设备。

    这个核心设备是thing/MyGreengrassCore/thinggroup/MyGreengrassCoreGroupdeploymentTargets

  • thingName— 核心设备的名称。

本地日志文件

该组件使用与 Greengrass nucleus 组件相同的日志文件。

Linux
/greengrass/v2/logs/greengrass.log
Windows
C:\greengrass\v2\logs\greengrass.log
查看此组件的日志
  • 在核心设备上运行以下命令以实时查看此组件的日志文件。将 /greengrass/v2C:\greengrass\v2 替换为Amazon IoT Greengrass根文件夹的路径。

    Linux
    sudo tail -f /greengrass/v2/logs/greengrass.log
    Windows (PowerShell)
    Get-Content C:\greengrass\v2\logs\greengrass.log -Tail 10 -Wait

更改日志

下表说明组件的每个版本的更改。

Version

变更

2.3.1

错误修复和改进
  • 修复了以具有多个活动日志文件的文件组为目标的配置将重复条目上传到的问题 CloudWatch。

  • 其他小错误修复和改进。

2.3.0

注意

我们建议您在升级到日志管理器 2.3.0 时升级到 Greengrass nucleus 2.9.1。

新功能

通过处理和直接上传活动日志文件来减少日志延迟,而不是等待新文件轮换。

错误修复和改进
  • 在轮换具有唯一名称的文件时,改进了对日志轮换的支持。

  • 其他小错误修复和改进。

2.2.8

Greengrass nucleus 版本 2.9.0。

2.2.7

Greengrass nucleus 版本 2.8.0。

2.2.6

Greengrass nucleus 版本 2.7.0。

2.2.5

Greengrass nucleus 版本 2.6.0。

2.2.4

错误修复和改进
  • 提高了处理无效配置时的稳定性。

  • 其他小修复和改进。

2.2.3

错误修复和改进
  • 提高了组件重新启动或遇到错误的某些场景下的稳定性。

  • 修复了在某些情况下无法上传大型日志消息和大型日志文件的问题。

  • 修复了此组件如何处理配置重置更新的问题。

  • 修复了nulldiskSpaceLimit配置值阻止组件部署的问题。

2.2.2

错误修复和改进
  • 添加了对大于 256 千字节的日志消息的支持。日志管理器组件将这些大型日志消息拆分成具有相同日志事件时间戳的多条消息。

2.2.1

Greengrass nucleus 版本 2.5.0。0 的版本已更新。

2.2.0

新功能
  • 添加componentLogsConfigurationMap配置参数以支持组件日志配置的映射格式。地图中的每个componentName对象都定义了组件或应用程序的日志配置。

2.1.3

Greengrass nucleus 版本 2.4.0。

2.1.2

Greengrass nucleus 版本 2.3.0。0 的版本已更新。

2.1.1

错误修复和改进
  • 修复了在某些情况下系统日志配置未更新的问题。

2.1.0

错误修复和改进
  • 对打印到标准输出 (stdout)logFileDirectoryPathlogFileRegex标准错误 (stderr) 的 Greengrass 组件使用和的默认值。

  • 将日志上传到 CloudWatch 日志时,通过配置的网络代理正确路由流量。

  • 正确处理日志流名称中的冒号字符 (:)。 CloudWatch 日志日志流名称不支持冒号。

  • 通过从日志流中删除事物组名称来简化日志流名称。

  • 删除在正常行为期间打印的错误日志消息。

2.0.x

初始版本。