タイトルの通り、Terraform にて Azure リソースの診断設定を投入する方法を調べていたので、備忘として残しておこうと思います。
前提
- 設定したいリソースは既にある (今回は Application Gateway を例にする)
- 診断設定の送信先のストレージアカウントおよび Log Analytics Workspace も既にある
コード
以下、自分でも試してみたコードです。なお、<>
で括られている箇所 (主に名称) については、それぞれ環境に合った文字列に書き換えてください。
data "azurerm_client_config" "current" {}
data "azurerm_resource_group" "rg" {
name = "<resource_group_name>"
}
data "azurerm_application_gateway" "AppGw01" {
name = "<application_gateway_name>"
resource_group_name = data.azurerm_resource_group.rg.name
}
data "azurerm_storage_account" "StorageAccount01" {
name = "<storage_account_name>"
resource_group_name = data.azurerm_resource_group.rg.name
}
data "azurerm_log_analytics_workspace" "LogAnalyticsWS01" {
name = "<log_analytics_workspace_name>"
resource_group_name = data.azurerm_resource_group.rg.name
}
resource "azurerm_monitor_diagnostic_setting" "DiagSetting01" {
name = "<diagnostic_setting_name>"
target_resource_id = data.azurerm_application_gateway.AppGw01.id
storage_account_id = data.azurerm_storage_account.StorageAccount01.id
log_analytics_workspace_id = data.azurerm_log_analytics_workspace.LogAnalyticsWS01.id
# 複数の診断設定を行う場合、一個ずつ記載する
enabled_log {
# カテゴリ名は、表示内容から半角スペースを削除して指定する
category = "ApplicationGatewayAccessLog"
}
enabled_log {
category = "ApplicationGatewayFirewallLog"
}
metric {
category = "AllMetrics"
}
}
なお、プロバイダの設定などの他に必要なコードについては、基礎的な資料を見てくださいませ🙇♂️
参考リファレンス