教程:在 Azure Data Explorer 中引入和查询监视数据

本教程介绍如何在不编写代码的情况下将数据从诊断和活动日志引入Azure Data Explorer群集。 通过使用这种简单的引入方法,可以快速开始查询Azure Data Explorer进行数据分析。

本教程中,您将学习如何:

  • 在Azure Data Explorer数据库中创建表和引入映射。
  • 使用更新策略设置引入数据的格式。
  • 创建 event 中心并将其连接到Azure Data Explorer。
  • 从 Azure Monitor 的 诊断指标和日志活动日志 向事件中心流式传输数据。
  • 使用Azure Data Explorer查询引入的数据。

注意事项

在同一Azure位置或区域中创建所有资源。

先决条件

Azure监控数据提供者:诊断指标、日志和活动日志

在以下部分中查看和了解由 Azure Monitor 提供的诊断指标、日志和活动日志中的数据。 基于这些数据架构创建引入管道。 日志中的每个事件都有一组记录。 稍后在本教程中拆分此记录数组。

诊断指标和日志以及活动日志的示例

Azure服务发出Azure诊断指标、日志和活动日志。 这些日志提供有关该服务运行的相关数据。

诊断指标示例

诊断指标聚合时间粒度为 1 分钟的数据。 以下示例演示查询持续时间上的Azure Data Explorer指标事件架构:

{
    "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 Data Explorer 中设置引入管道

设置Azure Data Explorer管道涉及几个步骤,例如表创建和数据引入。 此外,你可以处理、映射和更新数据。

连接到 Azure Data Explorer Web UI

在 Azure Data Explorer TestDatabase 数据库中,选择 Query以打开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 路径具有特殊字符,请将其转义为 ['属性名称']。 有关详细信息,请参阅 JSONPath 语法

将诊断指标和日志映射到表

使用以下查询将诊断指标和日志数据映射到表:

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

为指标和日志数据创建更新策略

为诊断指标创建数据更新策略

  1. 创建一个 function,用于扩展诊断指标记录的集合,以便集合中的每个值获取一个单独的行。 使用 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 Event Hubs命名空间

Azure诊断设置可将指标和日志导出到存储帐户或事件中心。 在本教程中,你将通过事件中心路由指标和日志。 在以下步骤中,您将为诊断指标和日志创建事件中心命名空间和事件中心。 Azure Monitor 为活动日志创建事件中心 insights-operational-logs

  1. 在Azure portal中使用Azure Resource Manager模板创建事件中心。 若要按照本文中的其余步骤作,请右键单击 Deploy 到 Azure 按钮,然后在新窗口中选择 Open部署到 Azure 按钮会跳转至 Azure 门户。

    部署到 Azure 按钮。

  2. 为诊断日志创建事件中心命名空间和事件中心。 了解如何 创建事件中心命名空间

  3. 请使用以下信息填写表格。 对于下表中未列出的任何设置,请使用默认值。

    设置 建议的值 说明
    订阅 订阅 选择要用于事件中心的Azure订阅。
    资源组 test-resource-group 创建新的资源组。
    位置 选择最符合需求的区域。 在其他资源所在的同一位置创建事件中心命名空间。
    命名空间名称 AzureMonitoringData 选择用于标识命名空间的唯一名称。
    事件中心名称 DiagnosticData 事件中心位于命名空间下,该命名空间提供唯一的范围容器。
    消费者组名称 adxpipeline 创建消费者组名称。 消费者组允许多个消费应用程序,每个应用程序都有各自独立的事件流视图。

将Azure监视指标和日志连接到事件中心

现在需要将诊断指标和日志以及活动日志连接到事件中心。

将诊断指标和日志连接到事件中心

选择要从其中导出指标的资源。 多种资源类型支持导出诊断数据,包括事件中心命名空间、Azure Key Vault、Azure IoT Hub和Azure Data Explorer群集。 在本教程中,使用Azure Data Explorer群集作为资源。 可以查看查询性能指标和引入结果日志。

  1. 在Azure portal中选择 Kusto 群集。

  2. 选择“诊断设置”,然后选择“启用诊断”链接 。

    诊断设置。

  3. “诊断设置”窗格打开 。 执行以下步骤:

    1. 将诊断日志数据命名为 ADXExportedData 。

    2. 日志下,选中SucceededIngestionFailedIngestion复选框。

    3. 在“METRIC”下,选中“查询性能”复选框。

    4. 选择 流式传输到事件中心 复选框。

    5. 选择“配置” 。

      “诊断设置”窗格。

  4. 在“选择事件中心”窗格中,配置将数据从诊断日志导出到所创建事件中心的方法 :

    1. 在“选择事件中心命名空间”列表中,选择 AzureMonitoringData 。
    2. 在“选择事件中心名称”列表中,选择“DiagnosticData” 。
    3. 在“选择事件中心策略名称”列表中,选择 RootManagerSharedAccessKey 。
    4. 选择“确定” 。
  5. 选择“保存” 。

查看传输给事件中心的数据

  1. 等待几分钟,直到定义连接,然后活动日志导出到事件中心完成。 转到事件中心命名空间,查看创建的事件中心。

    事件中心已创建。

  2. 查看流入事件中心的数据:

    事件中心的数据。

将事件中心连接到Azure Data Explorer

现在需要为诊断指标和日志以及活动日志创建数据连接。

为诊断指标和日志以及活动日志创建数据连接

  1. 在名为 kustodocs 的 Azure Data Explorer 群集中,在左侧菜单中选择Databases

  2. 数据库窗口中,选择您的TestDatabase数据库。

  3. 在左侧菜单中,选择“数据引入”。

  4. 在“数据引入”窗口中,选择“+ 添加数据连接”。

  5. 在“数据连接”窗口中输入以下信息:

    事件中心数据连接。

  1. 在“数据连接”窗口中使用以下设置

    数据源:

    设置 建议的值 字段说明
    数据连接名称 DiagnosticsLogsConnection 要在Azure Data Explorer中创建的连接的名称。
    事件中心命名空间 AzureMonitoringData 先前选择的用于标识命名空间的名称。
    事件中心 DiagnosticData 你创建的事件中心。
    Consumer group adxpipeline 您在创建的事件中心中定义的消费者组。

    目标表:

    有两个路由选项:静态和动态。 在本教程中,将使用静态路由(默认值),在其中指定表名称、数据格式和映射。 让我的数据包含路由信息保持未选中。

    设置 建议的值 字段说明
    DiagnosticRawRecords 您在 TestDatabase 数据库中创建的表。
    数据格式 JSON 表中使用的格式。
    列映射 DiagnosticRawRecordsMapping TestDatabase 数据库中创建的映射,它将传入的 JSON 数据映射到 DiagnosticRawRecords 表的列名和数据类型。
  2. 选择“创建” 。

查询新的数据表

现已创建用于流送数据的管道。 默认情况下,通过群集进行引入需要 5 分钟,因此请在开始查询之前等待几分钟。

查询诊断指标表

以下查询分析Azure Data Explorer中诊断指标记录中的查询持续时间数据:

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

查询结果:

avg_平均值
00:06.156