共用方式為


教學課程:在 Azure 資料總管中擷取和查詢監視資料

本教學課程將教導您如何在不撰寫程式代碼的情況下,將診斷和活動記錄中的數據內嵌至 Azure 數據總管叢集。 透過這個簡單的擷取方法,您可以快速開始查詢 Azure 數據總管以進行數據分析。

在本教學課程中,您將了解如何:

  • 在 Azure 數據總管資料庫中建立數據表和擷取對應。
  • 使用更新原則格式化內嵌的數據。
  • 建立事件中 ,並將其連線到 Azure 數據總管。
  • 從 Azure 監視器診斷計量和活動記錄將數據串流至事件中樞。
  • 使用 Azure 數據總管查詢內嵌的數據。

注意

在相同的 Azure 位置或區域中建立所有資源。

必要條件

Azure 監視器數據提供者:診斷計量和記錄和活動記錄

檢視並瞭解下列 Azure 監視器診斷計量和活動記錄所提供的數據。 您將根據這些數據架構建立擷取管線。 請注意,記錄中的每個事件都有記錄陣列。 本教學課程稍後將會分割此記錄陣列。

診斷計量和活動記錄的範例

Azure 診斷計量和活動記錄是由 Azure 服務發出,並提供該服務作業的相關數據。

診斷計量範例

診斷計量會匯總為1分鐘的時間粒紋。 以下是查詢持續時間上 Azure 數據總管計量事件架構的範例:

{
    "records": [
    {
        "count": 14,
        "total": 0,
        "minimum": 0,
        "maximum": 0,
        "average": 0,
        "resourceId": "/SUBSCRIPTIONS/<subscriptionID>/RESOURCEGROUPS/<resource-group>/PROVIDERS/MICROSOFT.KUSTO/CLUSTERS/<cluster-name>",
        "time": "2018-12-20T17:00:00.0000000Z",
        "metricName": "QueryDuration",
        "timeGrain": "PT1M"
    },
    {
        "count": 12,
        "total": 0,
        "minimum": 0,
        "maximum": 0,
        "average": 0,
        "resourceId": "/SUBSCRIPTIONS/<subscriptionID>/RESOURCEGROUPS/<resource-group>/PROVIDERS/MICROSOFT.KUSTO/CLUSTERS/<cluster-name>",
        "time": "2018-12-21T17:00:00.0000000Z",
        "metricName": "QueryDuration",
        "timeGrain": "PT1M"
    }
    ]
}

在 Azure 數據總管中設定擷取管線

設定 Azure 數據總管線牽涉到數個步驟,例如 數據表建立和數據擷取。 您也可以操作、對應及更新數據。

聯機至 Azure 數據總管 Web UI

在 Azure 數據總管 TestDatabase 資料庫中,選取 [ 查詢 ] 以開啟 Azure 數據總管 Web UI。

查詢頁面。

建立目標數據表

Azure 監視器記錄的結構不是表格式。 您將操作數據,並將每個事件展開至一或多個記錄。 原始數據會擷取至名為 ActivityLogsRawRecords 的中繼數據表,用於活動記錄和 診斷計量和記錄的 DiagnosticRawRecords 。 屆時,將會操作和擴充數據。 使用更新原則,展開的數據接著會擷取到ActivityLogs數據表中的活動記錄、診斷計量的 DiagnosticMetrics,以及診斷記錄的 DiagnosticLogs 這表示您必須建立兩個不同的數據表來擷取活動記錄,以及擷取診斷計量和記錄的三個個別數據表。

使用 Azure 數據總管 Web UI 在 Azure 數據總管資料庫中建立目標數據表。

建立診斷計量的數據表

  1. TestDatabase 資料庫中,建立名為 DiagnosticMetrics 的 數據表來儲存診斷計量記錄。 使用下列 .create table 管理指令:

    .create table DiagnosticMetrics (Timestamp:datetime, ResourceId:string, MetricName:string, Count:int, Total:double, Minimum:double, Maximum:double, Average:double, TimeGrain:string)
    
  2. 選取 [執行] 以建立新資料表。

    執行查詢。

  3. 在 TestDatabase 資料庫中建立名為 DiagnosticRawRecords中繼數據表,以使用下列查詢操作數據。 選取 [執行] 以建立新資料表。

    .create table DiagnosticRawRecords (Records:dynamic)
    
  4. 設定中繼數據表的零 保留原則

    .alter-merge table DiagnosticRawRecords policy retention softdelete = 0d
    

