resource "datadog_monitor" "aoma_rds_oldest_replication_slot_lag_on_hostnamename" {
  name = "AOMA - RDS - Oldest Replication Slot Lag on {{hostname.name}}"
  type = "query alert"
  query = <<EOT
min(last_1h):(max:aws.rds.oldest_replication_slot_lag{hostname:aoma-rds-dev.cylrxjisqvzt.eu-central-1.rds.amazonaws.com} by {hostname}.fill(zero) / 5000000000 + max:aws.rds.oldest_replication_slot_lag{hostname:aoma-rds-stage.cylrxjisqvzt.eu-central-1.rds.amazonaws.com} by {hostname}.fill(zero) / 5000000000 + max:aws.rds.oldest_replication_slot_lag{hostname:aoma-rds-prod.csj5vpvj5qvp.eu-central-1.rds.amazonaws.com} by {hostname}.fill(zero) / 21470000000) > 1
EOT
  message = <<EOT
{{#is_alert}}
###Oldest Replication Slot Lag  on RDS Instance {{hostname.name}} is above its environment threshold
Dev/Stage threshold: 5000000000. Prod threshold: 21470000000.
PRIORITY=HIGH
{{/is_alert}}

{{#is_recovery}}
###Oldest Replication Slot Lag  on RDS Instance {{hostname.name}} has recovered below its environment threshold
Dev/Stage threshold: 5000000000. Prod threshold: 21470000000.
PRIORITY=HIGH
{{/is_recovery}}

{{#is_match "hostname.name" "aoma-rds-prod.csj5vpvj5qvp.eu-central-1.rds.amazonaws.com"}}
${local.aoma_amp_del_data_on_call_recipient}
{{/is_match}}
${local.aoma_amp_del_data_slack_recipient}
@aoma.data.developers@sonymusic.com
EOT
  tags = local.aoma_amp_del_data_monitor_tags
  priority = 1
  draft_status = "published"
  escalation_message = <<EOT
EOT
  new_group_delay = 0
  on_missing_data = "default"
  require_full_window = false
  monitor_thresholds {
    critical = 1
  }
}

resource "datadog_monitor" "aoma_rds_replication_slot_usage_on_hostnamename" {
  name = "AOMA - RDS - Replication Slot Usage on {{hostname.name}}"
  type = "query alert"
  query = <<EOT
min(last_1h):avg:aws.rds.replication_slot_disk_usage{hostname IN (aoma-rds-dev.cylrxjisqvzt.eu-central-1.rds.amazonaws.com,aoma-rds-stage.cylrxjisqvzt.eu-central-1.rds.amazonaws.com,aoma-rds-prod.csj5vpvj5qvp.eu-central-1.rds.amazonaws.com)} by {hostname} > 5000000000
EOT
  message = <<EOT
{{#is_alert}}
###Replication Slot Usage on RDS Instance {{hostname.name}} is > {{threshold}} (value)
PRIORITY=HIGH
{{/is_alert}}

{{#is_recovery}}
###Replication Slot Usage on RDS Instance {{hostname.name}} is < {{threshold}} (value)
PRIORITY=HIGH
{{/is_recovery}}

{{#is_match "hostname.name" "aoma-rds-prod.csj5vpvj5qvp.eu-central-1.rds.amazonaws.com"}}
${local.aoma_amp_del_data_on_call_recipient}
{{/is_match}}
${local.aoma_amp_del_data_slack_recipient}
@aoma.data.developers@sonymusic.com
EOT
  tags = local.aoma_amp_del_data_monitor_tags
  priority = 1
  draft_status = "published"
  escalation_message = <<EOT
EOT
  new_group_delay = 0
  on_missing_data = "default"
  require_full_window = false
  monitor_thresholds {
    critical = 5000000000
  }
}

resource "datadog_monitor" "aoma_rds_free_storage_space_available_on_hostnamename" {
  name = "AOMA - RDS - Free storage space available on {{hostname.name}}"
  type = "query alert"
  query = <<EOT
avg(last_1h):avg:aws.rds.free_storage_space{dbinstanceidentifier IN (aoma-rds-dev,aoma-rds-stage,aoma-rds-prod)} by {hostname} < 1000000000
EOT
  message = <<EOT
{{#is_alert}}
###Free storage space available on RDS Instance {{hostname.name}} is < {{threshold}} (value)
PRIORITY=HIGH
{{/is_alert}}

{{#is_recovery}}
###Free storage space available on RDS Instance {{hostname.name}} is > {{threshold}} (value)
PRIORITY=HIGH
{{/is_recovery}}

{{#is_match "hostname.name" "aoma-rds-prod.csj5vpvj5qvp.eu-central-1.rds.amazonaws.com"}}
${local.aoma_amp_del_data_on_call_recipient}
{{/is_match}}
${local.aoma_amp_del_data_slack_recipient}
@aoma.data.developers@sonymusic.com
EOT
  tags = local.aoma_amp_del_data_monitor_tags
  priority = 1
  draft_status = "published"
  escalation_message = <<EOT

EOT
  new_group_delay = 0
  on_missing_data = "default"
  require_full_window = false
  monitor_thresholds {
    critical = 1000000000
  }
}

resource "datadog_monitor" "aoma_rds_freeable_memory_on_hostnamename" {
  name = "AOMA - RDS - Freeable Memory on {{hostname.name}}"
  type = "query alert"
  query = <<EOT
avg(last_1h):avg:aws.rds.freeable_memory{dbinstanceidentifier IN (aoma-rds-dev,aoma-rds-stage,aoma-rds-prod)} by {hostname} < 256857600
EOT
  message = <<EOT
{{#is_alert}}
### Free memory available on {{hostname.name}} is {{value}} bytes < 256 MB (threshold)
PRIORITY=HIGH
{{/is_alert}}

{{#is_recovery}}
### Free memory available on {{hostname.name}} is {{value}} bytes > 256 MB (threshold)
PRIORITY=HIGH
{{/is_recovery}}

${local.aoma_amp_del_data_slack_recipient}
EOT
  tags = local.aoma_amp_del_data_monitor_tags
  priority = 1
  draft_status = "published"
  escalation_message = <<EOT

EOT
  new_group_delay = 0
  on_missing_data = "show_and_notify_no_data"
  require_full_window = false
  monitor_thresholds {
    critical = 256857600
  }
}
