Timeouts

查询执行时间可能根据以下因素而有很大的差异:

  • 查询的复杂性。
  • 要分析的数据量。
  • 查询时系统上的负载。
  • 查询时工作区上的负载。

您可能需要自定义查询的超时时间。 默认超时为 3 分钟。 最大超时时间为 10 分钟。

超时请求头

若要设置超时,请在 HTTP 请求中使用 Prefer 头,并使用标准的 wait 首选项。 有关详细信息,请参阅 此网站Prefer 头对客户端等待服务处理查询的时长设置上限(以秒为单位)。

响应

如果查询执行时间超过指定的超时时间(如果未指定,则为默认超时时间),则会因 504 Gateway Timeout 状态代码而失败。

例如,以下请求允许的最大服务器超时期限为 30 秒:

POST https://api.loganalytics.azure.cn/v1/workspaces/{workspaceId}/query
Authorization: Bearer {token}
Prefer: wait=30

{
    "query" : "Heartbeat | count"
}

常见 API 错误

本部分包含已知常见错误、原因和可能的解决方案的非详尽列表。 它还包括一些成功的响应,而这些响应通常表明请求存在问题(例如缺少标头)或存在其他非预期行为。

查询语法错误

400 响应:

{
    "error": {
        "message": "The request had some invalid properties",
        "code": "BadArgumentError",
        "innererror": {
            "code": "SyntaxError",
            "message": "Syntax Error"
        }
    }
}

查询字符串格式不正确。 检查是否有额外的空格、标点符号或拼写错误。

未提供身份验证

401 响应:

{
    "error": {
        "code": "AuthenticationFailed",
        "message": "Authentication failed. The 'Authorization' header is missing."
    }
}

在请求中包含身份验证形式,例如标头 "Authorization: Bearer <token>"

身份验证令牌无效

403 响应:

{
    "error": {
        "code": "InvalidAuthenticationToken",
        "message": "The access token is invalid."
    }
}

令牌格式错误或因其他原因无效。 如果手动复制并粘贴令牌,并向有效负载添加或剪切字符,则可能会出现此错误。 验证该令牌是否与从 Microsoft Entra ID 收到的令牌完全一致。

令牌受众无效

403 响应:

{
    "error": {
        "code": "InvalidAuthenticationTokenAudience",
        "message": "The access token has been obtained from wrong audience or resource 'https://api.loganalytics.io'. It should exactly match (including forward slash) with one of the allowed audiences 'https://management.core.chinacloudapi.cn/','https://management.chinacloudapi.cn/'."
    }
}

如果尝试使用客户端凭据 OAuth2 流获取 API 的令牌,然后通过Azure 资源管理器终结点使用该令牌,则会发生此错误。 如果要使用 Azure 资源管理器 终结点,请在令牌请求中使用所示 URL 之一作为资源。 或者,使用直接 API 端点,通过不同的 OAuth2 流程进行授权。

用于定向 API 的客户端凭据

403 响应:

{
    "error": {
        "message": "The provided credentials have insufficient access to perform the requested operation",
        "code": "InsufficientAccessError",
        "innererror": {
            "code": "UnauthorizedClient",
            "message": "The service principal does not have sufficient permissions to access this resource: 997631f8-3a55-4bb2-81b2-c0972b222260"
        }
    }
}

如果尝试通过直接 API 终结点使用客户端凭据,则可能会出现此错误。 如果使用直接 API 终结点,请使用其他 OAuth2 流进行授权。 如果必须使用客户端凭据,请使用Azure 资源管理器 API 终结点。

权限不足

403 响应:

{
    "error": {
        "message": "The provided credentials have insufficient access to perform the requested operation",
        "code": "InsufficientAccessError"
    }
}

您提供用于授权的令牌属于某个用户,但该用户没有获得此权限所需的足够访问权限。 验证工作区 GUID 和令牌请求是否正确。 如有必要,请将工作区中的 IAM 权限授予作为参与者创建的Microsoft Entra应用程序。

注释

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

授权代码错误

403 响应:

{
    "error": "invalid_grant",
    "error_description": "AADSTS70002: Error validating credentials. AADSTS70008: The provided authorization code or refresh token is expired. Send a new interactive authorization request for this user and resource.",
    "error_codes": [
        70002,
        70008
    ]
}

令牌请求中提交的授权代码已过时或以前使用。 通过 Microsoft Entra 授权终结点重新进行授权,以获取新代码。

找不到路径

404 响应:

{
    "error": {
        "message": "The requested path does not exist",
        "code": "PathNotFoundError"
    }
}

请求的查询路径不存在。 检查你正在调用的端点 URL 拼写是否正确,并确认你使用的是受支持的 HTTP 方法。

缺少 JSON 或内容类型

200 响应:空响应体

如果发送 POST 缺少 JSON 正文或 Content-Type: application/json 标头的请求,API 将返回空的 200 响应。

工作区中没有数据

204 响应:响应正文为空

如果工作区中没有数据,API 将返回 204 无内容。