建立數據表對應

因為數據格式為 json,因此需要數據對應。 對應會將 json 每個 json 路徑對應至數據表數據行名稱。 包含特殊字元的 JSON 路徑應逸出為 ['Property Name']。 如需詳細資訊,請參閱 JSONPath 語法

將診斷計量和記錄對應至數據表

若要將診斷計量和記錄數據對應至數據表,請使用下列查詢:

.create table DiagnosticRawRecords ingestion json mapping 'DiagnosticRawRecordsMapping' '[{"column":"Records","Properties":{"path":"$.records"}}]'

建立計量和記錄數據的更新原則

建立診斷計量的數據更新原則

  1. 建立函式,以展開診斷計量記錄的集合,讓集合中的每個值都會收到個別的數據列。 使用 mv-expand 運算子:

    .create function DiagnosticMetricsExpand() {
       DiagnosticRawRecords
       | mv-expand events = Records
       | where isnotempty(events.metricName)
       | project
           Timestamp = todatetime(events['time']),
           ResourceId = tostring(events.resourceId),
           MetricName = tostring(events.metricName),
           Count = toint(events['count']),
           Total = todouble(events.total),
           Minimum = todouble(events.minimum),
           Maximum = todouble(events.maximum),
           Average = todouble(events.average),
           TimeGrain = tostring(events.timeGrain)
    }
    
  2. 更新原則 新增至目標數據表。 此原則會自動對 DiagnosticRawRecords 中繼數據表中任何新擷取的數據執行查詢,並將其結果內嵌至 DiagnosticMetrics 數據表:

    .alter table DiagnosticMetrics policy update @'[{"Source": "DiagnosticRawRecords", "Query": "DiagnosticMetricsExpand()", "IsEnabled": "True", "IsTransactional": true}]'
    

建立 Azure 事件中樞命名空間

Azure 診斷設定可讓您將計量和記錄匯出至記憶體帳戶或事件中樞。 在本教學課程中,我們將透過事件中樞路由傳送計量和記錄。 您將在下列步驟中建立診斷計量和記錄的事件中樞命名空間和事件中樞。 Azure 監視器會建立活動記錄的事件中樞 insights-operational-logs

  1. 在 Azure 入口網站 中使用 Azure Resource Manager 範本建立事件中樞。 若要遵循本文的其餘步驟,請以滑鼠右鍵按兩下 [部署至 Azure ] 按鈕,然後選取 [在新視窗中開啟]。 [部署至 Azure] 按鈕會帶您前往 Azure 入口網站。

    [部署至 Azure] 按鈕。

  2. 建立診斷記錄的事件中樞命名空間和事件中樞。 瞭解如何 建立事件中樞命名空間

  3. 在表單中填寫以下資訊。 針對下表未列出的任何設定,請使用預設值。

    設定 建議的值 說明
    訂用帳戶 您的訂用帳戶 選取您想要用於事件中樞的 Azure 訂用帳戶。
    資源群組 test-resource-group 建立新的資源群組。
    地點 選取最符合您需求的區域。 在與其他資源相同的位置中建立事件中樞命名空間。
    命名空間名稱 AzureMonitoringData 選擇可識別命名空間的唯一名稱。
    事件中樞名稱 DiagnosticData 事件中樞位於 命名空間底下,可提供唯一的範圍容器。
    取用者群組名稱 adxpipeline 建立取用者組名。 取用者群組可讓多個取用應用程式各自擁有事件數據流的個別檢視。

將 Azure 監視器計量和記錄連線到事件中樞

現在,您必須將診斷計量和記錄和活動記錄連線到事件中樞。

將診斷計量和記錄連線到事件中樞

