入門教學課程 - AWS IoT Core

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

入門教學課程

在此教學課程中,您要建立能夠監控感應器溫度的機群指標,以偵測潛在的異常情況。建立機群指標時,您可以定義彙總查詢,其可偵測溫度超過華氏 80 度的感應器數目。您可以指定每 60 秒執行一次查詢,並會發出查詢結果 CloudWatch,您可以在其中檢視具有潛在高溫風險的感測器數目,並設定警示。為完成此教學課程,您需要使用 AWS CLI

於本教學課程中,您會了解如何:

此教學課程約需 15 分鐘方能完成。

必要條件

設定

若要使用機群指標,請啟用機群索引。若要針對具有指定資料來源和相關組態的物件或物件群組啟用機群索引,請遵循管理物件索引管理物件群組索引中的指示。

設定
  1. 執行下列命令來啟用機群索引,並指定要從中搜尋的資料來源。

    aws iot update-indexing-configuration \ --thing-indexing-configuration "thingIndexingMode=REGISTRY_AND_SHADOW,customFields=[{name=attributes.temperature,type=Number},{name=attributes.rackId,type=String},{name=attributes.stateNormal,type=Boolean}],thingConnectivityIndexingMode=STATUS" \

    上述的 CLI 命令範例可啟用機群索引,支援使用 AWS_Things 索引來搜尋登錄檔資料、影子資料和物件連線狀態。

    組態變更可能需要幾分鐘時間才能完成。在建立機群指標之前,請驗證是否已啟用機群索引。

    若要檢查機群索引是否已啟用,請執行下列 CLI 命令:

    aws --region us-east-1 iot describe-index --index-name "AWS_Things"

    如需詳細資訊,請參閱啟用物件索引

  2. 執行以下 Bash 指令碼來建立十個物件並提供相應描述。

    # Bash script. Type `bash` before running in other shells. Temperatures=(70 71 72 73 74 75 47 97 98 99) Racks=(Rack1 Rack1 Rack2 Rack2 Rack3 Rack4 Rack5 Rack6 Rack6 Rack6) IsNormal=(true true true true true true false false false false) for ((i=0; i < 10; i++)) do thing=$(aws iot create-thing --thing-name "TempSensor$i" --attribute-payload attributes="{temperature=${Temperatures[@]:$i:1},rackId=${Racks[@]:$i:1},stateNormal=${IsNormal[@]:$i:1}}") aws iot describe-thing --thing-name "TempSensor$i" done

    這個指令碼建立了十個物件來表示十個感應器。如下表所述,每個物件都有 temperaturerackId 以及 stateNormal 屬性:

    屬性 資料類型 描述
    temperature Number 以華氏為單位的溫度值
    rackId 字串 包含感應器的伺服器機架 ID
    stateNormal Boolean 感應器溫度值是否正常

    此指令碼的輸出包含十個 JSON 檔案。其中一個 JSON 檔案如下所示:

    { "version": 1, "thingName": "TempSensor0", "defaultClientId": "TempSensor0", "attributes": { "rackId": "Rack1", "stateNormal": "true", "temperature": "70" }, "thingArn": "arn:aws:iot:region:account:thing/TempSensor0", "thingId": "example-thing-id" }

    如需詳細資訊,請參閱建立物件

建立機群指標

