日志管理器 - AWS IoT Greengrass

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

日志管理器

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

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

  • 日志延迟

    注意

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

    日志管理器组件版本 2.2.8(及更早版本)仅处理和上传轮换日志文件中的日志。默认情况下,AWS IoT GreengrassCore 软件每小时或在 1,024 KB 之后轮换一次日志文件。因此,只有在 C AWS 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 会拒绝请求。有关更多信息,请参阅《AWS 一般参考》中的签名版本 4 签名流程

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

版本

此组件有以下版本:

  • 2.3.x

  • 2.2.x

  • 2.1.x

  • 2.0.x

类型

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

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

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

操作系统

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

  • Linux

  • Windows

要求

此组件具有以下要求:

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

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

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

    有关更多信息,请参阅 A ma CloudWatch zon Logs 用户指南中的使用基于身份的 CloudWatch 日志策略(IAM 策略)

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

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

端点和端口

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

Endpoint 端口 必需 描述

logs.region.amazonaws.com

443

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

依赖项

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

2.3.7

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

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

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

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

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

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

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

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.1.0 <2.10.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 软性
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.4.0 软性
2.1.1

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

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

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

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

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

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

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

配置

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

v2.3.6 – v2.3.7
logsUploaderConfiguration

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

systemLogsConfiguration

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

uploadToCloudWatch

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

默认值:false

minimumLogLevel

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

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

  • DEBUG

  • INFO

  • WARN

  • ERROR

默认值:INFO

diskSpaceLimit

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

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

diskSpaceLimitUnit

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

  • KB— 千字节

  • MB— 兆字节

  • GB— 千兆字节

默认值:KB

deleteLogFileAfterCloudUpload

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

默认值:false

componentLogsConfigurationMap

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

重要

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

注意

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

componentName

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

每个对象都包含以下信息:

minimumLogLevel

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

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

  • DEBUG

  • INFO

  • WARN

  • ERROR

默认值:INFO

diskSpaceLimit

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

此参数与 Greengrass nucleus totalLogsSizeKB 组件的日志大小限制参数 () 有关。AWS 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,其中 componentN ame 是此日志配置的组件的名称。

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

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

uploadToCloudWatch

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

默认值:false

minimumLogLevel

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

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

  • DEBUG

  • INFO

  • WARN

  • ERROR

默认值:INFO

diskSpaceLimit

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

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

diskSpaceLimitUnit

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

  • KB— 千字节

  • MB— 兆字节

  • GB— 千兆字节

默认值:KB

deleteLogFileAfterCloudUpload

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

默认值:false

componentLogsConfigurationMap

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

重要

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

注意

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

componentName

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

每个对象都包含以下信息:

minimumLogLevel

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

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

  • DEBUG

  • INFO

  • WARN

  • ERROR

默认值:INFO

diskSpaceLimit

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

此参数与 Greengrass nucleus totalLogsSizeKB 组件的日志大小限制参数 () 有关。AWS 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,其中 componentN ame 是此日志配置的组件的名称。

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

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

uploadToCloudWatch

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

默认值:false

minimumLogLevel

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

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

  • DEBUG

  • INFO

  • WARN

  • ERROR

默认值:INFO

diskSpaceLimit

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

此参数等同于 Greengrass nucleus 组件的日志大小限制参数 (totalLogsSizeKB)。AWS 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组件或应用程序的日志配置。您可以指定 Greengrass 组件的名称或其他值来标识此日志组。

每个对象都包含以下信息:

minimumLogLevel

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

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

  • DEBUG

  • INFO

  • WARN

  • ERROR

默认值:INFO

diskSpaceLimit

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

此参数与 Greengrass nucleus totalLogsSizeKB 组件的日志大小限制参数 () 有关。AWS 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,其中 componentN ame 是此日志配置的组件的名称。

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

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

uploadToCloudWatch

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

默认值:false

minimumLogLevel

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

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

  • DEBUG

  • INFO

  • WARN

  • ERROR

默认值:INFO

diskSpaceLimit

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

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

diskSpaceLimitUnit

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

  • KB— 千字节

  • MB— 兆字节

  • GB— 千兆字节

默认值:KB

deleteLogFileAfterCloudUpload

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

默认值:false

componentLogsConfiguration

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

每个对象都包含以下信息:

componentName

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

minimumLogLevel

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

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

  • DEBUG

  • INFO

  • WARN

  • ERROR

默认值:INFO

diskSpaceLimit

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

此参数与 Greengrass nucleus totalLogsSizeKB 组件的日志大小限制参数 () 有关。AWS 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,其中 componentN ame 是此日志配置的组件的名称。

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

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

uploadToCloudWatch

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

默认值:false

minimumLogLevel

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

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

  • DEBUG

  • INFO

  • WARN

  • ERROR

默认值:INFO

diskSpaceLimit

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

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

diskSpaceLimitUnit

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

  • KB— 千字节

  • MB— 兆字节

  • GB— 千兆字节

默认值:KB

deleteLogFileAfterCloudUpload

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

默认值:false

componentLogsConfiguration

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

每个对象都包含以下信息:

componentName

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

minimumLogLevel

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

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

  • DEBUG

  • INFO

  • WARN

  • ERROR

默认值:INFO

diskSpaceLimit

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

此参数与 Greengrass nucleus totalLogsSizeKB 组件的日志大小限制参数 () 有关。AWS 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 nucleus 在日志文件中添加了一个旋转的时间戳。

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— 组件的类型,可以是以下类型之一:

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

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

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

  • 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 核的一部分。

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

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

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

日志流名称
/date/deploymentTargets/thingName

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

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

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

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

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

    • 一种以名为的事物组为目标的部署MyGreengrassCoreGroup,该组包含核心设备。

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

  • 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 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.7

Greengrass nucleus 版本 2.12.0 版本的版本已更新。

2.3.6

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

2.3.5

改进

提高了日志上传速度。

Greengrass nucleus 版本 2.11.0 版本的版本已更新。

2.3.4

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

  • 修复了日志管理器不遵守 CloudWatchputLogEvents限制的问题。

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

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

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

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

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

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

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

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

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

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

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

2.0.x

初始版本。