選取要匯出計量的資源。 數種資源類型支援匯出診斷數據,包括事件中樞命名空間、Azure 金鑰保存庫、Azure IoT 中樞 和 Azure 數據總管叢集。 在本教學課程中,我們將使用 Azure 數據總管叢集作為資源,我們將檢閱查詢效能計量和擷取結果記錄。

  1. 在 Azure 入口網站 中選取您的 Kusto 叢集。

  2. 選取 [ 診斷設定],然後選取 [開啟診斷] 連結。

    診斷設定。

  3. [診斷設定] 窗格隨即開啟。 執行下列步驟:

    1. 為您的診斷記錄數據命名 ADXExportedData

    2. 在 [LOG]下,選取 [成功擷取] 和 [失敗擷取] 複選框。

    3. 在 [計量] 底下,選取 [查詢效能] 複選框。

    4. 選取 [串流至事件中樞] 核取方塊。

    5. 選取設定

      [診斷設定] 窗格。

  4. 在 [選取事件中 ] 窗格中,設定如何將診斷記錄中的數據匯出至您所建立的事件中樞:

    1. 在 [選取事件中 樞命名空間 ] 列表中,選取 [AzureMonitoringData]。
    2. 在 [選取事件中 樞名稱] 列表中,選取 [ DiagnosticData]。
    3. 在 [選取事件中 樞原則名稱] 列表中,選取 [RootManagerSharedAccessKey]。
    4. 選取 [確定]。
  5. 選取儲存

查看流向事件中樞的數據

  1. 等候幾分鐘,直到定義連線,然後活動記錄檔匯出至事件中樞完成。 移至事件中樞命名空間,以查看您所建立的事件中樞。

    建立的事件中樞。

  2. 檢視流向事件中樞的數據:

    事件中樞的數據。

將事件中樞連線至 Azure 數據總管

現在,您必須為診斷計量和活動記錄建立數據連線。

建立診斷計量和活動記錄的數據連線

  1. 在名為 kustodocs 的 Azure 數據總管叢集中,選取 左側功能表中的 [資料庫 ]。

  2. 在 [ 資料庫] 視窗中,選取您的 TestDatabase 資料庫。

  3. 在左側功能表中,選取 [數據擷取]。

  4. 在 [ 數據擷取 ] 視窗中,選取 [+ 新增數據連線]。

  5. 在 [ 資料連線 ] 視窗中,輸入下列資訊:

    事件中樞數據連線。

  1. 在 [ 資料連線 ] 視窗中使用下列設定:

    資料來源:

    設定 建議的值 欄位描述
    數據連線名稱 DiagnosticsLogsConnection 您想要在 Azure 資料總管中建立的連接名稱。
    事件中樞命名空間 AzureMonitoringData 您稍早選擇用來識別命名空間的名稱。
    事件中樞 DiagnosticData 您建立的事件中樞。
    取用者群組 adxpipeline 在您建立的事件中樞內定義的取用者群組。

    目標資料表:

    路由有兩個選項: 靜態動態。 在本教學課程中,您將使用靜態路由(預設值),您可以在其中指定數據表名稱、數據格式和對應。 保留 [我的數據] 包含未選取的路由資訊

    設定 建議的值 欄位描述
    Table DiagnosticRawRecords 您在 TestDatabase 資料庫中建立的資料表。
    資料格式 JSON 表格中使用的格式。
    資料行對應 DiagnosticRawRecordsMapping 您在 TestDatabase 資料庫中建立的對應,會將傳入的 JSON 數據對應至 DiagnosticRawRecords 數據表的數據行名稱和數據類型。
  2. 選取 建立

查詢新的數據表

您現在有數據流的管線。 依預設,透過叢集擷取需要 5 分鐘的時間,因此允許數據在開始查詢之前流動幾分鐘。

查詢診斷計量數據表

下列查詢會分析 Azure 數據總管中診斷計量記錄中的查詢持續時間資料:

DiagnosticMetrics
| where Timestamp > ago(15m) and MetricName == 'QueryDuration'
| summarize avg(Average)

查詢結果:

avg_Average
00:06.156