AWS IoT Greengrass Version 1 於 2023 年 6 月 30 日進入延長使用壽命階段。如需詳細資訊,請參閱AWS IoT Greengrass V1 維護政策。在此日期之後, AWS IoT Greengrass V1 將不會發行提供功能、增強功能、錯誤修正或安全性修補程式的更新。在上運行的設備 AWS IoT Greengrass V1 不會中斷,並將繼續運行並連接到雲。我們強烈建議您移轉至 AWS IoT Greengrass Version 2,這會增加重要的新功能,並支援其他平台。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
CloudWatch 公制連接器
CloudWatch 指標連接器會將自訂指標從 Greengrass 裝置發佈到 Amazon。 CloudWatch連接器提供用於發佈 CloudWatch 指標的集中式基礎結構,您可以使用這些基礎結構來監視和分析 Greengrass 核心環境,以及對本機事件採取行動。如需詳細資訊,請參閱 Amazon 使用者指南中的使 CloudWatch 用 Amazon 指 CloudWatch 標。
此連接器會接收指標資料當做 MQTT 訊息。連接器會批次處於相同命名空間中的量度,並定期將其發佈 CloudWatch 至。
此連接器具有下列版本。
版本 |
ARN |
---|---|
5 |
|
4 |
|
3 |
|
2 |
|
1 |
|
如需版本變更的詳細資訊,請參閱 Changelog。
要求
此連接器有下列要求:
連接器參數
此連接器提供下列參數:
建立範例連接器 (AWS CLI)
下列 CLI 命令會建立ConnectorDefinition
包含「 CloudWatch 度量」連接器的初始版本。
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{ "Connectors": [ { "Id": "MyCloudWatchMetricsConnector", "ConnectorArn": "arn:aws:greengrass:
region
::/connectors/CloudWatchMetrics/versions/4", "Parameters": { "PublishInterval" : "600", "PublishRegion" : "us-west-2", "MemorySize" : "16", "MaxMetricsToRetain" : "2500", "IsolationMode" : "GreengrassContainer" } } ] }'
在AWS IoT Greengrass主控台中,您可以從群組的 [連接器] 頁面新增連接器。如需詳細資訊,請參閱 Greengrass 連接器入門 (主控台)。
輸入資料
此連接器接受 MQTT 主題的度量,並將量度發佈至。 CloudWatch輸入訊息必須為 JSON 格式。
- 訂閱中的主題篩選條件
-
cloudwatch/metric/put
- 訊息屬性
-
request
-
此訊息中指標的相關資訊。
請求物件包含要發佈到 CloudWatch 的指標資料。測量結果值必須符合
PutMetricData
API 的規格。只需要namespace
、metricData.metricName
和metricData.value
屬性。需要:
true
類型:
object
包括以下屬性:namespace
-
此要求中測量結果資料的使用者定義命名空間。 CloudWatch 使用命名空間做為量度資料點的容器。
注意
您無法指定以保留字串開頭的命名空間
AWS/
。需要:
true
類型:
string
有效模式:
[^:].*
metricData
-
指標的資料。
需要:
true
類型:
object
包括以下屬性:metricName
-
指標的名稱
需要:
true
類型:
string
dimensions
-
與指標相關聯的維度。維度提供指標及其資料的詳細資訊。一個指標可以定義最多 10 個維度。
此連接器會自動包含名為的維度
coreName
,其中的值是核心的名稱。需要:
false
類型:包含下列屬性
array
的維度物件:name
-
維度名稱。
需要:
false
類型:
string
value
-
維度值。
需要:
false
類型:
string
timestamp
-
收到測量結果資料的時間,以自之後的秒數表示
Jan 1, 1970 00:00:00 UTC
。如果省略這個值,連接器會使用收到訊息的時間。需要:
false
類型:
timestamp
注意
如果您在此連接器的版本 1 和第 4 版之間使用,建議您在從單一來源傳送多個量度時,分別擷取每個量度的時間戳記。請勿使用變數來儲存時間戳記。
value
-
指標的值。
注意
CloudWatch 拒絕太小或太大的值。值的範圍必須在
8.515920e-109
到1.174271e+108
(Base 10) 或2e-360
到2e360
(Base 2) 之間。不支援特殊值 (例如,NaN
、+Infinity
、-Infinity
)。需要:
true
類型:
double
unit
-
指標的單位。
需要:
false
類型:
string
有效值:
Seconds, Microseconds, Milliseconds, Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes, Bits, Kilobits, Megabits, Gigabits, Terabits, Percent, Count, Bytes/Second, Kilobytes/Second, Megabytes/Second, Gigabytes/Second, Terabytes/Second, Bits/Second, Kilobits/Second, Megabits/Second, Gigabits/Second, Terabits/Second, Count/Second, None
- 限制
-
使用此連接器時, CloudWatch
PutMetricData
API 強加的所有限制都會套用至量度。以下限制特別重要:-
API 承載有 40 KB 限制
-
每一 API 請求 20 個指標
-
PutMetricData
API 每秒 150 筆交易 (TPS)
如需詳細資訊,請參閱 Amazon CloudWatch 使用者指南中的CloudWatch 限制。
-
- 範例輸入
-
{ "request": { "namespace": "Greengrass", "metricData": { "metricName": "latency", "dimensions": [ { "name": "hostname", "value": "test_hostname" } ], "timestamp": 1539027324, "value": 123.0, "unit": "Seconds" } } }
輸出資料
這個連接器會將狀態資訊發佈為輸出資料,且主題為 MQTT。
- 訂閱中的主題篩選條件
-
cloudwatch/metric/put/status
- 範例輸出:成功
-
回應包括測量結果資料的命名空間以及 CloudWatch 回應中的
RequestId
欄位。{ "response": { "cloudwatch_rid":"70573243-d723-11e8-b095-75ff2EXAMPLE", "namespace": "Greengrass", "status":"success" } }
- 範例輸出:失敗
-
{ "response" : { "namespace": "Greengrass", "error": "InvalidInputException", "error_message":"cw metric is invalid", "status":"fail" } }
注意
如果連接器偵測到可重試的錯誤 (例如,連線錯誤),它會在下一個批次中重試發佈。
用法示例
使用下列高階步驟來設定範例 Python 3.7 Lambda 函數,您可以使用此函數來試用連接器。
注意
-
如果您使用其他 Python 運行時,則可以創建一個從 Python 3.x 到 Python 3.7 的符號鏈接。
-
連接器入門 (主控台) 和 連接器入門 (CLI) 主題包含詳細步驟,說明如何設定和部署範例 Twilio 通知連接器。
-
確定您符合連接器的要求。
針對群組角色要求,您必須設定角色以授與必要的許可,並確認已將角色新增至群組。如需詳細資訊,請參閱 管理 Greengrass 群組角色 (主控台) 或 管理 Greengrass 群組角色 (CLI) 。
-
建立並發佈將輸入資料傳送至連接器的 Lambda 函數。
將範例程式碼儲存為 PY 檔案。下載並解壓縮適用於 Python 的AWS IoT Greengrass核心開發套件。然後,建立在根層級包含 PY 檔案和
greengrasssdk
資料夾的 zip 套件。此 zip 套件是您上傳至的部署套件AWS Lambda。建立 Python 3.7 Lambda 函數之後,請發佈函數版本並建立別名。
-
設定 Greengrass 群組。
-
部署群組。
-
在主AWS IoT控台的 [測試] 頁面上,訂閱輸出資料主題,以檢視來自連接器的狀態訊息。Lambda 函數的範例很長,並且會在部署群組後立即開始傳送訊息。
完成測試後,您可以將 Lambda 生命週期設定為隨需 (或
"Pinned": false
在 CLI 中),然後部署群組。這會讓函數停止傳送訊息。
範例
下列範例 Lambda 函數會將輸入訊息傳送至連接器。
import greengrasssdk import time import json iot_client = greengrasssdk.client('iot-data') send_topic = 'cloudwatch/metric/put' def create_request_with_all_fields(): return { "request": { "namespace": "Greengrass_CW_Connector", "metricData": { "metricName": "Count1", "dimensions": [ { "name": "test", "value": "test" } ], "value": 1, "unit": "Seconds", "timestamp": time.time() } } } def publish_basic_message(): messageToPublish = create_request_with_all_fields() print("Message To Publish: ", messageToPublish) iot_client.publish(topic=send_topic, payload=json.dumps(messageToPublish)) publish_basic_message() def lambda_handler(event, context): return
授權
CloudWatch 指標連接器包括下列協力廠商軟體/授權:
-
AWS SDK for Python (Boto3)
/Apache License 2.0 -
botocore
/Apache License 2.0 -
dateutil
/PSF License -
docutils
/BSD 授權、GNU 一般公有授權 (GPL)、Python 軟體基金會授權、公有網域 -
jmespath
/MIT License -
s3transfer
/Apache License 2.0 -
urllib3
/MIT License
此連接器是根據 Greengrass 核心軟體
變更記錄
下表說明每個版本連接器的變更。
版本 |
變更 |
---|---|
5 |
修復了在輸入數據中添加對重複時間戳的支持。 |
4 |
已新增 |
3 |
將 Lambda 執行階段升級至 Python 3.7,這會變更執行階段需求。 |
2 |
可減少過多記錄的修正。 |
1 |
初始版本。 |
Greengrass 群組一次只能包含一個版本的連接器。若要取得有關升級連接器版本的資訊,請參閱升級連接器版本。