您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn.

Azure Monitor 日志中的查询包(预览版)

查询包是一个资源管理器对象,它充当 Azure Monitor 中日志查询的容器,该容器可用于保存日志查询,并在 Log Analytics 中的多个工作区和其他上下文之间共享这些查询。

查看查询包

可以在 Azure 门户中通过“Log Analytics 查询包”菜单查看和管理查询包。 选择一个查询包可查看和编辑其权限。 有关使用 API 创建查询包的详细信息,请参阅下文。

查看查询包

权限

可以在 Azure 门户中查看查询包时设置其权限。 用户需要拥有以下权限才能使用查询包:

  • 读取者 - 用户可以查看和运行查询包中的所有查询。
  • 参与者 - 用户可以修改现有查询,以及在查询包中添加新查询。

默认查询包

保存第一个查询时,将在名为 LogAnalyticsDefaultResources 的资源组中的每个订阅内自动创建一个名为 DefaultQueryPack 的查询包 。 可以在此查询包中创建查询,或者创建其他查询包,具体取决于你的需求。

使用多个查询包

对于大多数用户而言,有一个默认查询包就足以能够保存和重复使用查询。 不过,出于一些原因(包括在不同的 Log Analytics 会话中加载不同的查询集,以及为不同的查询集合提供不同的权限),你可能需要为组织中的用户创建多个查询包。

使用 API 创建新的查询包时,可以添加标记以便根据业务要求将查询分类。 例如,可以标记某个查询包,以将它关联到组织中的特定部门,或者关联到包含的查询所要解决的问题的严重性。 这样,便可以创建用于不同用户集和各种情况的不同查询集。

查询包定义

每个查询包在 JSON 文件中定义,该文件包含一个或多个查询的定义。 每个查询由一个块表示,如下所示:

{
    "properties":
       {
        "displayName": "Query name that will be displayed in the UI",
        "description": "Query description that will be displayed in the UI",
        "body": "<<query text, standard KQL code>>",
        "related": {
            "categories": [
                "workloads"
            ],
            "resourceTypes": [
                "microsoft.insights/components"
            ],
            "solutions": [
                "logmanagement"
            ]
        },
        "tags": {
            "Tag1": [
                "Value1",
                "Value2"
            ]
        },
   }
}

查询属性

查询包中的每个查询具有以下属性。

属性 说明
displayName Log Analytics 中为每个查询列出的显示名称。
description Log Analytics 中为每个查询显示的查询说明。
body 以 KQL 编写的查询。
相关 查询的相关类别、资源类型和解决方案。 供用户用于在 Log Analytics 中进行分组和筛选以帮助找到其查询。 每个查询中的每个类型最多可以有 10 个。 从 https://api.loganalytics.io/v1/metadata?select=resourceTypes,solutions,categories 中检索允许的值。
标记 供用户用于在 Log Analytics 中进行排序和筛选的附加标记。 分组和筛选查询时,每个标记将添加到类别、资源类型和解决方案。

创建查询包

可以在 Azure 门户的 Log Analytics 查询包边栏选项卡上或使用 REST API 创建查询包。

创建令牌

需使用一个令牌对 API 请求进行身份验证。 可通过多种方法获取令牌,包括使用 armclient。

首先使用以下命令登录到 Azure:

armclient login

然后使用以下命令创建令牌。 该令牌将自动复制到剪贴板,因此你可以将它粘贴到另一个工具中。

armclient token

创建有效负载

请求的有效负载是用于定义一个或多个查询以及查询包要存储到的位置的 JSON。 查询包的名称在下一部分所述的 API 请求中指定。

{
    "location": "eastus",
    "properties":
    {
        "displayName": "Query name that will be displayed in the UI",
        "description": "Query description that will be displayed in the UI",
        "body": "<<query text, standard KQL code>>",
        "related": {
            "categories": [
                "workloads"
            ],
            "resourceTypes": [
                "microsoft.insights/components"
            ],
            "solutions": [
                "logmanagement"
            ]
        },
        "tags": {
            "Tag1": [
                "Value1",
                "Value2"
            ]
        }
    }
}

创建请求

使用以下请求通过 REST API 创建新的查询包。 该请求应使用持有者令牌授权。 内容类型应是 application/json。

POST https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-resource-group/providers/Microsoft.Insights/querypacks/my-query-pack?api-version=2019-09-01-preview

通过一个可以提交 REST API 请求的工具(例如 Fiddler 或 Postman)使用上一部分所述的有效负载来提交请求。 将在有效负载中生成并返回查询 ID。

更新查询包

若要更新查询包,请使用更新的有效负载提交以下请求。 需在此命令中指定查询包 ID。

POST https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-resource-group/providers/Microsoft.Insights/querypacks/my-query-pack/queries/query-id/?api-version=2019-09-01-preview

后续步骤