使用 Bicep,我可以使用
将 KQL 查询和函数部署到 Log Analytics 工作区resource azLogAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2021-06-01'
existing = {
name: 'my-la'
}
resource kqlHealthQuery1 'Microsoft.OperationalInsights/workspaces/savedSearches@2020-08-01' = {
name: 'myHealthFunction'
parent: azLogAnalyticsWorkspace
properties: {
category: 'Health'
displayName: 'My First Function'
functionAlias: 'MyFirstFunction'
query: loadTextContent('./Sample.kql')
tags: [{name: 'type', value: 'health' }]
}
}
此功能显示在“功能”选项卡上的“工作区功能”下。
现在我想使用这些 KQL 函数来查询 Application Insights 表,例如跟踪和异常。但是,当我打开 Log Analytics 并将范围更改为我的 Application Insights 实例时,我不再看到这些函数。我只看到一个文件夹“组件功能”,其中只有一个我从 UI 手动保存的功能。
如何使用 Bicep 部署 KQL 函数,使其显示在 Application Insights 的“组件函数”中?
由于 Bicep 的问题,我决定尝试使用 Terraform。使用如下代码,可以按预期工作。
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~>2.0"
}
}
}
# Azurerm Provider configuration
provider "azurerm" {
features {}
}
resource "azurerm_resource_group" "parent_group" {
name = "my-poc"
location = "westeurope"
}
resource "azurerm_application_insights" "myAi" {
name = "mypoc-ai"
location = "westeurope"
application_type = "web"
resource_group_name = azurerm_resource_group.parent_group.name
lifecycle {
ignore_changes = [
tags,
sampling_percentage,
workspace_id,
timeouts
]
}
}
resource "azurerm_application_insights_analytics_item" "myAiFunc" {
application_insights_id = azurerm_application_insights.myAi.id
type = "function" # must be query, function, folder or recent
name = "item"
scope = "shared"
function_alias = "Foo"
content = "This is an example"
}
只需将其保存到 main.tf 并运行
terraform import azurerm_resource_group.parent_group <id of resource group>
terraform import azurerm_application_insights.myAi <id of ApplicationInsights>
terraform init
terraform plan
terraform apply