分享方式:


教學課程:設定及使用IoT中樞的計量和記錄

使用 Azure 監視器從 IoT 中樞收集計量和記錄,以監視解決方案的作業,並在問題發生時進行疑難解答。 在本教學課程中,您將瞭解如何根據計量建立圖表、如何建立觸發計量的警示、如何將 IoT 中樞 作業和錯誤傳送至 Azure 監視器記錄,以及如何檢查記錄中是否有錯誤。

本教學課程使用 .NET 中的 Azure 範例 傳送遙測快速入門 ,將訊息傳送至 IoT 中樞。 您一律可以使用裝置或其他範例來傳送訊息,但您可能必須據以修改幾個步驟。

在開始本教學課程之前,某些熟悉 Azure 監視器概念可能很有説明。 若要深入瞭解,請參閱監視 IoT 中樞。 若要深入瞭解 IoT 中樞 所發出的計量和資源記錄,請參閱監視數據參考

在本教學課程中,您會執行下列工作:

  • 使用 Azure CLI 建立 IoT 中樞、註冊模擬裝置,以及建立 Log Analytics 工作區。
  • 將 IoT 中樞 連線和裝置遙測資源記錄傳送至Log Analytics工作區中的 Azure 監視器記錄。
  • 使用計量總管,根據選取的計量建立圖表,並將其釘選到您的儀錶板。
  • 建立計量警示,以便在發生重要情況時透過電子郵件通知您。
  • 下載並執行模擬將訊息傳送至IoT中樞的IoT裝置的應用程式。
  • 檢視條件發生時的警示。
  • 檢視儀錶板上的計量圖表。
  • 在 Azure 監視器記錄中檢視 IoT 中樞 錯誤和作業。

必要條件

  • Azure 訂用帳戶。 如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶

  • 開發電腦上的 .NET Core SDK 2.1 或更新版本。 您可以從 .NET 下載適用於多個平臺的 .NET Core SDK。

    您可以使用下列命令來確認開發電腦上的目前 C# 版本:

    dotnet --version
    
  • 能夠接收郵件的電子郵件帳戶。

  • 請確定您的防火牆中已開啟埠 8883。 本教學課程中的裝置範例會使用透過埠 8883 通訊的 MQTT 通訊協定。 某些公司和教育網路環境可能會封鎖此連接埠。 如需此問題的詳細資訊和解決方法,請參閱連線至 IoT 中樞 (MQTT)

設定資源

在本教學課程中,您需要IoT中樞、Log Analytics工作區和模擬IoT裝置。 您可以使用 Azure 入口網站、Azure CLI 或 PowerShell 來建立這些資源。 針對所有資源使用相同的資源群組和位置。 然後,當您完成本教學課程時,您可以藉由刪除資源群組,一個步驟移除所有專案。

在本教學課程中,我們提供了執行下列步驟的 CLI 腳本:

  1. 建立資源群組

  2. 建立IoT中樞。

  3. 建立 Log Analytics 工作區。

  4. 註冊模擬裝置的裝置身分識別,以將訊息傳送至IoT中樞。 儲存裝置 連接字串 以用來設定模擬裝置。

使用 Azure CLI 設定資源

將下列命令複製並貼到 Cloud Shell 或已安裝 Azure CLI 的本機命令行實例中。 某些命令可能需要一些時間才能執行。 新的資源會建立在資源群組 ContosoResources 中。

某些資源的名稱在整個 Azure 中必須是唯一的。 腳本會使用 $RANDOM 函式產生隨機值,並將其儲存在變數中。 針對這些資源,腳本會將這個隨機值附加至資源的基底名稱,使資源名稱是唯一的。

設定不需要全域唯一的資源名稱值。

location=westus
resourceGroup=ContosoResources
iotDeviceName=Contoso-Test-Device

設定必須是唯一的資源名稱值。 這些名稱的隨機數會串連結。

randomValue=$RANDOM
iotHubName=ContosoTestHub$randomValue
echo "IoT hub name = " $iotHubName
workspaceName=contoso-la-workspace$randomValue
echo "Log Analytics workspace name = " $workspaceName

建立要用於本教學課程之所有資源的資源群組。

az group create --name $resourceGroup --location $location

在免費層中建立IoT中樞。 每個訂用帳戶只能有一個免費的 IoT 中樞。 如果您已經有免費中樞,請將 --sku 值變更為 B1 (basic) 或 S1 (standard)。

az iot hub create --name $iotHubName --resource-group $resourceGroup --partition-count 2 --sku F1 --location $location

