杭州电子商务研究院

使用 Kusto 查询语言查询 Azure Monitor 数据

2020-10-20 08:00飞浪

介绍

使用 Kusto 查询语言 (KQL) 查询 Azure Monitor 数据。KQL 旨在易于创作、读取和自动化。使用 KQL,您可以分析大量数据以满足诊断、监视和报告需求。在本指南中,您将了解如何在 KQL 中执行一些常见查询,包括如何在结构化和半结构化数据中查询遥测。

哪些数据是可查询的?

广义上讲,Azure Monitor 从 Azure 资源中捕获三种类型的数据。 其中包括:

  • Azure 诊断日志提供对特定资源执行的操作的历史记录。并非所有 Azure 资源都支持诊断日志,需要为每个资源单独启用它们。如果已配置,您可以捕获 Azure 虚拟机的失败任务计划程序事件或 Azure 存储帐户的经过身份验证的请求。
  • Azure 活动存储有关 Azure 资源的更改(由谁在何时更改)的 Azure 管理日志。您可以使用它来查看创建了哪些资源或特定用户创建或删除的所有资源的历史记录。
  • Azure Metrics提供 Azure 资源的运行状况、使用情况和容量的聚合时间序列数据。

要从 Azure 门户开始查询此数据,请导航到Azure Monitor 资源并单击“日志”边栏选项卡。打开后,选择查询范围。您可以选择查询整个订阅、资源组或特定资源的 Azure Monitor 日志。

查询 Azure 活动数据

Azure 活动提供有关管理活动的详细信息,包括资源更改的人员、内容和时间信息。打开“日志”边栏选项卡后,即可开始查询数据。

通过AzureActivity表访问数据。通过附加| where 来筛选结果。

以下代码片段展示了如何查询该表并过滤结果的一些示例:

      // filter azure activity by a specific user
AzureActivity
| where Caller == "user@example.com"

// filter azure activity by resource type
AzureActivity
| where ResourceProviderValue == "Microsoft.Web"

// check if any app service plan scaled to 5 instances or more
AzureActivity
| where OperationName == "Autoscale scale up initiated"
| where parse_json(Properties).NewInstancesCount >= 5
    

查询诊断日志遥测

某些 Azure 服务可以记录服务独有的诊断遥测数据。Microsoft 的Azure Monitor 监控哪些内容?文档详细介绍了哪些服务受支持。这些诊断日志也需要单独启用。

本节将使用 Azure SQL 数据库来演示可以从 Azure Monitor 查询的一些信息。

您可以运行以下查询来获取您自己的工作区中可用的诊断日志的概览。

      AzureDiagnostics
| summarize count() by ResourceType, OperationName
    

输出:

      | ResourceType      | OperationName                        | Count |
| SERVERS/DATABASES | QueryStoreWaitStatisticsEvent        | 100   |
| SERVERS/DATABASES | DatabaseWaitStatistcsEvent           | 110   |
| SERVERS/DATABASES | QueryStoreRuntimeStatisticsEvent     | 1000  |
| SERVERS/DATABASES | AutomaticTuningSettingsSnapshotEvent | 100   |
| SERVERS/DATABASES | ErrorEvent                           | 100   |
    

Microsoft 有关Azure SQL 数据库诊断遥测导出的文档提供了有关每个事件所代表含义的更多详细信息。

从这里,您可以缩小到特定的操作类型和服务。

      AzureDiagnostics
| where OperationName == 'ErrorEvent'
| summarize count() by Message, DatabaseName_s, LogicalServerName_s
    

此查询按数据库汇总错误数量。您还可以更改时间范围以深入了解特定事件。

请注意,某些属性以_s、_d和_t结尾。这告诉您该列中存储的数据类型,其中_s是字符串,_d是双精度型,_t是时间戳。

结论

Azure Monitor 提供了一组丰富的功能,用于捕获、查询、警报和监视 Azure 资源。您编写的查询将取决于您当前正在使用的 Azure 资源。您可以在 Microsoft 文档中阅读有关Azure Monitor 监视的内容和Kusto 查询语言的更多信息,以深入了解 Azure 订阅的运行情况。

曝光32635浏览1763