Azure Monitor日志查询 API 概述

使用日志查询 API 查询Azure Monitor日志收集的完整数据集。 此 REST API 使用在整个服务中使用的相同查询语言来检索数据、生成数据的新可视化效果,并扩展Log Analytics的功能。 有关更广泛的Azure Monitor API 图面,请参阅 Azure Monitor REST API 索引的日志查询部分。

查询端点

所有查询都通过公共 REST 终结点以Log Analytics工作区为目标:

POST https://api.loganalytics.azure.cn/v1/workspaces/{workspaceId}/query
Authorization: Bearer {accessToken}
Content-Type: application/json

{
  "query": "AzureActivity | summarize count() by Category",
  "timespan": "PT12H"
}

{workspaceId} 替换为 Log Analytics 工作区的 GUID,并将 {accessToken} 替换为 Microsoft Entra 持有者令牌。

API 返回包含数组的 tables JSON 响应。 每个表包括 columns (架构)和 rows (数据):

{
  "tables": [
    {
      "name": "PrimaryResult",
      "columns": [
        { "name": "Category", "type": "string" },
        { "name": "count_", "type": "long" }
      ],
      "rows": [
        ["Administrative", 20839],
        ["Recommendation", 122],
        ["Alert", 64],
        ["ServiceHealth", 11]
      ]
    }
  ]
}

有关完整请求参数引用(包括 timespan 和跨工作区选项),请参阅 请求格式。 有关详细的响应结构和错误处理,请参阅 响应格式

日志查询 API 身份验证

应用程序必须进行身份验证才能访问日志查询 API:

  • 若要查询工作区,必须使用 Microsoft Entra 身份验证
  • 若要在不使用Microsoft Entra身份验证的情况下快速浏览 API,请使用演示 API 密钥在非生产测试环境中查询示例数据。

针对工作区数据的 Microsoft Entra 身份验证

日志查询 API 支持使用 Microsoft Entra ID OAuth2 进行Microsoft Entra身份验证。 选择适合应用程序的流:

  • 授权代码(使用 PKCE,建议用于交互式应用)
  • 客户端凭据(用于非交互式的服务间访问)

隐式授权流支持向后兼容性,但不再推荐使用。 对于新应用程序,将授权代码流与 PKCE 或客户端凭据流配合使用。

授权代码流至少需要用户以交互方式登录到您的应用程序一次。 如果需要不交互的流,请使用客户端凭据流。

收到令牌后,调用日志查询 API 的过程对所有流都是相同的。 请求需要 Authorization: Bearer 标头,其中填充了从 OAuth2 流收到的令牌。

注意

使用Microsoft Entra身份验证时,日志查询 API 可能需要几分钟才能识别新的基于角色的访问控制权限。 虽然权限正在传播,但 REST API 调用可能会失败,错误代码为 403。

针对示例数据的 API 密钥身份验证

若要在不使用Microsoft Entra身份验证的情况下快速浏览 API,Microsoft提供了包含示例数据的演示工作区。 使用 API 密钥进行身份验证

日志查询 API 限制

API 对并发、结果大小、查询持续时间和限制速率强制实施限制。 这些限制适用于每个工作区,具体取决于查询源。 有关阈值的完整列表,请参阅 查询 API 限制

客户端库和命令行工具

Azure Monitor支持各种编程语言的客户端库。 这些库不是直接调用 REST API,而是提供一个包装器来调用日志查询 API,该 API 还处理身份验证、重试和响应分析。 客户端库适用于:

使用Azure CLI或Azure PowerShell以类似的方式从命令行查询:

使用 az monitor log-analytics query 对工作区运行 KQL 查询。

az monitor log-analytics query \
  --workspace "myWorkspaceId" \
  --analytics-query "AzureActivity | summarize count() by Category" \
  --timespan "PT12H"

试用 API

若要在不编写代码的情况下浏览 API,请使用 API 客户端(如 BrunoInsomnia )通过可视化界面生成查询。 还可以使用命令行中的 cURL ,并将输出通过管道传递到 jsonlint 中以获取可读 JSON。