建立 Log Analytics 工作區

az monitor log-analytics workspace create --resource-group $resourceGroup --workspace-name $workspaceName --location $location

建立要用於測試的IoT裝置身分識別。

az iot hub device-identity create --device-id $iotDeviceName --hub-name $iotHubName

擷取裝置身分識別的主要 連接字串,然後將它複製到本機。 您需要此 連接字串,才能在測試階段執行裝置模擬。

az iot hub device-identity connection-string show --device-id $iotDeviceName --hub-name $iotHubName

收集連線和裝置遙測的記錄

IoT 中樞 會針對數種作業類別發出資源記錄。 若要檢視這些記錄,您必須建立診斷設定,以將它們傳送至目的地。 其中一個這類目的地是 Azure 監視器記錄,這些記錄會收集在 Log Analytics 工作區中。 IoT 中樞 資源記錄會分組成不同的類別。 您可以在診斷設定中選取要傳送至 Azure 監視器記錄的類別。 在本文中,我們將收集與連線和裝置遙測有關之作業和錯誤的記錄。 如需支援 IoT 中樞 之類別的完整清單,請參閱 IoT 中樞 資源記錄

若要建立診斷設定,將 IoT 中樞 資源記錄傳送至 Azure 監視器記錄,請遵循下列步驟:

  1. Azure 入口網站中,瀏覽至您的 IoT 中樞。 如果您使用 CLI 命令來建立資源,則 IoT 中樞位於資源群組 ContosoResources 中。

  2. 從導覽功能表的 [監視] 區段選取 [診斷設定]。 然後選取 [ 新增診斷設定]。

    醒目提示 [監視] 區段中 [診斷設定] 的螢幕快照。

  3. 在 [ 診斷設定 ] 頁面上,提供下列詳細數據:

    參數
    診斷設定名稱 提供您的設定描述性名稱,例如「將連線和遙測傳送至記錄」。
    記錄 從 [類別] 清單中選取 [連線 和裝置遙測]。
    目的地詳細資料 選取 [ 傳送至 Log Analytics 工作區],然後使用 Log Analytics 工作區選擇器來選取您先前注意到的工作區。

    顯示最終診斷記錄設定的螢幕快照。

  4. 選取 [儲存] 以儲存設定。 關閉 [ 診斷] 設定 窗格。 您可以在診斷設定清單中看到您的新設定。

設定計量

現在,我們將使用計量總管來建立圖表,以顯示您想要追蹤的計量。您會將此圖表釘選到 Azure 入口網站 中的預設儀錶板。

  1. 在IoT中樞功能表中,從 [監視] 區段選取 [計量]。

  2. 在畫面頂端,選取 [過去 24 小時][自動]。 在顯示的下拉式清單中,針對 [時間範圍] 選取 [過去 4 小時],將 [時間粒度] 設定1 分鐘,然後選取 [本機] 作為 [顯示時間]。 選取 [ 套用 ] 以儲存這些設定。 設定現在應該會顯示當地時間:過去 4 小時(1 分鐘)。

    顯示計量時間設定的螢幕快照。

  3. 在圖表上,部分計量設定會顯示在IoT中樞的範圍內。 將 [範圍] 和 [計量命名空間] 值保留為預設值。 選取 [ 計量 ] 設定並輸入 “Telemetry”,然後從下拉式清單中選取 [遙測 訊息]。 匯總 會自動設定為 Sum。 請注意,圖表的標題也會變更。

    顯示將遙測訊息傳送計量新增至圖表的螢幕快照。

  4. 現在,選取 [ 新增計量 ] 以將另一個計量新增至圖表。 在 [計量] 底下,選取 [已使用的訊息總數]。 針對 [ 匯總],選取 [ 平均]。再次請注意,圖表的標題已變更為包含此計量。

    現在,您的畫面會顯示已傳送遙測訊息的最小化計量,以及所用訊息總數的新計量

    顯示將已使用計量新增至圖表之訊息總數的螢幕快照。

  5. 在圖表右上角,選取 [ 儲存至儀錶板 ],然後從下拉式清單中選擇 [ 釘選到儀錶板 ]。

    醒目提示 [儲存至儀錶板] 按鈕的螢幕快照。

  6. 在 [ 釘選到儀錶板 ] 窗格中,選取 [ 現有] 索引標籤。選取 [私人 ],然後從 [儀錶板] 下拉式清單中選取 [儀錶板 ]。 最後,選取 [選] 將圖表釘選到 Azure 入口網站 的默認儀錶板。 如果您未將圖表釘選到儀錶板,則結束計量總管時不會保留您的設定。

    顯示 [釘選到儀錶板] 設定的螢幕快照。

