Azure monitor pagerduty terraform
Jump to navigation
Jump to search
Simple example of terraform for azure monitor & PD
locals {
PAGERDUTY_INTEGRATION_KEY = ""
ag_name = ""
resource_group_name = ""
sql_database_name = ""
sql_server_name = ""
admin_email = ""
sev4_alert_name = "myapp-sql-cpu-gt-80-alert"
sev2_alert_name = "myapp-sql-cpu-eq-100-alert"
}
provider "azurerm" {
features {}
}
data "azurerm_resource_group" "existing_rg" {
name = local.resource_group_name
}
data "azurerm_mssql_server" "existing_sql_server" {
name = local.sql_server_name
resource_group_name = data.azurerm_resource_group.existing_rg.name
}
data "azurerm_mssql_database" "existing_sql_db" {
name = local.sql_database_name
server_id = data.azurerm_mssql_server.existing_sql_server.id
}
resource "azurerm_monitor_action_group" "sql_alert_action_group" {
name = local.ag_name
resource_group_name = data.azurerm_resource_group.existing_rg.name
short_name = "pd-alerts"
webhook_receiver {
name = "pagerduty-webhook"
service_uri = "https://events.pagerduty.com/integration/${local.PAGERDUTY_INTEGRATION_KEY}/enqueue"
use_common_alert_schema = true
}
email_receiver {
name = "AdminEmail"
email_address = local.admin_email
}
}
resource "azurerm_monitor_metric_alert" "sql_cpu_alert_sev4" {
name = local.sev4_alert_name
resource_group_name = data.azurerm_resource_group.existing_rg.name
scopes = [data.azurerm_mssql_database.existing_sql_db.id]
description = "Triggers when avg CPU consumption exceeds 80% over 15 minutes."
severity = 4
frequency = "PT5M"
window_size = "PT15M"
criteria {
metric_namespace = "Microsoft.Sql/servers/databases"
metric_name = "cpu_percent"
aggregation = "Average"
operator = "GreaterThan"
threshold = 80
}
action {
action_group_id = azurerm_monitor_action_group.sql_alert_action_group.id
}
}
resource "azurerm_monitor_metric_alert" "sql_cpu_alert_sev2" {
name = local.sev2_alert_name
resource_group_name = data.azurerm_resource_group.existing_rg.name
scopes = [data.azurerm_mssql_database.existing_sql_db.id]
description = "Triggers when avg CPU consumption is 100%."
severity = 2
frequency = "PT1M"
window_size = "PT5M"
criteria {
metric_namespace = "Microsoft.Sql/servers/databases"
metric_name = "cpu_percent"
aggregation = "Average"
operator = "GreaterThanOrEqual"
threshold = 100
}
action {
action_group_id = azurerm_monitor_action_group.sql_alert_action_group.id
}
}