您可以Provisioners
在 terraform 中使用以运行 Azure 监视器日志分析查询。
我们已经在本地环境中对此进行了测试,并且运行良好。
以下是使用 terraform 运行 Azure 日志分析保存的搜索查询的步骤:
- 您需要在日志分析工作区中创建一个已保存的搜索查询。
例如,我们创建了一个保存的搜索查询来提取 Heartbeat
特定 VM 的日志。
Heartbeat| where Computer contains '<NameofVirutalMachine>'|summarize count() by bin(TimeGenerated, 1h)
- 使用以下 cmdlet 将搜索查询保存在您的日志分析工作区中:
az monitor log-analytics workspace saved-search create -g <resourcegroupName> --category <categoryofSavedSearch> --workspace-name <LAWorkspaceName> -n <Nameforquery> --display-name <displayName> -q "Heartbeat| where Computer contains '<NameofVM>'|summarize count() by bin(TimeGenerated, 1h)"
有关cmdlet语法的详细信息,请参阅此文档az monitor log-analytics workspace saved-search create
您需要安装 log-analytics 扩展才能在本地运行 az monitor cmdlet。
az 扩展添加 --name
provisioner
如下所示添加到您的 terraform 脚本并运行该脚本。
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "2.44.0"
}
}
}
provider "azurerm" {
features { }
}
resource "null_resource" "testexample" {
provisioner "local-exec" {
command = <<EOT
$QUERY=(az monitor log-analytics workspace saved-search show -g <resourceGroupName> --workspace-name <workSpaceName> -n <NameofSavedSearch> --query query -o tsv)
az monitor log-analytics query -w <GuidofLogAnalyticsWorkspace> --analytics-query $QUERY
EOT
interpreter = ["pwsh","-Command"]
}
}
这是供您参考的示例输出: