|
- terraform {
- required_version = "~> 0.12.21"
- required_providers {
- azurerm = "~> 1.44"
- }
- }
-
- data "azurerm_virtual_machine" "vm" {
- count = length(var.vms)
-
- name = var.vms[count.index].name
- resource_group_name = var.vms[count.index].resource_group_name
- }
-
- resource "azurerm_monitor_action_group" "azag" {
- count = length(var.ags)
-
- name = var.ags[count.index].name
- resource_group_name = var.rg_name
- short_name = var.ags[count.index].short_name
-
- email_receiver {
- name = var.ags[count.index].email_name
- email_address = var.ags[count.index].email_address
- }
-
- tags = var.tags
- }
-
- locals {
- alerts = flatten([
- for azal in var.als : [
- for vm in data.azurerm_virtual_machine.vm : {
- name = join(" on ", [azal.name,vm.name])
- scopes = vm.id
- description = azal.description
- frequency = azal.frequency
- window_size = azal.window_size
- severity = azal.severity
- metric_namespace = azal.metric_namespace
- metric_name = azal.metric_name
- aggregation = azal.aggregation
- operator = azal.operator
- threshold = azal.threshold
- actiongroup_id = azal.actiongroup_id
- }
- ]
- ])
- }
-
- resource "azurerm_monitor_metric_alert" "azalert" {
-
- for_each = {for alert in local.alerts: alert.name => alert}
-
- name = each.key
- resource_group_name = var.rg_name
- scopes = [ each.value.scopes ]
- description = each.value.description
- frequency = each.value.frequency
- window_size = each.value.window_size
- severity = each.value.severity
-
- criteria {
- metric_namespace = each.value.metric_namespace
- metric_name = each.value.metric_name
- aggregation = each.value.aggregation
- operator = each.value.operator
- threshold = each.value.threshold
- }
-
- action {
- action_group_id = element(azurerm_monitor_action_group.azag.*.id, each.value.actiongroup_id)
- }
-
- tags = var.tags
-
- depends_on = [var.azalert_depends_on]
- }
|