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

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

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

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

注意

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

Prerequisites

Azure 監視器資料提供者:診斷計量和記錄與活動記錄

檢視並了解以下 Azure 監視器診斷計量和記錄與活動記錄所提供的資料。 您將根據這些資料結構描述建立擷取管線。 請注意,記錄 (Log) 中的每個事件都具有記錄 (Record) 陣列。 本教學課程稍後將會分割此記錄陣列。

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

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 Data Explorer Web UI

在 Azure Data Explorer TestDatabase 資料庫中,選取 [查詢] 以開啟 Azure Data Explorer Web UI。

查詢頁面。

建立目標資料表

Azure 監視器記錄的結構不是表格式的。 您將操作資料,並將每個事件展開為一或多個記錄。 未經處理的資料將針對活動記錄擷取至名為 ActivityLogsRawRecords 的中繼資料表,並針對診斷計量和記錄擷取至名為 DiagnosticRawRecords 的中繼資料表。 屆時會操作並展開資料。 使用更新原則時,會針對活動記錄將展開的資料擷取至 ActivityLogs 資料表、診斷計量的資料會擷取至 DiagnosticMetrics,診斷記錄的資料則擷取至 DiagnosticLogs。 這表示您必須建立兩個不同的資料表用以擷取活動記錄,並建立三個不同的資料表用以擷取診斷計量和記錄。

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

建立診斷計量的資料表

  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 Data Explorer 叢集。 在本教學課程中,我們將使用 Azure 資料總管叢集作為資源,我們會檢閱查詢效能計量和擷取結果記錄。

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

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

    診斷設定。

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

    1. 將您的診斷記錄資料命名為 ADXExportedData

    2. 在 [記錄] 底下,選取 [SucceededIngestion] 和 [FailedIngestion] 核取方塊。

    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 在您所建立事件中樞中定義的取用者群組。

    目標資料表:

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

    設定 建議的值 欄位描述
    資料表 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