若要建立機群指標
  1. 執行下列命令建立名為 high_temp_FM 的機群指標。您可以建立車隊指標,以監控溫度超過華氏 80 度的感測器數量。 CloudWatch

    aws iot create-fleet-metric --metric-name "high_temp_FM" --query-string "thingName:TempSensor* AND attributes.temperature >80" --period 60 --aggregation-field "attributes.temperature" --aggregation-type name=Statistics,values=count

    --metric-name

    資料類型:字串。此 --metric-name 參數會指定機群指標名稱。在此範例中,您建立的是名為 high_temp_FM 的機群指標。

    --query-string

    資料類型:字串。此 --query-string 參數會指定查詢字串。在此範例中,查詢字串意味著查詢名稱以TempSensor及溫度高於華氏 80 度的所有項目。如需詳細資訊,請參閱查詢語法

    --period

    資料類型:整數。此 --period 參數會指定彙總資料的擷取時間 (以秒為單位)。在此範例中,您指定要建立的機群指標每 60 秒擷取一次彙總資料。

    --aggregation-field

    資料類型:字串。此 --aggregation-field 參數會指定要評估的屬性。在此範例中,要評估的是溫度屬性。

    --aggregation-type

    --aggregation-type 參數指定要在機群指標中顯示的統計摘要。您可以為監控任務自訂以下彙總類型的彙總查詢屬性:Statistics (統計數字)、Cardinality (基數) 以及 Percentile (百分位數)。在此範例中,您可以指定彙總類型的計數和統計資料,以傳回具有符合查詢之屬性的裝置計數,換句話說,傳回名稱開TempSensor頭為且溫度高於華氏 80 度的裝置計數。如需詳細資訊,請參閱查詢彙總資料

    此令命的輸出結果如下所示:

    { "metricArn": "arn:aws:iot:region:111122223333:fleetmetric/high_temp_FM", "metricName": "high_temp_FM" }
    注意

    資料點可能需要一點時間才能在其中顯示 CloudWatch。

    若要進一步了解如何建立機群指標,請參閱管理機群指標

    如果無法建立機群指標,請參閱機群指標故障診斷

  2. (選用) 執行下列命令來描述名為 high_temp_FM 的機群指標:

    aws iot describe-fleet-metric --metric-name "high_temp_FM"

    此令命的輸出結果如下所示:

    { "queryVersion": "2017-09-30", "lastModifiedDate": 1625249775.834, "queryString": "*", "period": 60, "metricArn": "arn:aws:iot:region:111122223333:fleetmetric/high_temp_FM", "aggregationField": "registry.version", "version": 1, "aggregationType": { "values": [ "count" ], "name": "Statistics" }, "indexName": "AWS_Things", "creationDate": 1625249775.834, "metricName": "high_temp_FM" }

檢視叢集指標 CloudWatch

建立叢集測量結果後,您可以在中檢視測量結果資料 CloudWatch。在本教程中,您將看到顯示名稱開頭且溫度高於華氏 80 度的TempSensor傳感器數量的度量標準。

若要檢視資料點 CloudWatch
  1. 請在以下位置開啟 CloudWatch 主控台。 https://console.aws.amazon.com/cloudwatch/

  2. 在左側面板的 CloudWatch 功能表上,選擇「度量」以展開子選單,然後選擇「所有量度」。此操作會開啟頁面,其中上半部分會顯示圖形,下半部分則包含四個標籤式區段。

  3. 第一個索引標籤區段「所有指標」會列出您可以在群組中檢視的所有指標,請選擇 IoT FleetMetrics。這包含您的所有機群指標。

  4. All metrics (所有指標) 索引標籤的 Aggregation type (彙總類型) 區段,選擇 Aggregation type (彙總類型) 檢視建立的所有機群指標。

  5. 選擇機群指標,在 Aggregation type (彙總類型) 區段的左側顯示圖表。您會看到指標名稱左側的值 count,這是您在本教學課程的建立機群指標區段中指定的彙總類型值。

  6. 選擇位於 All metrics (所有指標) 索引標籤右側的名為 Graphed metrics (圖表化指標) 的第二個索引標籤,檢視從上一步中選擇的機群指標。

    您應該可以看到如下所示的圖表,其中顯示溫度高於華氏 80 度的感應器數量:

    AWS IoT 艦隊指標
    注意

    中的「期間」屬性 CloudWatch 預設為 5 分鐘。這是顯示在中的數據點之間的時間間隔 CloudWatch。您可以根據需求變更 Period (期間) 設定。

  7. (選用) 您可以設定指標警示。

    1. 在左側面板的 CloudWatch 功能表上,選擇 [警報] 以展開子功能表,然後選擇 [所有鬧鐘]。

    2. Alarms (警示) 頁面中,選擇右上角的 Create alarm (建立警示)。請遵循主控台中的 Create alarm (建立警示) 指示,視需要建立警示。如需詳細資訊,請參閱使用 Amazon CloudWatch 警示

若要進一步了解,請參閱使用 Amazon CloudWatch 指標

如果在中看不到資料點 CloudWatch,請參閱疑難排解叢集指標

清除

刪除機群指標

可以使用 delete-fleet-metric CLI 命令來刪除機群指標。

若要刪除名為 high_temp_FM 的機群指標,請執行下列命令。

aws iot delete-fleet-metric --metric-name "high_temp_FM"

清理物件

可以使用 delete-thing CLI 命令來刪除物件。

若要刪除您已建立的十個物件,請執行下列指令碼:

# Bash script. Type `bash` before running in other shells. for ((i=0; i < 10; i++)) do thing=$(aws iot delete-thing --thing-name "TempSensor$i") done

若要清理量度 CloudWatch

CloudWatch 不支援指標刪除。指標的過期時間因保留排程而定。若要進一步了解,請使用 Amazon CloudWatch 指標