設定計量警示

現在,我們將設定警示以在兩個計量上觸發: 已傳送 的遙測訊息和 使用的訊息總數。

傳送 的遙測訊息是追蹤訊息輸送量並避免受到節流的良好計量。 針對免費層中的IoT中樞,節流限制為100則訊息/秒。使用單一裝置時,我們無法達到這類輸送量,因此,如果訊息數目在 5 分鐘內超過 1000,我們會設定警示來觸發。 在生產環境中,您可以根據IoT中樞的層級、版本和單位數目,將訊號設定為更重要的值。

使用的 訊息總數會追蹤所使用的每日訊息數目。 此計量會在每天 00:00 UTC 重設。 如果您超過每日配額超過特定閾值,您的 IoT 中樞 將不再接受訊息。 對於免費層中的IoT中樞,每日訊息配額為8000。 如果訊息總數超過配額的 4000, 50%, 我們會設定警示來觸發。 在實務上,您可能會將此百分比設定為較高的值。 每日配額值取決於IoT中樞的層級、版本和單位數目。

如需使用 IoT 中樞 配額和節流限制的詳細資訊,請參閱配額和節流

若要設定計量警示:

  1. 在IoT中樞功能表中,從 [監視] 區段選取 [警示]。

  2. 選取 [建立警示規則]

    在 [ 建立警示規則 ] 窗格中,有四個區段:

    • 範圍 已設定為 IoT 中樞,因此我們會單獨保留本節。
    • 條件 會設定將觸發警示的訊號和條件。
    • 動作 會設定警示觸發時會發生什麼事。
    • 詳細數據 可讓您設定警示的名稱和描述。
  3. 首先設定警示將觸發的條件。

    1. [條件] 索引卷標隨即開啟,並開啟 [選取訊號] 窗格。 在訊號名稱搜尋方塊中輸入「遙測」,然後選取 [已傳送的遙測訊息]。

      顯示選取計量的螢幕快照。

    2. 在 [設定訊號邏輯] 窗格上,設定或確認 [警示邏輯] 底下的下列欄位(您可以忽略圖表):

      參數
      閾值 靜態
      運算子 大於
      彙總類型 總數
      閾值 1000
      單位 Count
      匯總粒度 (期間) 5 分鐘
      評估頻率 每隔 1 分鐘

      顯示警示條件設定的螢幕快照。

      這些設定會將訊號設定為5分鐘內訊息總數。 此總計會每分鐘評估一次,如果前 5 分鐘的總計超過 1000 則訊息,警示將會觸發。

      選取 [完成] 以儲存訊號邏輯。

  4. 選取 [下一步:動作 ] 以設定警示的動作。

    1. 選取 [建立動作群組]

    2. 在 [建立動作群組] 窗格的 [基本] 索引標籤上,為您的動作群組指定名稱和顯示名稱。

      顯示 [建立動作群組] 窗格 [基本] 索引卷標的螢幕快照。

    3. 選取 [ 通知] 索引標籤 。針對 [ 通知類型],從下拉式清單中選取 [電子郵件/簡訊/推播/語音 ]。 [ 電子郵件/簡訊/推播/語音 ] 窗格隨即開啟。

    4. 在 [ 電子郵件/SMS 訊息/推播/語音 ] 窗格中,選取電子郵件並輸入您的電子郵件地址,然後選取 [ 確定]。

      顯示電子郵件地址設定的螢幕快照。

    5. 回到 [ 通知] 窗格,輸入通知的名稱。

      顯示已完成通知窗格的螢幕快照。

    6. (選擇性)在 [動作群組 動作] 索引標籤上,[ 動作類型 ] 下拉式清單會列出您可以使用警示觸發的動作類型。 在本文中,我們只會使用通知,因此您可以忽略此索引卷標底下的設定。

      顯示 [動作] 窗格上可用動作類型的螢幕快照。

    7. 選取 [ 檢閱和建立] 索引標籤,確認您的設定,然後選取 [ 建立]。

    8. 回到 [警示規則 動作] 索引標籤上,請注意,新的動作群組已新增至警示的動作。

  5. 選取 [下一步:詳細 數據] 以設定警示規則詳細數據,並儲存警示規則。

    1. 在 [ 詳細數據] 索引標籤上,提供警示的名稱和描述;例如,「如果超過 1000 則訊息超過 5 分鐘時發出警示」。
  6. 選取 [ 檢閱 + 建立 ] 以檢閱警示規則的詳細數據。 如果一切看起來都正確,請選取 [ 建立] 以儲存新的規則。

  7. 現在,為所使用的訊息總數設定另一個警示。 如果您想要在所使用的訊息數目接近IoT中樞的每日配額時傳送警示,此時IoT中樞會開始拒絕訊息,此計量會很有用。 請遵循您先前執行的步驟,但有下列差異。

    • 針對 [ 設定訊號邏輯 ] 窗格上的訊號,選取 [使用的訊息總數]。

    • 在 [ 設定訊號邏輯 ] 窗格上,設定或確認下列字段(您可以忽略圖表):

      參數
      閾值 靜態
      運算子 大於
      彙總類型 總數
      閾值 4000
      單位 Count
      匯總粒度 (期間) 1 分鐘
      評估頻率 每隔 1 分鐘

      這些設定會將訊息數目達到 4000 時引發的訊號。 計量會每分鐘評估一次。

    • 當您指定警示規則的動作時,請選取您為上一個規則建立的動作群組。

    • 針對警示詳細數據,請選擇與您先前不同的名稱和描述。

  8. 選取 [警示],IoT中樞左窗格的 [監視] 底下。 現在,選取 [警示] 窗格頂端功能表上的 [警示規則]。 [ 警示規則] 窗格隨即開啟。 您應該會看到兩個警示:

    顯示 [規則] 窗格與新警示規則的螢幕快照。

  9. 關閉 [ 警示規則 ] 窗格。

