本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
警告
我們建議您升級至 Log Manager 2.3.5 版或更新版本。2.3.5 版可最佳化 Log Manager 組態寫入、降低 IO 操作並改善日誌上傳速度、整體裝置效能,以及可能延長的裝置生命週期。
日誌管理員元件 (aws.greengrass.LogManager
) 會將日誌從 AWS IoT Greengrass 核心裝置上傳至 Amazon CloudWatch Logs。您可以從 Greengrass 核、其他 Greengrass 元件,以及其他非 Greengrass 元件的應用程式和服務上傳日誌。如需如何在 CloudWatch Logs 和本機檔案系統上監控日誌的詳細資訊,請參閱 監控 AWS IoT Greengrass 日誌。
當您使用日誌管理員元件寫入 CloudWatch Logs 時,會套用下列考量:
-
日誌延遲
日誌管理員元件 2.2.8 版 (及更早版本) 只會從輪換的日誌檔案處理和上傳日誌。根據預設, AWS IoT Greengrass Core 軟體會每小時輪換日誌檔案,或在 1,024 KB 之後輪換日誌檔案。因此,日誌管理員元件只會在 AWS IoT Greengrass Core 軟體或 Greengrass 元件寫入超過 1,024 KB 的日誌之後上傳日誌。您可以設定較低的日誌檔案大小限制,讓日誌檔案更頻繁地輪換。這會導致日誌管理員元件更頻繁地將日誌上傳至 CloudWatch Logs。
日誌管理員元件 2.3.0 版 (及更新版本) 會處理和上傳所有日誌。當您撰寫新的日誌時,日誌管理員 2.3.0 版 (及更新版本) 會處理並直接上傳該作用中日誌檔案,而不是等待輪換。這表示您可以在 5 分鐘內檢視新日誌。
日誌管理員元件會定期上傳新的日誌。根據預設,日誌管理員元件會每 5 分鐘上傳新的日誌。您可以設定較低的上傳間隔,讓日誌管理員元件透過設定 ,更頻繁地將日誌上傳至 CloudWatch Logs
periodicUploadIntervalSec
。如需如何設定此定期間隔的詳細資訊,請參閱組態。日誌可以近乎即時地從相同的 Greengrass 檔案系統上傳。如果您需要即時觀察日誌,請考慮使用檔案系統日誌。
注意
如果您使用不同的檔案系統來寫入日誌,日誌管理員會還原為日誌管理員元件 2.2.8 版及更早版本中的行為。如需有關存取檔案系統日誌的資訊,請參閱存取檔案系統日誌。
-
時鐘偏移
日誌管理員元件使用標準 Signature 第 4 版簽署程序來建立對 CloudWatch Logs 的 API 請求。如果核心裝置上的系統時間不同步超過 15 分鐘,則 CloudWatch Logs 會拒絕請求。如需詳細資訊,請參閱 AWS 一般參考 中的 Signature 第 4 版簽署程序。
如需此元件上傳日誌之日誌群組和日誌串流的相關資訊,請參閱用量。
版本
此元件具有下列版本:
-
2.3.x 版本
-
2.2.x 版本
-
2.1.x
-
2.0.x
Type
此元件是外掛程式元件 (aws.greengrass.plugin
)。Greengrass 核會在與核相同的 Java 虛擬機器 (JVM) 中執行此元件。當您在核心裝置上變更此元件的版本時,核會重新啟動。
此元件使用與 Greengrass 核相同的日誌檔案。如需詳細資訊,請參閱監控 AWS IoT Greengrass 日誌。
如需詳細資訊,請參閱元件類型。
作業系統
此元件可以安裝在執行下列作業系統的核心裝置上:
Linux
Windows
要求
此元件有下列需求:
-
Greengrass 裝置角色必須允許
logs:CreateLogGroup
、logs:PutLogEvents
、logs:CreateLogStream
和logs: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 政策)。 Amazon CloudWatch
-
日誌管理員元件支援在 VPC 中執行。若要在 VPC 中部署此元件,需要下列項目。
-
日誌管理員元件必須具有
logs.region.amazonaws.com
具有 VPC 端點 的連線com.amazonaws.us-east-1.logs
能力。
-
端點和連接埠
除了基本操作所需的端點和連接埠之外,此元件還必須能夠對下列端點和連接埠執行傳出請求。如需詳細資訊,請參閱允許透過代理或防火牆的裝置流量。
端點 | 連線埠 | 必要 | 描述 |
---|---|---|---|
|
443 | 否 |
如果您將日誌寫入 CloudWatch Logs,則為必要。 |
相依性
當您部署元件時, AWS IoT Greengrass 也會部署其相依性的相容版本。這表示您必須符合元件及其所有相依性的要求,才能成功部署元件。本節列出此元件發行版本的相依性,以及為每個相依性定義元件版本的語意版本限制。您也可以在AWS IoT Greengrass 主控台
下表列出此元件 2.3.9 版的相依性。
相依性 | 相容版本 | 相依性類型 |
---|---|---|
Greengrass 核 | >=2.1.0 <2.15.0 | 軟式 |
如需元件相依性的詳細資訊,請參閱元件配方參考。
組態
此元件提供下列組態參數,您可以在部署元件時自訂這些參數。
logsUploaderConfiguration
-
(選用) 日誌管理員元件上傳之日誌的組態。此物件包含下列資訊:
-
systemLogsConfiguration
-
(選用) AWS IoT Greengrass 核心軟體系統日誌的組態,其中包含來自 Greengrass 核和外掛程式元件的日誌。指定此組態,以啟用日誌管理員元件來管理系統日誌。此物件包含下列資訊:
uploadToCloudWatch
-
(選用) 您可以將系統日誌上傳至 CloudWatch Logs。
預設:
false
minimumLogLevel
-
(選用) 要上傳的日誌訊息最低層級。只有在您將 Greengrass 核元件設定為輸出 JSON 格式日誌時,才適用此最低層級。若要啟用 JSON 格式日誌,請
JSON
為記錄格式參數 () 指定logging.format
。從下列日誌層級中選擇,此處依層級順序列出:
-
DEBUG
-
INFO
-
WARN
-
ERROR
預設:
INFO
-
diskSpaceLimit
-
(選用) Greengrass 系統日誌檔案的總大小上限,以您在 中指定的單位表示
diskSpaceLimitUnit
。在 Greengrass 系統日誌檔案的總大小超過此總大小上限之後, AWS IoT Greengrass Core 軟體會刪除最舊的 Greengrass 系統日誌檔案。此參數等同於 Greengrass 核元件的日誌大小限制參數 (
totalLogsSizeKB
)。Core AWS IoT Greengrass 軟體會使用兩個值的最小值作為 Greengrass 系統日誌大小總計上限。 diskSpaceLimitUnit
-
(選用) 的單位
diskSpaceLimit
。您可以從以下選項中選擇:-
KB
– KB -
MB
– MB -
GB
– GB
預設:
KB
-
deleteLogFileAfterCloudUpload
-
(選用) 您可以在日誌管理員元件將日誌上傳至 CloudWatch Logs 後刪除日誌檔案。
預設:
false
-
componentLogsConfigurationMap
-
(選用) 核心裝置上元件的日誌組態映射。此映射中的每個
componentName
物件都會定義元件或應用程式的日誌組態。日誌管理員元件會將這些元件日誌上傳至 CloudWatch Logs。重要
我們強烈建議每個元件使用單一組態金鑰。您只應該將只有一個日誌檔案的一組檔案設為目標,該日誌檔案在使用 時會主動寫入
logFileRegex
。未遵循此建議可能會導致重複的日誌上傳到 CloudWatch。如果您以單一 regex 鎖定多個作用中日誌檔案,建議您升級至 log manager v2.3.1 或更新版本,並考慮使用範例組態變更您的組態。注意
如果您是從 2.2.0 版之前的日誌管理員版本升級,您可以繼續使用
componentLogsConfiguration
清單,而不是 。componentLogsConfigurationMap
不過,我們強烈建議您使用映射格式,以便您可以使用合併和重設更新來修改特定元件的組態。如需componentLogsConfiguration
參數的相關資訊,請參閱此元件 v2.1.x 的組態參數。componentName
-
此日誌組態之
元件或應用程式的日誌組態。您可以指定 Greengrass 元件的名稱或其他值來識別此日誌群組。componentName
每個物件都包含下列資訊:
minimumLogLevel
-
(選用) 要上傳的日誌訊息最低層級。此最低層級僅適用於此元件的日誌使用特定 JSON 格式時,您可以在 GitHub 上的AWS IoT Greengrass 記錄模組
儲存庫中找到該格式。 從下列日誌層級中選擇,此處依層級順序列出:
-
DEBUG
-
INFO
-
WARN
-
ERROR
預設:
INFO
-
diskSpaceLimit
-
(選用) 此元件的所有日誌檔案總大小上限,以您在 中指定的單位表示
diskSpaceLimitUnit
。當此元件日誌檔案的總大小超過此總大小上限後, AWS IoT Greengrass 核心軟體會刪除此元件最舊的日誌檔案。此參數與 Greengrass 核元件的日誌大小限制參數 (
totalLogsSizeKB
) 相關。Core AWS IoT Greengrass 軟體會使用兩個值的最小值作為此元件的日誌大小上限。 diskSpaceLimitUnit
-
(選用) 的單位
diskSpaceLimit
。您可以從以下選項中選擇:-
KB
– KB -
MB
– MB -
GB
– GB
預設:
KB
-
logFileDirectoryPath
-
(選用) 包含此元件日誌檔案的資料夾路徑。
您不需要為列印為標準輸出 (stdout) 和標準錯誤 (stderr) 的 Greengrass 元件指定此參數。
預設:
。
/logs/greengrass/v2
logFileRegex
-
(選用) 指定元件或應用程式使用的日誌檔案名稱格式的規則運算式。日誌管理員元件使用此規則表達式來識別 資料夾中的日誌檔案
logFileDirectoryPath
。您不需要為列印為標準輸出 (stdout) 和標準錯誤 (stderr) 的 Greengrass 元件指定此參數。
如果您的元件或應用程式輪換日誌檔案,請指定符合輪換日誌檔案名稱的 regex。例如,您可以指定
hello_world\\\\w*.log
上傳 Hello World 應用程式的日誌。模式\\\\w*
符合零個或多個單字字元,其中包括英數字元和底線。此 regex 會比對名稱中具有和沒有時間戳記的日誌檔案。在此範例中,日誌管理員會上傳下列日誌檔案:-
hello_world.log
– Hello World 應用程式的最新日誌檔案。 -
hello_world_2020_12_15_17_0.log
– Hello World 應用程式的較舊日誌檔案。
預設:
,其中componentName
\\\\w*.logcomponentName
是此日誌組態的元件名稱。 -
deleteLogFileAfterCloudUpload
-
(選用) 您可以在日誌管理員元件將日誌上傳至 CloudWatch Logs 後刪除日誌檔案。
預設:
false
multiLineStartPattern
-
(選用) 規則表達式,可識別新行上的日誌訊息是新的日誌訊息。如果規則運算式不符合新行,則日誌管理員元件會將新行附加到前一行的日誌訊息。
根據預設,日誌管理員元件會檢查該行是否以空格字元開頭,例如標籤或空格。如果沒有,日誌管理員會將該行視為新的日誌訊息處理。否則,它會將該行附加到目前的日誌訊息。此行為可確保日誌管理員元件不會分割跨越多行的訊息,例如堆疊追蹤。
-
-
periodicUploadIntervalSec
-
(選用) 以秒為單位的期間,日誌管理員元件會檢查要上傳的新日誌檔案。
預設:
300
(5 分鐘)最小值:
0.000001
(1 微秒) deprecatedVersionSupport
-
指出日誌管理員是否應使用日誌管理員 2.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"
}
範例:使用 Log Manager 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"
}
用量
日誌管理員元件會上傳至下列日誌群組和日誌串流。
- 日誌群組名稱
-
/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
– 核心裝置的名稱。
注意
如果物件名稱包含冒號 (
:
),則日誌管理員會將冒號取代為加號 (+
)。 -
日誌項目的格式。
Greengrass 核會以字串或 JSON 格式寫入日誌檔案。對於系統日誌,您可以透過設定 logging
項目format
的欄位來控制格式。您可以在 Greengrass 核元件的組態檔案中找到 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 核元件相同的日誌檔案。
/logs/greengrass.log
/greengrass/v2
檢視此元件的日誌
-
在核心裝置上執行下列命令,以即時檢視此元件的日誌檔案。將
或/greengrass/v2
C:\greengrass\v2
取代為 AWS IoT Greengrass 根資料夾的路徑。sudo tail -f
/logs/greengrass.log/greengrass/v2
變更記錄
下表說明每個版本元件的變更。
版本 |
變更 |
---|---|
2.3.9 |
針對 Greengrass nucleus 2.14.0 版更新版本。 |
2.3.8 |
針對 Greengrass nucleus 2.13.0 版更新版本。 |
2.3.7 |
針對 Greengrass nucleus 2.12.0 版更新版本。 |
2.3.6 |
|
2.3.5 |
|
2.3.4 |
|
2.3.3 |
針對 Greengrass nucleus 2.10.0 版更新版本。 |
2.3.2 |
|
2.3.1 |
|
2.3.0 |
注意當您升級至 log manager 2.3.0 時,我們建議您升級至 Greengrass 核 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 |
|
2.0.x |
初始版本。 |