日志管理器
我们建议升级到日志管理器 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 签名流程。
有关此组件向其上传日志的日志组和日志流的信息,请参阅 使用量。
版本
此组件具有以下版本:
类型
此组件是一个插件组件 (aws.greengrass.plugin
)。Greengrass Nucleus 在与该 Nucleus 相同的 Java 虚拟机(JVM)中运行该组件。当您在核心设备上更改此组件的版本时,Nucleus 会重新启动。
此组件使用与 Greengrass Nucleus 相同的日志文件。有关更多信息,请参阅 监控 AWS IoT Greengrass 日志。
有关更多信息,请参阅 组件类型。
操作系统
要求
此组件具有以下要求:
-
Greengrass 设备角色必须允许执行 logs:CreateLogGroup
、logs:CreateLogStream
、logs: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 CloudWatch Logs 用户指南》中的为 CloudWatch Logs 使用基于身份的策略(IAM 策略)。
-
日志管理器组件支持在 VPC 中运行。要在 VPC 中部署此组件,需要满足以下条件。
端点和端口
除基本操作所需的端点和端口外,此组件还必须能够对以下端点和端口执行出站请求。有关更多信息,请参阅 允许设备流量通过代理或防火墙。
Endpoint |
端口 |
必需 |
描述 |
logs.region .amazonaws.com
|
443 |
否 |
如果将日志写入 CloudWatch Logs,则为必填项。
|
依赖项
在您部署组件时,AWS IoT Greengrass 也会部署其依赖关系的兼容版本。这意味着您必须满足组件及其所有依赖关系的要求,才能成功部署组件。本部分列出了此组件的已发布版本的依赖关系,以及定义每个依赖关系的组件版本的语义版本约束。您还可以在 AWS IoT Greengrass 控制台中查看每个组件版本的依赖关系。在组件详细信息页面上,查找依赖关系列表。
- 2.3.8
-
下表列出了此组件的版本 2.3.8 的依赖关系。
- 2.3.7
-
下表列出了此组件的版本 2.3.7 的依赖关系。
- 2.3.5 and 2.3.6
-
下表列出了此组件的版本 2.3.5 和 2.3.6 的依赖关系。
- 2.3.3 – 2.3.4
-
下表列出了此组件的版本 2.3.3 到 2.3.4 的依赖关系。
- 2.2.8 – 2.3.2
-
下表列出了此组件的版本 2.2.8 到 2.3.2 的依赖关系。
- 2.2.7
-
下表列出了此组件版本 2.2.7 的依赖关系。
- 2.2.6
-
下表列出了此组件版本 2.2.6 的依赖关系。
- 2.2.5
-
下表列出了此组件版本 2.2.5 的依赖关系。
- 2.2.1 - 2.2.4
-
下表列出了此组件的版本 2.2.1 至 2.2.4 的依赖关系。
- 2.1.3 and 2.2.0
-
下表列出了此组件的版本 2.1.3 和 2.2.0 的依赖关系。
- 2.1.2
-
下表列出了此组件的版本 2.1.2 的依赖关系。
- 2.1.1
-
下表列出了此组件的版本 2.1.1 的依赖关系。
- 2.1.0
-
下表列出了此组件版本 2.1.0 的依赖关系。
- 2.0.x
-
下表列出了此组件的版本 2.0.x 的依赖关系。
有关组件依赖关系的更多信息,请参阅组件配方参考。
配置
此组件提供您可以在部署组件时自定义的以下配置参数。
- 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
。
从以下日志级别中选择,此处按级别顺序列出:
默认: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 日志记录模块存储库中找到该格式。
从以下日志级别中选择,此处按级别顺序列出:
默认: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*
模式匹配零个或多个单词字符,其中包括字母数字字符和下划线。此正则表达式匹配名称中带有时间戳和不带时间戳的日志文件。在此示例中,日志管理器将上传以下日志文件:
默认值: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
。
从以下日志级别中选择,此处按级别顺序列出:
默认: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 日志记录模块存储库中找到该格式。
从以下日志级别中选择,此处按级别顺序列出:
默认: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*
模式匹配零个或多个单词字符,其中包括字母数字字符和下划线。此正则表达式匹配名称中带有时间戳和不带时间戳的日志文件。在此示例中,日志管理器将上传以下日志文件:
默认值: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
。
从以下日志级别中选择,此处按级别顺序列出:
默认: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 日志记录模块存储库中找到该格式。
从以下日志级别中选择,此处按级别顺序列出:
默认: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*
模式匹配零个或多个单词字符,其中包括字母数字字符和下划线。此正则表达式匹配名称中带有时间戳和不带时间戳的日志文件。在此示例中,日志管理器将上传以下日志文件:
默认值: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
。
从以下日志级别中选择,此处按级别顺序列出:
默认: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 日志记录模块存储库中找到该格式。
从以下日志级别中选择,此处按级别顺序列出:
默认: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*
模式匹配零个或多个单词字符,其中包括字母数字字符和下划线。此正则表达式匹配名称中带有时间戳和不带时间戳的日志文件。在此示例中,日志管理器将上传以下日志文件:
默认值: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
。
从以下日志级别中选择,此处按级别顺序列出:
默认: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 日志记录模块存储库中找到该格式。
从以下日志级别中选择,此处按级别顺序列出:
默认: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*
模式匹配零个或多个单词字符,其中包括字母数字字符和下划线。此正则表达式匹配名称中带有时间戳和不带时间戳的日志文件。在此示例中,日志管理器将上传以下日志文件:
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
日志组名称使用以下变量:
- 日志流名称
-
/date
/thing/thingName
日志流名称使用以下变量:
如果事物名称包含冒号 (:
),则日志管理器会将冒号替换为加号 (+
)。
- 2.0.x
-
- 日志组名称
-
/aws/greengrass/componentType
/region
/componentName
日志组名称使用以下变量:
- 日志流名称
-
/date
/deploymentTargets
/thingName
日志流名称使用以下变量:
-
date
– 日志的日期,例如 2020/12/15
。日志管理器组件使用 yyyy/MM/dd
格式。
-
deploymentTargets
– 部署内容包含组件的事物。日志管理器组件用斜杠分隔每个目标。如果在本地部署后组件在核心设备上运行,则此值为 LOCAL_DEPLOYMENT
。
考虑一个示例,有一个名为 MyGreengrassCore
的核心设备,且该核心设备有两个部署:
此核心设备的 deploymentTargets
是 thing/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
更改日志
下表介绍每个组件版本的更改。
版本
|
更改
|
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
|
|
2.3.3
|
版本更新为 Greengrass Nucleus 版本 2.10.0 发布版。
|
2.3.2
|
- 错误修复和改进
-
-
改进了空间管理,使日志文件在上传前不会被删除。
-
修复了缓存管理问题。
-
其他小型错误修复和改进。
|
2.3.1
|
|
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
|
|
2.2.2
|
|
2.2.1
|
版本更新为 Greengrass Nucleus 版本 2.5.0 发布版。
|
2.2.0
|
|
2.1.3
|
版本更新为 Greengrass Nucleus 版本 2.4.0 发布版。
|
2.1.2
|
版本更新为 Greengrass Nucleus 版本 2.3.0 发布版。
|
2.1.1
|
|
2.1.0
|
- 错误修复和改进
-
-
使用 logFileDirectoryPath 和 logFileRegex 的默认值,这些值适用于打印到标准输出(stdout)和标准错误(stderr)的 Greengrass 组件。
-
将日志上传到 CloudWatch Logs 时,通过配置的网络代理正确路由流量。
-
正确处理日志流名称中的冒号字符 (: )。CloudWatch Logs 日志流名称不支持冒号。
-
通过从日志流中删除事物组名称来简化日志流名称。
-
删除在正常行为期间打印的错误日志消息。
|
2.0.x
|
初始版本。
|