日志管理器 - AWS IoT Greengrass

日志管理器

警告

我们建议升级到日志管理器 v2.3.5 或更高版本。版本 2.3.5 优化了日志管理器配置写入,减少了 IO 操作,提高了日志上传速度和设备整体性能,并可能延长设备寿命。

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

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

  • 日志延迟

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

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

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

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

    注意

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

  • 时钟偏差

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

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

版本

此组件具有以下版本:

  • 2.3.x

  • 2.2.x

  • 2.1.x

  • 2.0.x

类型

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

此组件使用与 Greengrass Nucleus 相同的日志文件。有关更多信息,请参阅 监控 AWS IoT Greengrass 日志

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

操作系统

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

  • Linux

  • Windows

要求

此组件具有以下要求:

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

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

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

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

  • 日志管理器组件支持在 VPC 中运行。要在 VPC 中部署此组件,需要满足以下条件。

    • 日志管理器组件必须连接至 VPC 端点为 com.amazonaws.us-east-1.logslogs.region.amazonaws.com

端点和端口

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

Endpoint 端口 必需 描述

logs.region.amazonaws.com

443

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

依赖项

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

2.3.8

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.1.0 <2.14.0 软性
2.3.7

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.1.0 <2.13.0 软性
2.3.5 and 2.3.6

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.1.0 <2.12.0 软性
2.3.3 – 2.3.4

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.1.0 <2.11.0 软性
2.2.8 – 2.3.2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

配置

此组件提供您可以在部署组件时自定义的以下配置参数。

v2.3.6 – v2.3.7
logsUploaderConfiguration

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

systemLogsConfiguration

(可选)AWS IoT Greengrass Core 软件系统日志的配置,其中包括来自 Greengrass Nucleus插件组件的日志。指定此配置以允许日志管理器组件管理系统日志。该对象包含以下信息:

uploadToCloudWatch

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

默认:false

minimumLogLevel

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

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

  • DEBUG

  • INFO

  • WARN

  • ERROR

默认:INFO

diskSpaceLimit

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

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

diskSpaceLimitUnit

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

  • KB – 千字节

  • MB – 兆字节

  • GB – 千兆字节

默认:KB

deleteLogFileAfterCloudUpload

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

默认:false

componentLogsConfigurationMap

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

重要

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

注意

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

componentName

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

每个对象包含以下信息:

minimumLogLevel

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

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

  • DEBUG

  • INFO

  • WARN

  • ERROR

默认:INFO

diskSpaceLimit

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

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

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,其中 componentName 是此日志配置的组件的名称。

deleteLogFileAfterCloudUpload

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

默认:false

multiLineStartPattern

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

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

periodicUploadIntervalSec

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

默认值:300(5 分钟)

最小值:0.000001(1 微秒)

deprecatedVersionSupport

指示日志管理器是否应使用日志管理器 v2.3.5 中引入的日志记录速度改进。将值设置为 false 以使用改进。

如果从日志管理器 v2.3.1 或更早版本升级时将此值设置为 false,可能会上传重复的日志条目。

默认为 true

例 示例:配置合并更新

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

{ "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", "deprecatedVersionSupport": "false" }
例 示例:使用日志管理器 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.3.x
logsUploaderConfiguration

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

systemLogsConfiguration

(可选)AWS IoT Greengrass Core 软件系统日志的配置,其中包括来自 Greengrass Nucleus插件组件的日志。指定此配置以允许日志管理器组件管理系统日志。该对象包含以下信息:

uploadToCloudWatch

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

默认:false

minimumLogLevel

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

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

  • DEBUG

  • INFO

  • WARN

  • ERROR

默认:INFO

diskSpaceLimit

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

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

diskSpaceLimitUnit

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

  • KB – 千字节

  • MB – 兆字节

  • GB – 千兆字节

默认:KB

deleteLogFileAfterCloudUpload

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

默认:false

componentLogsConfigurationMap

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

重要

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

注意

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

componentName

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

每个对象包含以下信息:

