0

我想使用 Terraform 显示来自日志分析工作区的日志。我在文档中看到了这些 AZ CLI 命令(链接):

在过去 3.5 天内执行一个简单的查询:

az monitor log-analytics query -w workspace-customId --analytics-query "AzureActivity | summarize count() by bin(timestamp, 1h)" -t P3DT12H

在工作区中执行保存的查询:

QUERY=$(az monitor log-analytics workspace saved-search show -g resource-group --workspace-name workspace-name -n query-name --query query --output tsv)

az monitor log-analytics query -w workspace-customId --analytics-query "$QUERY"

您知道我们如何使用 Terraform 做到这一点吗?(运行查询 az 监视器)

只需显示日志条目,无需创建警报。

4

1 回答 1

0

您可以Provisioners在 terraform 中使用以运行 Azure 监视器日志分析查询。

我们已经在本地环境中对此进行了测试,并且运行良好。

以下是使用 terraform 运行 Azure 日志分析保存的搜索查询的步骤:

  1. 您需要在日志分析工作区中创建一个已保存的搜索查询。

例如,我们创建了一个保存的搜索查询来提取 Heartbeat特定 VM 的日志。

Heartbeat| where Computer contains '<NameofVirutalMachine>'|summarize count() by bin(TimeGenerated, 1h)
  1. 使用以下 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

  1. 您需要安装 log-analytics 扩展才能在本地运行 az monitor cmdlet。

    az 扩展添加 --name

  2. 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"]

}
}

这是供您参考的示例输出:

在此处输入图像描述

于 2022-01-17T12:04:09.217 回答