共用方式為


監視 Azure 服務匯流排

當您有依賴 Azure 資源的重要應用程式和商務程序時,您會想要監視這些資源的可用性、效能和操作。 本文將介紹 Azure 服務匯流排所產生的監視資料,以及如何使用 Azure 監視器的功能來分析此資料並發出警示。

什麼是 Azure 監視器?

Azure 服務匯流排會使用 Azure 監視器 (這是 Azure 中的完整堆疊監視服務) 來建立監視資料。 Azure 監視器提供一組完整的功能來監視您的 Azure 資源。 其也可以監視其他雲端和內部部署中的資源。

請先閱讀<使用 Azure 監視器監視 Azure 資源>一文,其中會說明下列概念:

  • 什麼是 Azure 監視器?
  • 與監視相關聯的成本
  • 在 Azure 中收集的監視資料
  • 設定資料收集
  • Azure 中用來分析和警示監視資料的標準工具

下列各節以此文章為基礎,說明從 Azure 服務匯流排收集的特定資料。 這些章節也會提供範例,展示如何使用 Azure 工具來設定資料收集和分析此資料。

提示

若要了解 Azure 監視器的相關成本,請參閱 Azure 監視器成本和使用量。 若要瞭解您的資料顯示在 Azure 監視器中要花費的時間,請參閱記錄檔資料擷取時間

從 Azure 服務匯流排監視資料

Azure 服務匯流排會收集與其他 Azure 資源相同類型的監視資料,如監視 Azure 資源中的資料中所述。

如需 Azure 服務匯流排所建立的記錄和計量詳細參考,請參閱 監視資料參考

收集和路由傳送

系統會自動收集和儲存平台計量和活動記錄,但是可以使用診斷設定將其路由至其他位置。

在您建立診斷設定並將其路由至一個或多個位置之前,不會收集並儲存資源記錄。

如需使用 Azure 入口網站、Azure CLI 或 PowerShell 建立診斷設定的詳細程序,請參閱建立診斷設定以在 Azure 中收集平台記錄和計量。 在建立診斷設定時,您可以指定要收集的記錄類別。 Azure 服務匯流排的類別會列在 Azure 服務匯流排監視資料參考中。

注意

Azure 監視器不會在匯出的計量資料中包含維度,這會傳送至目的地,例如 Azure 儲存體、Azure 事件中樞、Log Analytics 等等。

Azure 儲存體

診斷記錄資訊會儲存在名為 insights-logs-operationlogsinsights-metrics-pt1m 的容器中。

作業記錄的範例 URL:https://<Azure Storage account>.blob.core.windows.net/insights-logs-operationallogs/resourceId=/SUBSCRIPTIONS/<Azure subscription ID>/RESOURCEGROUPS/<Resource group name>/PROVIDERS/MICROSOFT.SERVICEBUS/NAMESPACES/<Namespace name>/y=<YEAR>/m=<MONTH-NUMBER>/d=<DAY-NUMBER>/h=<HOUR>/m=<MINUTE>/PT1H.json。 計量記錄的 URL 很類似。

Azure 事件中樞

診斷記錄資訊會儲存在名為 insights-logs-operationlogsinsights-metrics-pt1m 的事件中樞。 您也可以選取自己的事件中樞。

Log Analytics

診斷記錄資訊會儲存在名為 AzureDiagnosticsAzureMetrics 的資料表中。

作業記錄輸出範例 (已格式化)

{
	"Environment": "PROD",
	"Region": "East US",
	"ScaleUnit": "PROD-BL2-002",
	"ActivityId": "a097a88a-33e5-4c9c-9c64-20f506ec1375",
	"EventName": "Retrieve Namespace",
	"resourceId": "/SUBSCRIPTIONS/<Azure subscription ID>/RESOURCEGROUPS/SPSBUS0213RG/PROVIDERS/MICROSOFT.SERVICEBUS/NAMESPACES/SPSBUS0213NS",
	"SubscriptionId": "<Azure subscription ID>",
	"EventTimeString": "5/18/2021 3:25:55 AM +00:00",
	"EventProperties": "{\"SubscriptionId\":\"<Azure subscription ID>\",\"Namespace\":\"spsbus0213ns\",\"Via\":\"https://spsbus0213ns.servicebus.windows.net/$Resources/topics?api-version=2017-04&$skip=0&$top=100\",\"TrackingId\":\"a097a88a-33e5-4c9c-9c64-20f506ec1375_M8CH3_M8CH3_G8\"}",
	"Status": "Succeeded",
	"Caller": "rpfrontdoor",
	"category": "OperationalLogs"
}

計量記錄輸出範例 (已格式化)