minimumLogLevel

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

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

  • DEBUG

  • INFO

  • WARN

  • ERROR

默认:INFO

diskSpaceLimit

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

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

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,其中 componentName 是此日志配置的组件的名称。

deleteLogFileAfterCloudUpload

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

默认:false

multiLineStartPattern

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

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

periodicUploadIntervalSec

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

默认值:300(5 分钟)

最小值:0.000001(1 微秒)

例 示例:配置合并更新

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

{ "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

(可选)AWS IoT Greengrass Core 软件系统日志的配置,其中包括来自 Greengrass Nucleus插件组件的日志。指定此配置以允许日志管理器组件管理系统日志。该对象包含以下信息:

uploadToCloudWatch

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

默认:false

minimumLogLevel

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

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

  • DEBUG

  • INFO

  • WARN

  • ERROR

默认:INFO

diskSpaceLimit

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

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

diskSpaceLimitUnit

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

  • KB – 千字节

  • MB – 兆字节

  • GB – 千兆字节

默认:KB

deleteLogFileAfterCloudUpload

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

默认:false

componentLogsConfigurationMap

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

注意

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

componentName

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

每个对象包含以下信息:

minimumLogLevel

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

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

  • DEBUG

  • INFO

  • WARN

  • ERROR

默认:INFO

diskSpaceLimit

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

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

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,其中 componentName 是此日志配置的组件的名称。

deleteLogFileAfterCloudUpload

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

默认:false

multiLineStartPattern

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

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

periodicUploadIntervalSec

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

默认值:300(5 分钟)

最小值:0.000001(1 微秒)

例 示例:配置合并更新

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

{ "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

(可选)AWS IoT Greengrass Core 软件系统日志的配置,其中包括来自 Greengrass Nucleus插件组件的日志。指定此配置以允许日志管理器组件管理系统日志。该对象包含以下信息:

uploadToCloudWatch

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

默认:false

minimumLogLevel

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

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

  • DEBUG

  • INFO

  • WARN

  • ERROR

默认:INFO

diskSpaceLimit

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

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

diskSpaceLimitUnit

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

  • KB – 千字节

  • MB – 兆字节

  • GB – 千兆字节

默认:KB

deleteLogFileAfterCloudUpload

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

默认:false

componentLogsConfiguration

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

每个对象包含以下信息:

componentName

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

minimumLogLevel

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

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

  • DEBUG

  • INFO

  • WARN

  • ERROR

默认:INFO

diskSpaceLimit

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

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

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,其中 componentName 是此日志配置的组件的名称。

deleteLogFileAfterCloudUpload

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

默认:false

multiLineStartPattern

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

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

periodicUploadIntervalSec

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

默认值:300(5 分钟)

最小值:0.000001(1 微秒)

例 示例:配置合并更新

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

{ "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

(可选)AWS IoT Greengrass Core 软件系统日志的配置。指定此配置以允许日志管理器组件管理系统日志。该对象包含以下信息:

uploadToCloudWatch

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

默认:false

minimumLogLevel

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

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

  • DEBUG

  • INFO

  • WARN

  • ERROR

默认:INFO

diskSpaceLimit

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

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

diskSpaceLimitUnit

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

  • KB – 千字节

  • MB – 兆字节

  • GB – 千兆字节

默认:KB

deleteLogFileAfterCloudUpload

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

默认:false

componentLogsConfiguration

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

每个对象包含以下信息:

componentName

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

minimumLogLevel

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

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

  • DEBUG

  • INFO

  • WARN

  • ERROR

默认:INFO

diskSpaceLimit

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

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

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 Nucleus 向日志文件中添加轮换时间戳。

deleteLogFileAfterCloudUpload

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

默认:false

multiLineStartPattern

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

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

periodicUploadIntervalSec

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

默认值:300(5 分钟)

最小值:0.000001(1 微秒)

例 示例:配置合并更新

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

{ "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 Nucleus 在同一 JVM 中运行。组件是 Greengrass Nucleus 的一部分。

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

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

  • region – 核心设备使用的 AWS 区域。

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

日志流名称
/date/thing/thingName

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

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

  • thingName – 核心设备名称。

注意

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

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

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

  • componentType – 组件的类型,可以为以下类型之一:

    • GreengrassSystemComponent – 组件是 Greengrass Nucleus 的一部分。

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

  • region – 核心设备使用的 AWS 区域。

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

日志流名称
/date/deploymentTargets/thingName

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

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

  • deploymentTargets – 部署内容包含组件的事物。日志管理器组件用斜杠分隔每个目标。如果在本地部署后组件在核心设备上运行,则此值为 LOCAL_DEPLOYMENT

    考虑一个示例,有一个名为 MyGreengrassCore 的核心设备,且该核心设备有两个部署:

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

    • 一个以名为 MyGreengrassCoreGroup 的事物组(其中包含核心设备)为目标的部署。

    此核心设备的 deploymentTargetsthing/MyGreengrassCore/thinggroup/MyGreengrassCoreGroup

  • thingName – 核心设备名称。

日志条目的格式。

Greengrass Nucleus 以字符串或 JSON 格式写入日志文件。对于系统日志,您可以通过设置 logging 条目的 format 字段来控制格式。您可以在 Greengrass Nucleus 组件的配置文件中找到 logging 条目。有关更多信息,请参阅 Greengrass Nucleus 配置

文本格式为自由格式,接受任何字符串。以下实例集状态服务消息是字符串格式日志记录的示例:

2023-03-26T18:18:27.271Z [INFO] (pool-1-thread-2) com.aws.greengrass.status.FleetStatusService: fss-status-update-published. Status update published to FSS. {trigger=CADENCE, serviceName=FleetStatusService, currentState=RUNNING}

如果要使用 Greengrass CLI 日志命令查看日志或以编程方式与日志交互,则应使用 JSON 格式。以下示例概述了 JSON 形状:

{ "loggerName": <string>, "level": <"DEBUG" | "INFO" | "ERROR" | "TRACE" | "WARN">, "eventType": <string, optional>, "cause": <string, optional>, "contexts": {}, "thread": <string>, "message": <string>, "timestamp": <epoch time> # Needs to be epoch time }

要控制组件日志的输出,可以使用 minimumLogLevel 配置选项。要使用此选项,您的组件必须以 JSON 格式写入其日志条目。您应使用与系统日志文件相同的格式。

本地日志文件

此组件使用与 Greengrass Nucleus 组件相同的日志文件。

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

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

更改日志

下表介绍每个组件版本的更改。

版本

更改

2.3.8

对 Greengrass Nucleus 版本 2.13.0 发行版进行了版本更新。

2.3.7

版本更新为 Greengrass Nucleus 版本 2.12.0 发布版。

2.3.6

错误修复和改进
  • 调整某些错误的日志级别。

2.3.5

改进

提高了日志上传速度。

版本更新为 Greengrass Nucleus 版本 2.11.0 发布版。

2.3.4

错误修复和改进
  • 支持将 periodicUploadIntervalSec 参数设置为小数值。最小值为 1 微秒。

  • 修复了以下问题:日志管理器不遵守 CloudWatch putLogEvents 限制。

2.3.3

版本更新为 Greengrass Nucleus 版本 2.10.0 发布版。

2.3.2

错误修复和改进
  • 改进了空间管理,使日志文件在上传前不会被删除。

  • 修复了缓存管理问题。

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

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

错误修复和改进
  • 提高了在组件重启或遇到错误的特定情况下的稳定性。

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

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

  • 修复了 null diskSpaceLimit 配置值导致组件无法部署的问题。

2.2.2

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

2.2.1

版本更新为 Greengrass Nucleus 版本 2.5.0 发布版。

2.2.0

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

2.1.3

版本更新为 Greengrass Nucleus 版本 2.4.0 发布版。

2.1.2

版本更新为 Greengrass Nucleus 版本 2.3.0 发布版。

2.1.1

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

2.1.0

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

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

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

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

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

2.0.x

初始版本。