You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 rivejä
2.1 KiB

  1. terraform {
  2. required_version = "~> 0.12.21"
  3. required_providers {
  4. azurerm = "~> 1.44"
  5. }
  6. }
  7. data "azurerm_virtual_machine" "vm" {
  8. count = length(var.vms)
  9. name = var.vms[count.index].name
  10. resource_group_name = var.vms[count.index].resource_group_name
  11. }
  12. resource "azurerm_monitor_action_group" "azag" {
  13. count = length(var.ags)
  14. name = var.ags[count.index].name
  15. resource_group_name = var.rg_name
  16. short_name = var.ags[count.index].short_name
  17. email_receiver {
  18. name = var.ags[count.index].email_name
  19. email_address = var.ags[count.index].email_address
  20. }
  21. tags = var.tags
  22. }
  23. locals {
  24. alerts = flatten([
  25. for azal in var.als : [
  26. for vm in data.azurerm_virtual_machine.vm : {
  27. name = join(" on ", [azal.name,vm.name])
  28. scopes = vm.id
  29. description = azal.description
  30. frequency = azal.frequency
  31. window_size = azal.window_size
  32. severity = azal.severity
  33. metric_namespace = azal.metric_namespace
  34. metric_name = azal.metric_name
  35. aggregation = azal.aggregation
  36. operator = azal.operator
  37. threshold = azal.threshold
  38. actiongroup_id = azal.actiongroup_id
  39. }
  40. ]
  41. ])
  42. }
  43. resource "azurerm_monitor_metric_alert" "azalert" {
  44. for_each = {for alert in local.alerts: alert.name => alert}
  45. name = each.key
  46. resource_group_name = var.rg_name
  47. scopes = [ each.value.scopes ]
  48. description = each.value.description
  49. frequency = each.value.frequency
  50. window_size = each.value.window_size
  51. severity = each.value.severity
  52. criteria {
  53. metric_namespace = each.value.metric_namespace
  54. metric_name = each.value.metric_name
  55. aggregation = each.value.aggregation
  56. operator = each.value.operator
  57. threshold = each.value.threshold
  58. }
  59. action {
  60. action_group_id = element(azurerm_monitor_action_group.azag.*.id, each.value.actiongroup_id)
  61. }
  62. tags = var.tags
  63. depends_on = [var.azalert_depends_on]
  64. }