{
	"count": 1,
	"total": 4,
	"minimum": 4,
	"maximum": 4,
	"average": 4,
	"resourceId": "/SUBSCRIPTIONS/<Azure subscription ID>/RESOURCEGROUPS/SPSBUS0213RG/PROVIDERS/MICROSOFT.SERVICEBUS/NAMESPACES/SPSBUS0213NS",
	"time": "2021-05-18T03:27:00.0000000Z",
	"metricName": "IncomingMessages",
	"timeGrain": "PT1M"
}

重要

啟用這些設定將需要額外的 Azure 服務 (儲存體帳戶、事件中樞或 Log Analytics),這可能會增加您的成本。 若要計算預估成本,請造訪 Azure 定價計算機

注意

當您在診斷設定中啟用計量時,維度資訊目前不會包含在傳送至儲存體帳戶、事件中樞或記錄分析的資訊中。

下列各節將討論您可以收集的計量和記錄。

分析計量

您可以從 Azure 服務匯流排命名空間首頁的 [Azure 監視器] 區段中選取 [計量],以分析 Azure 服務匯流排的計量,以及來自其他 Azure 服務的計量。 如需使用此工具的詳細資料,請參閱使用 Azure 監視器計量總管分析計量。 如需可收集平台計量的清單,請參閱監視 Azure 服務匯流排資料參考計量

已選取 服務匯流排 命名空間的計量總管

如需參考,您可以查看 Azure 監視器中支援的所有資源計量清單。

提示

Azure 監視器計量資料會保留 90 天。 不過,在建立圖表時,只能將 30 天的資料視覺化。 例如,如果您想要將 90 天期間視覺化,您必須將 90 天期間分成三個 30 天的圖表。

篩選和分割

針對支援維度的計量,您可以套用維度值以進行篩選。 例如,新增篩選,並將 EntityName 設定為佇列或主題的名稱。 您可以依維度來分割計量,以視覺化方式顯示計量的不同區段有何差異。 如需篩選和分割的詳細資訊,請參閱 Azure 監視器的進階功能

分析記錄

使用 Azure 監視器 Log Analytics 時需要建立診斷組態,才能將資訊傳送至 Log Analytics。 如需詳細資訊,請參閱收集和路由傳送一節。 Azure 監視器記錄中的數據會儲存在數據表中,每個數據表都有自己的一組唯一屬性。Azure 服務匯流排 能夠將記錄分派至兩個目的地數據表的其中一個-Azure 診斷或Log Analytics中的資源特定數據表。 如需記錄和計量的詳細參考,請參閱 Azure 服務匯流排監視資料參考

重要

當您從 [Azure 服務匯流排] 功能表中選取 [記錄] 時,Log Analytics 會隨即開啟,並將查詢範圍設定為目前工作區。 這表示記錄查詢只會包含來自該資源的資料。 如果您想要執行包含其他資料庫資料或其他 Azure 服務資料的查詢,請從 [Azure 監視器] 功能表中選取 [記錄]。 如需詳細資訊,請參閱 Azure 監視器 Log Analytics 中的記錄查詢範圍和時間範圍

其他 Kusto 查詢

以下是可用來協助您監視 Azure 服務匯流排資源的範例查詢:

  • 取得過去 7 天內的管理作業。

    AzureDiagnostics
    | where TimeGenerated > ago(7d)
    | where ResourceProvider =="MICROSOFT.SERVICEBUS"
    | where Category == "OperationalLogs"
    | summarize count() by EventName_s, _ResourceId
    
  • 取得過去一小時內產生的執行階段稽核記錄。

    AzureDiagnostics
    | where TimeGenerated > ago(1h)
    | where ResourceProvider =="MICROSOFT.SERVICEBUS"
    | where Category == "RuntimeAuditLogs"    
    
  • 取得導致「找不到金鑰」錯誤的金鑰保存庫存取嘗試。

    AzureDiagnostics
    | where ResourceProvider == "MICROSOFT.SERVICEBUS" 
    | where Category == "Error" and OperationName == "wrapkey"
    | project Message, _ResourceId
    
  • 取得過去七天中的錯誤

    AzureDiagnostics
    | where TimeGenerated > ago(7d)
    | where ResourceProvider =="MICROSOFT.SERVICEBUS"
    | where Category == "Error" 
    | summarize count() by EventName_s, _ResourceId
    
  • 取得使用金鑰保存庫執行以停用或還原金鑰的作業。

    AzureDiagnostics
    | where ResourceProvider == "MICROSOFT.SERVICEBUS"
    | where (Category == "info" and (OperationName == "disable" or OperationName == "restore"))
    | project Message, _ResourceId
    
  • 取得所有已自動刪除的實體

    AzureDiagnostics
    | where ResourceProvider == "MICROSOFT.SERVICEBUS"
    | where Category == "OperationalLogs"
    | where EventName_s startswith "AutoDelete"
    | summarize count() by EventName_s, _ResourceId