透過這些設定,警示將會觸發,而且當超過 1000 封郵件在 5 分鐘的時間範圍內傳送時,您會收到電子郵件通知,而且當使用的訊息總數超過 4000 個時(免費層中 IoT 中樞每日配額的 50%) 時也會收到電子郵件通知。

執行模擬裝置應用程式

在 [設定資源] 區段中,您已註冊裝置身分識別,以用來模擬使用 IoT 裝置。 在本節中,您會下載 .NET 控制台應用程式,以模擬將裝置到雲端訊息傳送至 IoT 中樞的裝置,並將其設定為將這些訊息傳送至 IoT 中樞,然後執行。

重要

警示最多可能需要 10 分鐘的時間,才能由 IoT 中樞 完整設定和啟用。 在您設定最後一個警示和執行模擬裝置應用程式的時間之間,請等候至少 10 分鐘。

從 GitHub 下載或複製 Azure IoT C# SDK 存放庫的解決方案。 此存放庫包含數個範例應用程式。 在本教學課程中,我們將使用 iothub/device/samples/getting started/SimulatedDevice/。

  1. 在本機終端機視窗中,瀏覽至解決方案的根資料夾。 然後流覽至 iothub\device\samples\getting started\SimulatedDevice 資料夾。

  2. 您選擇的文字編輯器中開啟SimulatedDevice.cs 檔案。

    1. 將變數的值s_connectionString取代為您在執行腳本以設定資源時所注意到的裝置 連接字串。

    2. 在方法中 SendDeviceToCloudMessagesAsync ,將 從 1000 變更 Task.Delay 為 1,這可減少從 1 秒傳送訊息到 0.001 秒之間的時間量。 縮短此延遲會增加傳送的訊息數目。 (您可能不會收到每秒 100 則訊息的訊息速率。

      await Task.Delay(1);
      
    3. 將您的變更儲存至 SimulatedDevice.cs

  3. 在本機終端機視窗中,執行下列命令來安裝模擬裝置應用程式所需的套件:

    dotnet restore
    
  4. 在本機終端機視窗中,執行下列命令來建置並執行模擬裝置應用程式:

    dotnet run
    

    下列螢幕快照顯示模擬裝置應用程式將遙測傳送至 IoT 中樞的輸出:

    顯示模擬裝置輸出的螢幕快照。

讓應用程式至少執行 10-15 分鐘。 在理想情況下,讓它執行,直到停止傳送訊息為止(大約 20-30 分鐘)。 當您超過 IoT 中樞的每日訊息配額,且它已停止接受任何其他訊息時,就會發生這種情況。

注意

如果您讓裝置應用程式在停止傳送訊息後長時間執行,您可能會收到例外狀況。 您可以放心地忽略此例外狀況並關閉應用程式視窗。

在儀錶板上檢視計量圖表

  1. 在 Azure 入口網站 左上角,開啟入口網站功能表,然後選取 [儀錶板]。

    如何選取儀錶板的螢幕快照。

  2. 尋找您稍早釘選的圖表,然後按下圖表數據外部磚上的任意位置展開它。 它會顯示已傳送的遙測訊息,以及圖表上所使用的訊息總數。 最新的數位會出現在圖表底部。 您可以在圖表中移動游標,以查看特定時間的計量值。 您也可以變更圖表頂端的時間值和粒度,以縮小或將數據展開至感興趣的時間週期。

    顯示計量圖表的螢幕快照。

    在此案例中,模擬裝置的訊息輸送量不夠大,導致 IoT 中樞 節流其訊息。 在實際牽涉到節流的案例中,您可能會看到傳送的遙測訊息超過IoT中樞的節流限制一段時間。 這是為了容納高載流量。 如需詳細資訊,請參閱 流量成形

檢視警示

當傳送的郵件數目超過您在警示規則中設定的限制時,您就會開始收到電子郵件警示。

若要查看是否有任何作用中的警示,請在IoT中樞左窗格的 [監視] 底下選取 [警示]。 [ 警示 ] 窗格會顯示已針對指定時間範圍依嚴重性引發的警示數目。

顯示警示摘要的螢幕快照。

選取嚴重性 Sev 3 的數據列。 [ 所有警示] 窗格隨即開啟,並列出已引發的 Sev 3 警示。

顯示 [所有警示] 窗格的螢幕快照。

選取其中一個警示以查看警示詳細數據。

顯示警示詳細數據的螢幕快照。

檢查您的收件匣中是否有來自 Microsoft Azure 的電子郵件。 主旨行將描述觸發的警示。 例如, Azure:啟用嚴重性:3 如果超過 1000 則訊息超過 5 分鐘時發出警示。 本文看起來會類似下圖:

顯示警示已引發之電子郵件的螢幕快照。

檢視 Azure 監視器記錄

在 [ 收集連線和裝置遙測 的記錄] 區段中,您已建立診斷設定,以將IoT中樞發出的資源記錄傳送至 Azure 監視器記錄的連線和裝置遙測作業。 在本節中,您將針對 Azure 監視器記錄執行 Kusto 查詢,以觀察發生的任何錯誤。

  1. [Azure 入口網站 IoT 中樞左窗格中的 [監視] 下,選取 [記錄]。 如果開啟 [查詢] 視窗,請關閉初始 查詢 視窗。

  2. 在 [新增查詢] 窗格中,選取 [查詢] 索引卷標,然後展開 [IoT 中樞 以查看默認查詢的清單。

    IoT 中樞 預設查詢的螢幕快照。

  3. 選取 [ 錯誤摘要 查詢]。 查詢會出現在 [查詢編輯器] 窗格中。 在編輯器窗格中選取 [ 執行 ],並觀察查詢結果。 展開其中一個數據列以查看詳細數據。

    錯誤摘要查詢所傳回記錄的螢幕快照。

    注意

    如果您沒有看到任何錯誤,請嘗試執行最近連線的 裝置 查詢。 這應該會傳回模擬裝置的數據列。

清除資源

若要移除您在本教學課程中建立的所有資源,請刪除資源群組。 此動作會刪除群組中包含的所有資源。 在此情況下,它會移除IoT中樞、Log Analytics工作區和資源群組本身。 如果您已將計量圖表釘選到儀錶板,您必須按兩下每個圖表右上角的三個點,然後選取 [移除],以手動移除它們。 請務必在刪除圖表之後儲存變更。

若要移除資源群組,請使用 az group delete 命令。

az group delete --name ContosoResources

下一步

在本教學課程中,您已瞭解如何執行下列工作來使用 IoT 中樞 計量和記錄:

  • 使用 Azure CLI 建立 IoT 中樞、註冊模擬裝置,以及建立 Log Analytics 工作區。
  • 將 IoT 中樞 連線和裝置遙測資源記錄傳送至Log Analytics工作區中的 Azure 監視器記錄。
  • 使用計量總管,根據選取的計量建立圖表,並將其釘選到您的儀錶板。
  • 建立計量警示,以便在發生重要情況時透過電子郵件通知您。
  • 下載並執行模擬將訊息傳送至IoT中樞的IoT裝置的應用程式。
  • 檢視條件發生時的警示。
  • 檢視儀錶板上的計量圖表。
  • 在 Azure 監視器記錄中檢視 IoT 中樞 錯誤和作業。

請繼續進行下一個教學課程,以瞭解如何測試 IoT 中樞 的災害復原功能。