Skip to content

Commit

Permalink
Merge pull request #79 from SazniMohamed/main-jun-24
Browse files Browse the repository at this point in the history
Update Monitor Scheduled Query Alert with Azure V2 api
  • Loading branch information
SazniMohamed authored Jun 24, 2024
2 parents a426b55 + 3da1f86 commit 6206f54
Show file tree
Hide file tree
Showing 2 changed files with 86 additions and 63 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,55 +9,71 @@
#
# --------------------------------------------------------------------------------------

resource "azurerm_monitor_scheduled_query_rules_alert" "scheduled_query_rules_alert" {
for_each = var.query_rules_alert
name = join("-", ["sqra", each.value.alert_name])
location = var.location
resource_group_name = var.resource_group_name
data_source_id = each.value.log_analytics_workspace_id
description = each.value.description
enabled = each.value.query_enabled
query = each.value.query
severity = each.value.severity
frequency = each.value.frequency
time_window = each.value.time_window
resource "azurerm_monitor_scheduled_query_rules_alert_v2" "scheduled_query_rules_alert" {
for_each = var.query_rules_alert
name = join("-", ["sqra", each.value.alert_name])
location = var.location
resource_group_name = var.resource_group_name
scopes = each.value.scope_list
description = each.value.description
enabled = each.value.query_enabled
severity = each.value.severity
evaluation_frequency = each.value.evaluation_frequency
window_duration = each.value.window_duration

action {
action_group = each.value.action_group_id_list
action_groups = each.value.action_group_id_list
}

trigger {
operator = each.value.operator
threshold = each.value.threshold
criteria {
operator = each.value.operator
query = each.value.query
threshold = each.value.threshold
time_aggregation_method = each.value.time_aggregation_method

metric_trigger {
operator = each.value.metric_trigger_operator
threshold = each.value.metric_threshold
metric_trigger_type = each.value.metric_trigger_type
metric_column = each.value.metric_column
dynamic "dimension" {
for_each = (each.value.dimension != null) ? each.value.dimension : null

content {
name = dimension.value.name
operator = dimension.value.operator
values = dimension.value.values
}
}

dynamic "failing_periods" {
for_each = (each.value.failing_periods != null) ? each.value.failing_periods : null

content {
minimum_failing_periods_to_trigger_alert = failing_periods.value.minimum_failing_periods_to_trigger_alert
number_of_evaluation_periods = failing_periods.value.number_of_evaluation_periods
}
}

metric_measure_column = each.value.metric_measure_column
}
}

resource "azurerm_monitor_scheduled_query_rules_alert" "count_trigger_scheduled_query_rules_alert" {
for_each = var.count_trigger_query_rules_alert
name = join("-", ["sqra", each.value.alert_name])
location = var.location
resource_group_name = var.resource_group_name
data_source_id = each.value.log_analytics_workspace_id
description = each.value.description
enabled = each.value.query_enabled
query = each.value.query
severity = each.value.severity
frequency = each.value.frequency
time_window = each.value.time_window
resource "azurerm_monitor_scheduled_query_rules_alert_v2" "count_trigger_scheduled_query_rules_alert" {
for_each = var.count_trigger_query_rules_alert
name = join("-", ["sqra", each.value.alert_name])
location = var.location
resource_group_name = var.resource_group_name
scopes = each.value.scope_list
description = each.value.description
enabled = each.value.query_enabled
severity = each.value.severity
evaluation_frequency = each.value.evaluation_frequency
window_duration = each.value.window_duration

action {
action_group = each.value.action_group_id_list
action_groups = each.value.action_group_id_list
}

trigger {
operator = each.value.operator
threshold = each.value.threshold
criteria {
operator = each.value.operator
query = each.value.query
threshold = each.value.threshold
time_aggregation_method = "Count"
}
}
59 changes: 33 additions & 26 deletions modules/azurerm/Monitor-Scheduled-Query-Alert/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -22,37 +22,44 @@ variable "resource_group_name" {
variable "query_rules_alert" {
description = "Map of query rules alert"
type = map(object({
action_group_id_list = list(string)
alert_name = string
log_analytics_workspace_id = string
description = string
query_enabled = bool
query = string
severity = number
frequency = number
time_window = number
operator = string
threshold = number
metric_trigger_operator = string
metric_threshold = number
metric_trigger_type = string
metric_column = string
action_group_id_list = list(string)
alert_name = string
scope_list = list(string)
description = string
query_enabled = bool
query = string
severity = number
evaluation_frequency = string
window_duration = string
operator = string
threshold = number
time_aggregation_method = string
dimension = list(object({
name = string
operator = string
values = list(string)
}))
failing_periods = list(object({
minimum_failing_periods_to_trigger_alert = number
number_of_evaluation_periods = number
}))
metric_measure_column = string
}))
}

variable "count_trigger_query_rules_alert" {
description = "Map of count trigger query rules alert"
type = map(object({
action_group_id_list = list(string)
alert_name = string
log_analytics_workspace_id = string
description = string
query_enabled = bool
query = string
severity = number
frequency = number
time_window = number
operator = string
threshold = number
action_group_id_list = list(string)
alert_name = string
scope_list = list(string)
description = string
query_enabled = bool
query = string
severity = number
evaluation_frequency = string
window_duration = string
operator = string
threshold = number
}))
}

0 comments on commit 6206f54

Please sign in to comment.