Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅
中国的 Amazon Web Services 服务入门
(PDF)。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
日志管理器
日志管理器组件 (aws.greengrass.LogManager
) 将日志从 Amazon IoT Greengrass 核心设备上传到 Amazon CloudWatch 日志。你可以上传来自 Greengrass 核心、其他 Greengrass 组件以及其他不是 Greengrass 组件的应用程序和服务的日志。有关如何监控日志和本地文件系统上的 CloudWatch 日志的更多信息,请参阅监控Amazon IoT Greengrass日志。
使用日志管理器组件写入日志时,需要考虑以下注意事项: CloudWatch
-
日志延迟
我们建议您升级到日志管理器版本 2.3.0,该版本可减少轮换和活动日志文件的日志延迟。当你升级到日志管理器 2.3.0 时,我们建议你同时升级到 Greengrass nucleus 2.9.1。
日志管理器组件版本 2.2.8(及更早版本)仅处理和上传轮换日志文件中的日志。默认情况下, Amazon IoT Greengrass Core 软件每小时或在 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 签名流程。
有关此组件向其上传日志的日志组和日志流的信息,请参阅使用量。
版本
此组件有以下版本:
类型
此组件是一个插件组件 (aws.greengrass.plugin
)。Greengrass 核心在与核心相同的 Java 虚拟机 () 中运行此组件。JVM当您在核心设备上更改此组件的版本时,nucleus 会重新启动。
该组件使用与 Greengrass 核相同的日志文件。有关更多信息,请参阅 监控Amazon IoT Greengrass日志。
有关更多信息,请参阅 组件类型。
操作系统
要求
此组件具有以下要求:
-
Greengrass 设备角色必须允许logs:CreateLogGroup
logs:CreateLogStream
、、logs:DescribeLogStreams
和操作logs:PutLogEvents
,如以下示例策略所示。IAM
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents",
"logs:DescribeLogStreams"
],
"Effect": "Allow",
"Resource": "arn:aws:logs:*:*:*"
}
]
}
有关更多信息,请参阅 A ma CloudWatch zon Logs 用户指南中的使用基于身份的 CloudWatch 日志IAM策略(策略)。
-
支持在中运行日志管理器组件VPC。要在中部署此组件VPC,需要满足以下条件。
端点和端口
除了基本操作所需的端点和端口外,此组件还必须能够对以下端点和端口执行出站请求。有关更多信息,请参阅 允许设备流量通过代理或防火墙。
Endpoint |
端口 |
必需 |
描述 |
logs.region .amazonaws.com
|
443 |
否 |
如果将日志写入日 CloudWatch 志,则为必填项。
|
依赖项
部署组件时, Amazon IoT Greengrass 还会部署其依赖项的兼容版本。这意味着您必须满足组件及其所有依赖项的要求才能成功部署该组件。本节列出了此组件已发布版本的依赖关系以及定义每个依赖项的组件版本的语义版本限制。您还可以在Amazon 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
-
(可选) Amazon IoT Greengrass 核心软件系统日志的配置,其中包括来自 Greengrass 核心的日志和插件组件。指定此配置以使日志管理器组件能够管理系统日志。该对象包含以下信息:
uploadToCloudWatch
-
(可选)您可以将系统日志上传到 CloudWatch 日志。
默认:false
minimumLogLevel
-
(可选)要上传的最低日志消息级别。仅当您将 Greengrass nucleu s 组件配置为输出格式日志时,此最低级别才适用。JSON要启用JSON格式化日志,请指定JSON
日志格式参数 (logging.format
)。
从以下日志级别中进行选择,此处按级别顺序列出:
默认:INFO
diskSpaceLimit
-
(可选)Greengrass 系统日志文件的最大总大小,以您在中指定的单位为单位。diskSpaceLimitUnit
在 Greengrass 系统日志文件的总大小超过此最大总大小后,核心软件会删除最旧的 Greengrass 系统日志文件。 Amazon IoT Greengrass
此参数等同于 Greengrass nucleus 组件的日志大小限制参数 (totalLogsSizeKB
)。 Amazon IoT Greengrass Core 软件使用两个值中的最小值作为 Greengrass 系统日志的最大总大小。
diskSpaceLimitUnit
-
(可选)的单位diskSpaceLimit
。从以下选项中进行选择:
默认:KB
deleteLogFileAfterCloudUpload
-
(可选)在日志管理器组件将日志上传到 CloudWatch 日志后,您可以删除日志文件。
默认:false
-
componentLogsConfigurationMap
-
(可选)核心设备上组件的日志配置地图。此映射中的每个componentName
对象都定义了组件或应用程序的日志配置。日志管理器组件将这些组件日志上传到日 CloudWatch 志。
如果您要从 v2.2.0 之前的日志管理器版本升级,则可以继续使用该componentLogsConfiguration
列表,而不是。componentLogsConfigurationMap
但是,我们强烈建议您使用地图格式,以便您可以使用合并和重置更新来修改特定组件的配置。有关该componentLogsConfiguration
参数的信息,请参阅此组件 v2.1.x 的配置参数。
componentName
-
的日志配置 componentName
此日志配置的组件或应用程序。您可以指定 Greengrass 组件的名称或其他值来标识此日志组。
每个对象都包含以下信息:
minimumLogLevel
-
(可选)要上传的最低日志消息级别。仅当此组件的日志使用特定JSON格式时,此最低级别才适用,您可以在Amazon IoT Greengrass
日志模块存储库中找到该格式 GitHub。
从以下日志级别中进行选择,此处按级别顺序列出:
默认:INFO
diskSpaceLimit
-
(可选)此组件所有日志文件的最大总大小,以您在中指定的单位为单位diskSpaceLimitUnit
。此组件日志文件的总大小超过此最大总大小后, Amazon IoT Greengrass Core 软件将删除该组件最旧的日志文件。
此参数与 Greengrass nucleus totalLogsSizeKB
组件的日志大小限制参数 () 有关。 Amazon IoT Greengrass Core 软件使用两个值中的最小值作为该组件的最大总日志大小。
diskSpaceLimitUnit
-
(可选)的单位diskSpaceLimit
。从以下选项中进行选择:
默认: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 日志后,您可以删除日志文件。
默认:false
multiLineStartPattern
-
(可选)一个正则表达式,用于标识新行上的日志消息何时为新日志消息。如果正则表达式与新行不匹配,则日志管理器组件会将新行附加到上一行的日志消息中。
默认情况下,日志管理器组件会检查该行是否以空格字符(例如制表符或空格)开头。如果不是,则日志管理器会将该行作为新的日志消息处理。否则,它会将该行附加到当前日志消息中。此行为可确保日志管理器组件不会拆分跨多行的消息,例如堆栈跟踪。
-
periodicUploadIntervalSec
-
(可选)日志管理器组件检查要上传的新日志文件的时间段(以秒为单位)。
默认:300
(5 分钟)
最小值:0.000001
(1 微秒)
deprecatedVersionSupport
-
表示日志管理器是否应使用日志管理器 v2.3.5 中引入的日志速度改进。将值设置为false
以使用这些改进。
如果将此值设置为从日志管理器 v2.3.1 或更早版本升级false
时,可能会上传重复的日志条目。
默认为 true
。
例 示例:配置合并更新
以下示例配置指定将系统日志和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",
"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
-
(可选) Amazon IoT Greengrass 核心软件系统日志的配置,其中包括来自 Greengrass 核心的日志和插件组件。指定此配置以使日志管理器组件能够管理系统日志。该对象包含以下信息:
uploadToCloudWatch
-
(可选)您可以将系统日志上传到 CloudWatch 日志。
默认:false
minimumLogLevel
-
(可选)要上传的最低日志消息级别。仅当您将 Greengrass nucleu s 组件配置为输出格式日志时,此最低级别才适用。JSON要启用JSON格式化日志,请指定JSON
日志格式参数 (logging.format
)。
从以下日志级别中进行选择,此处按级别顺序列出:
默认:INFO
diskSpaceLimit
-
(可选)Greengrass 系统日志文件的最大总大小,以您在中指定的单位为单位。diskSpaceLimitUnit
在 Greengrass 系统日志文件的总大小超过此最大总大小后,核心软件会删除最旧的 Greengrass 系统日志文件。 Amazon IoT Greengrass
此参数等同于 Greengrass nucleus 组件的日志大小限制参数 (totalLogsSizeKB
)。 Amazon IoT Greengrass Core 软件使用两个值中的最小值作为 Greengrass 系统日志的最大总大小。
diskSpaceLimitUnit
-
(可选)的单位diskSpaceLimit
。从以下选项中进行选择:
默认:KB
deleteLogFileAfterCloudUpload
-
(可选)在日志管理器组件将日志上传到 CloudWatch 日志后,您可以删除日志文件。
默认:false
-
componentLogsConfigurationMap
-
(可选)核心设备上组件的日志配置地图。此映射中的每个componentName
对象都定义了组件或应用程序的日志配置。日志管理器组件将这些组件日志上传到日 CloudWatch 志。
如果您要从 v2.2.0 之前的日志管理器版本升级,则可以继续使用该componentLogsConfiguration
列表,而不是。componentLogsConfigurationMap
但是,我们强烈建议您使用地图格式,以便您可以使用合并和重置更新来修改特定组件的配置。有关该componentLogsConfiguration
参数的信息,请参阅此组件 v2.1.x 的配置参数。
componentName
-
的日志配置 componentName
此日志配置的组件或应用程序。您可以指定 Greengrass 组件的名称或其他值来标识此日志组。
每个对象都包含以下信息:
minimumLogLevel
-
(可选)要上传的最低日志消息级别。仅当此组件的日志使用特定JSON格式时,此最低级别才适用,您可以在Amazon IoT Greengrass
日志模块存储库中找到该格式 GitHub。
从以下日志级别中进行选择,此处按级别顺序列出:
默认:INFO
diskSpaceLimit
-
(可选)此组件所有日志文件的最大总大小,以您在中指定的单位为单位diskSpaceLimitUnit
。此组件日志文件的总大小超过此最大总大小后, Amazon IoT Greengrass Core 软件将删除该组件最旧的日志文件。
此参数与 Greengrass nucleus totalLogsSizeKB
组件的日志大小限制参数 () 有关。 Amazon IoT Greengrass Core 软件使用两个值中的最小值作为该组件的最大总日志大小。
diskSpaceLimitUnit
-
(可选)的单位diskSpaceLimit
。从以下选项中进行选择:
默认: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 日志后,您可以删除日志文件。
默认:false
multiLineStartPattern
-
(可选)一个正则表达式,用于标识新行上的日志消息何时为新日志消息。如果正则表达式与新行不匹配,则日志管理器组件会将新行附加到上一行的日志消息中。
默认情况下,日志管理器组件会检查该行是否以空格字符(例如制表符或空格)开头。如果不是,则日志管理器会将该行作为新的日志消息处理。否则,它会将该行附加到当前日志消息中。此行为可确保日志管理器组件不会拆分跨多行的消息,例如堆栈跟踪。
-
periodicUploadIntervalSec
-
(可选)日志管理器组件检查要上传的新日志文件的时间段(以秒为单位)。
默认:300
(5 分钟)
最小值:0.000001
(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 nucleu s 组件配置为输出格式日志时,此最低级别才适用。JSON要启用JSON格式化日志,请指定JSON
日志格式参数 (logging.format
)。
从以下日志级别中进行选择,此处按级别顺序列出:
默认:INFO
diskSpaceLimit
-
(可选)Greengrass 系统日志文件的最大总大小,以您在中指定的单位为单位。diskSpaceLimitUnit
在 Greengrass 系统日志文件的总大小超过此最大总大小后,核心软件会删除最旧的 Greengrass 系统日志文件。 Amazon IoT Greengrass
此参数等同于 Greengrass nucleus 组件的日志大小限制参数 (totalLogsSizeKB
)。 Amazon IoT Greengrass Core 软件使用两个值中的最小值作为 Greengrass 系统日志的最大总大小。
diskSpaceLimitUnit
-
(可选)的单位diskSpaceLimit
。从以下选项中进行选择:
默认:KB
deleteLogFileAfterCloudUpload
-
(可选)在日志管理器组件将日志上传到 CloudWatch 日志后,您可以删除日志文件。
默认:false
-
componentLogsConfigurationMap
-
(可选)核心设备上组件的日志配置地图。此映射中的每个componentName
对象都定义了组件或应用程序的日志配置。日志管理器组件将这些组件日志上传到日 CloudWatch 志。
如果您要从 v2.2.0 之前的日志管理器版本升级,则可以继续使用该componentLogsConfiguration
列表,而不是。componentLogsConfigurationMap
但是,我们强烈建议您使用地图格式,以便您可以使用合并和重置更新来修改特定组件的配置。有关该componentLogsConfiguration
参数的信息,请参阅此组件 v2.1.x 的配置参数。
componentName
-
的日志配置 componentName
此日志配置的组件或应用程序。您可以指定 Greengrass 组件的名称或其他值来标识此日志组。
每个对象都包含以下信息:
minimumLogLevel
-
(可选)要上传的最低日志消息级别。仅当此组件的日志使用特定JSON格式时,此最低级别才适用,您可以在Amazon IoT Greengrass
日志模块存储库中找到该格式 GitHub。
从以下日志级别中进行选择,此处按级别顺序列出:
默认:INFO
diskSpaceLimit
-
(可选)此组件所有日志文件的最大总大小,以您在中指定的单位为单位diskSpaceLimitUnit
。此组件日志文件的总大小超过此最大总大小后, Amazon IoT Greengrass Core 软件将删除该组件最旧的日志文件。
此参数与 Greengrass nucleus totalLogsSizeKB
组件的日志大小限制参数 () 有关。 Amazon IoT Greengrass Core 软件使用两个值中的最小值作为该组件的最大总日志大小。
diskSpaceLimitUnit
-
(可选)的单位diskSpaceLimit
。从以下选项中进行选择:
默认: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 日志后,您可以删除日志文件。
默认:false
multiLineStartPattern
-
(可选)一个正则表达式,用于标识新行上的日志消息何时为新日志消息。如果正则表达式与新行不匹配,则日志管理器组件会将新行附加到上一行的日志消息中。
默认情况下,日志管理器组件会检查该行是否以空格字符(例如制表符或空格)开头。如果不是,则日志管理器会将该行作为新的日志消息处理。否则,它会将该行附加到当前日志消息中。此行为可确保日志管理器组件不会拆分跨多行的消息,例如堆栈跟踪。
-
periodicUploadIntervalSec
-
(可选)日志管理器组件检查要上传的新日志文件的时间段(以秒为单位)。
默认:300
(5 分钟)
最小值:0.000001
(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 nucleu s 组件配置为输出格式日志时,此最低级别才适用。JSON要启用JSON格式化日志,请指定JSON
日志格式参数 (logging.format
)。
从以下日志级别中进行选择,此处按级别顺序列出:
默认:INFO
diskSpaceLimit
-
(可选)Greengrass 系统日志文件的最大总大小,以您在中指定的单位为单位。diskSpaceLimitUnit
在 Greengrass 系统日志文件的总大小超过此最大总大小后,核心软件会删除最旧的 Greengrass 系统日志文件。 Amazon IoT Greengrass
此参数等同于 Greengrass nucleus 组件的日志大小限制参数 (totalLogsSizeKB
)。 Amazon IoT Greengrass Core 软件使用两个值中的最小值作为 Greengrass 系统日志的最大总大小。
diskSpaceLimitUnit
-
(可选)的单位diskSpaceLimit
。从以下选项中进行选择:
默认:KB
deleteLogFileAfterCloudUpload
-
(可选)在日志管理器组件将日志上传到 CloudWatch 日志后,您可以删除日志文件。
默认:false
-
componentLogsConfiguration
-
(可选)核心设备上组件的日志配置列表。此列表中的每个配置都定义了组件或应用程序的日志配置。日志管理器组件将这些组件日志上传到 CloudWatch Logs
每个对象都包含以下信息:
componentName
-
此日志配置的组件或应用程序的名称。您可以指定 Greengrass 组件的名称或其他值来标识此日志组。
minimumLogLevel
-
(可选)要上传的最低日志消息级别。仅当此组件的日志使用特定JSON格式时,此最低级别才适用,您可以在Amazon IoT Greengrass
日志模块存储库中找到该格式 GitHub。
从以下日志级别中进行选择,此处按级别顺序列出:
默认:INFO
diskSpaceLimit
-
(可选)此组件所有日志文件的最大总大小,以您在中指定的单位为单位diskSpaceLimitUnit
。此组件日志文件的总大小超过此最大总大小后, Amazon IoT Greengrass Core 软件将删除该组件最旧的日志文件。
此参数与 Greengrass nucleus totalLogsSizeKB
组件的日志大小限制参数 () 有关。 Amazon IoT Greengrass Core 软件使用两个值中的最小值作为该组件的最大总日志大小。
diskSpaceLimitUnit
-
(可选)的单位diskSpaceLimit
。从以下选项中进行选择:
默认: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 日志后,您可以删除日志文件。
默认:false
multiLineStartPattern
-
(可选)一个正则表达式,用于标识新行上的日志消息何时为新日志消息。如果正则表达式与新行不匹配,则日志管理器组件会将新行附加到上一行的日志消息中。
默认情况下,日志管理器组件会检查该行是否以空格字符(例如制表符或空格)开头。如果不是,则日志管理器会将该行作为新的日志消息处理。否则,它会将该行附加到当前日志消息中。此行为可确保日志管理器组件不会拆分跨多行的消息,例如堆栈跟踪。
-
periodicUploadIntervalSec
-
(可选)日志管理器组件检查要上传的新日志文件的时间段(以秒为单位)。
默认:300
(5 分钟)
最小值:0.000001
(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 Core 软件系统日志的配置。指定此配置以使日志管理器组件能够管理系统日志。该对象包含以下信息:
uploadToCloudWatch
-
(可选)您可以将系统日志上传到 CloudWatch 日志。
默认:false
minimumLogLevel
-
(可选)要上传的最低日志消息级别。仅当您将 Greengrass nucleu s 组件配置为输出格式日志时,此最低级别才适用。JSON要启用JSON格式化日志,请指定JSON
日志格式参数 (logging.format
)。
从以下日志级别中进行选择,此处按级别顺序列出:
默认:INFO
diskSpaceLimit
-
(可选)Greengrass 系统日志文件的最大总大小,以您在中指定的单位为单位。diskSpaceLimitUnit
在 Greengrass 系统日志文件的总大小超过此最大总大小后,核心软件会删除最旧的 Greengrass 系统日志文件。 Amazon IoT Greengrass
此参数等同于 Greengrass nucleus 组件的日志大小限制参数 (totalLogsSizeKB
)。 Amazon IoT Greengrass Core 软件使用两个值中的最小值作为 Greengrass 系统日志的最大总大小。
diskSpaceLimitUnit
-
(可选)的单位diskSpaceLimit
。从以下选项中进行选择:
默认:KB
deleteLogFileAfterCloudUpload
-
(可选)在日志管理器组件将日志上传到 CloudWatch 日志后,您可以删除日志文件。
默认:false
componentLogsConfiguration
-
(可选)核心设备上组件的日志配置列表。此列表中的每个配置都定义了组件或应用程序的日志配置。日志管理器组件将这些组件日志上传到 CloudWatch Logs
每个对象都包含以下信息:
componentName
-
此日志配置的组件或应用程序的名称。您可以指定 Greengrass 组件的名称或其他值来标识此日志组。
minimumLogLevel
-
(可选)要上传的最低日志消息级别。仅当此组件的日志使用特定JSON格式时,此最低级别才适用,您可以在Amazon IoT Greengrass
日志模块存储库中找到该格式 GitHub。
从以下日志级别中进行选择,此处按级别顺序列出:
默认:INFO
diskSpaceLimit
-
(可选)此组件所有日志文件的最大总大小,以您在中指定的单位为单位diskSpaceLimitUnit
。此组件日志文件的总大小超过此最大总大小后, Amazon IoT Greengrass Core 软件将删除该组件最旧的日志文件。
此参数与 Greengrass nucleus totalLogsSizeKB
组件的日志大小限制参数 () 有关。 Amazon IoT Greengrass Core 软件使用两个值中的最小值作为该组件的最大总日志大小。
diskSpaceLimitUnit
-
(可选)的单位diskSpaceLimit
。从以下选项中进行选择:
默认:KB
logFileDirectoryPath
-
包含此组件日志文件的文件夹的路径。
要上传 Greengrass 组件的日志,/greengrass/v2
/logs
请指定并替换/greengrass/v2
为您的 Greengrass 根文件夹。
logFileRegex
-
一种正则表达式,用于指定组件或应用程序使用的日志文件名格式。日志管理器组件使用此正则表达式来识别位于的文件夹中的日志文件logFileDirectoryPath
。
要上传 Greengrass 组件的日志,请指定与轮换后的日志文件名相匹配的正则表达式。例如,您可以指定com.example.HelloWorld\\w*.log
上传 Hello World 组件的日志。该\\w*
模式匹配零个或多个单词字符,其中包括字母数字字符和下划线。此正则表达式匹配名称中带有和不带时间戳的日志文件。在此示例中,日志管理器上传以下日志文件:
deleteLogFileAfterCloudUpload
-
(可选)在日志管理器组件将日志上传到 CloudWatch 日志后,您可以删除日志文件。
默认:false
multiLineStartPattern
-
(可选)一个正则表达式,用于标识新行上的日志消息何时为新日志消息。如果正则表达式与新行不匹配,则日志管理器组件会将新行附加到上一行的日志消息中。
默认情况下,日志管理器组件会检查该行是否以空格字符(例如制表符或空格)开头。如果不是,则日志管理器会将该行作为新的日志消息处理。否则,它会将该行附加到当前日志消息中。此行为可确保日志管理器组件不会拆分跨多行的消息,例如堆栈跟踪。
periodicUploadIntervalSec
-
(可选)日志管理器组件检查要上传的新日志文件的时间段(以秒为单位)。
默认:300
(5 分钟)
最小值:0.000001
(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
— 组件的类型,可以是以下类型之一:
有关更多信息,请参阅 组件类型。
-
region
— 核心设备使用的 Amazon 区域。
-
componentName
— 组件的名称。对于系统日志,此值为System
。
- 日志流名称
-
/date
/thing/thingName
日志流名称使用以下变量:
如果事物名称包含冒号 (:
),则日志管理器会将冒号替换为加号 (+
)。
- 2.0.x
-
- 日志组名称
-
/aws/greengrass/componentType
/region
/componentName
日志组名称使用以下变量:
-
componentType
— 组件的类型,可以是以下类型之一:
-
region
— 核心设备使用的 Amazon 区域。
-
componentName
— 组件的名称。对于系统日志,此值为System
。
- 日志流名称
-
/date
/deploymentTargets
/thingName
日志流名称使用以下变量:
-
date
— 日志的日期,例如2020/12/15
。日志管理器组件使用该yyyy/MM/dd
格式。
-
deploymentTargets
— 部署的内容包括组件。日志管理器组件用斜线分隔每个目标。如果在本地部署后组件在核心设备上运行,则此值为LOCAL_DEPLOYMENT
。
举一个例子,你有一个名为的核心设备MyGreengrassCore
,而核心设备有两个部署:
这个核心设备是thing/MyGreengrassCore/thinggroup/MyGreengrassCoreGroup
。deploymentTargets
-
thingName
— 核心设备的名称。
日志条目的格式。
Greengrass 核心以字符串或格式写入日志文件。JSON对于系统日志,您可以通过设置logging
条目的format
字段来控制格式。你可以在 Greengrass nucleus 组件的配置文件中找到该logging
条目。有关更多信息,请参阅 Greengrass 核配置。
文本格式为自由格式,接受任何字符串。以下舰队状态服务消息是字符串格式日志的示例:
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 lo CLI gs 命令查看日志或以编程方式与日志交互,则应使用该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
|
- 错误修复和改进
-
-
使用适用于打印到标准输出 (stdout) logFileDirectoryPath 和logFileRegex 标准错误 (stderr) 的 Greengrass 组件的默认值。
-
将日志上传到 CloudWatch 日志时,通过配置的网络代理正确路由流量。
-
正确处理日志流名称中的冒号字符 (: )。 CloudWatch 日志日志流名称不支持冒号。
-
通过从日志流中删除事物组名称来简化日志流名称。
-
删除在正常行为期间打印的错误日志消息。
|
2.0.x
|
初始版本。
|