从 Azure cli 而非 Log Monitor 保存的搜索创建 Insights Log 查询

Create Insights Log query from Azure cli not Log Monitor saved search

使用最新的 azure cli (2.28.1)

此处记录了使用 azure cli 针对 Log Analytics 创建 Kusto 查询: https://docs.microsoft.com/en-us/cli/azure/monitor/log-analytics/workspace/saved-search?view=azure-cli-latest

使用保存搜索指令。一个小问题是 cli 总是创建遗留类别而不是非遗留类别,并且标签有时没有正确应用。

但我找不到的是如何使用 cli 创建针对 Insights 的查询。顺利梳理了 Microsoft 文档。 Insights 是 Log Analytics(监视器)的子集,但查询是单独存储的。警报可以针对两个资源组(即 Insights 和 Log Analytics)。

您需要使用 az monitor app-insights query 命令 运行 使用 Azure CLI 的 kusto 查询应用程序洞察。

我们已经在我们的环境中使用以下 cmdlet 进行了测试,可以提取 appid 以获得应用程序洞察力以及 1 天时间段内该特定应用程序的请求总数。

az monitor app-insights component show --app <app-insightsName> --resource-group <resource-Name> --query appId
az monitor app-insights query --app <appId> --analytics-query 'requests | summarize count() by bin(timestamp, 24h)' --offset 1h30m

这里是有关 运行ning app insight analytics-queries 使用 Azure CLI 的更多信息的参考文档。

使用 bicep (az bicep build --file <bicep file>) 可以在模板 (json) 中定义资源定义,然后使用 azure cli (az deployment group create --resource-group <name> --template-file <bicep generated template>)

进行部署

困难的部分是parent and child resources in bicep。需要一个父查询包和一个子查询:

resource querypack 'Microsoft.OperationalInsights/queryPacks@2019-09-01-preview' = 
{
 name: 'DefaultQueryPack'
 location: 'northeurope'
 properties: {}
}

resource query 'Microsoft.OperationalInsights/queryPacks/queries@2019-09-01-preview' = {
  parent: querypack
  name: '6967c00c-9b46-4270-bee0-5a27b8b85cef'
  properties: {
    displayName: 'BadEventsBySdcFileId'
    description: ''
    body: '<kusto query>'
    related: {
        categories: [
            'applications'
        ]
        resourceTypes: [
            'microsoft.insights/components'
        ]
    }
    tags: {}
  }
}

此外,查询资源名称必须是一个 GUID,这在 documentation 中一点也不清楚。在搜索属于项目域的查询时,标签有助于按主题分组。