157 lines
7 KiB
HCL
157 lines
7 KiB
HCL
locals {
|
|
health_check_vantage_points = ["aws-tyo", "azr-sin", "goo-cbf"]
|
|
relay_alarm_pending_duration = "PT3M"
|
|
}
|
|
|
|
resource "oci_health_checks_ping_monitor" "relay_http" {
|
|
compartment_id = local.compartment_id
|
|
display_name = "oci-l4-relay-http"
|
|
interval_in_seconds = 60
|
|
is_enabled = true
|
|
port = 80
|
|
protocol = "TCP"
|
|
targets = [oci_core_public_ip.relay.ip_address]
|
|
timeout_in_seconds = 10
|
|
vantage_point_names = local.health_check_vantage_points
|
|
freeform_tags = var.freeform_tags
|
|
}
|
|
|
|
resource "oci_health_checks_http_monitor" "relay_https" {
|
|
compartment_id = local.compartment_id
|
|
display_name = "oci-l4-relay-https"
|
|
headers = { Host = "auth.quorate.dev" }
|
|
interval_in_seconds = 60
|
|
is_enabled = true
|
|
method = "GET"
|
|
path = "/.well-known/openid-configuration"
|
|
port = 443
|
|
protocol = "HTTPS"
|
|
targets = [oci_core_public_ip.relay.ip_address]
|
|
timeout_in_seconds = 10
|
|
vantage_point_names = local.health_check_vantage_points
|
|
freeform_tags = var.freeform_tags
|
|
}
|
|
|
|
resource "oci_health_checks_http_monitor" "relay_mail_https" {
|
|
count = var.mail_https_health_check_enabled ? 1 : 0
|
|
|
|
compartment_id = local.compartment_id
|
|
display_name = "oci-l4-relay-mail-https"
|
|
headers = { Host = "mail.quorate.dev" }
|
|
interval_in_seconds = 60
|
|
is_enabled = true
|
|
method = "GET"
|
|
path = "/healthz/live"
|
|
port = 443
|
|
protocol = "HTTPS"
|
|
targets = [oci_core_public_ip.relay.ip_address]
|
|
timeout_in_seconds = 10
|
|
vantage_point_names = local.health_check_vantage_points
|
|
freeform_tags = var.freeform_tags
|
|
}
|
|
|
|
resource "oci_health_checks_ping_monitor" "relay_mail" {
|
|
for_each = toset([
|
|
for port, enabled in local.mail_health_checks_by_port : port if enabled
|
|
])
|
|
|
|
compartment_id = local.compartment_id
|
|
display_name = "oci-l4-relay-mail-${each.value}"
|
|
interval_in_seconds = 60
|
|
is_enabled = true
|
|
port = tonumber(each.value)
|
|
protocol = "TCP"
|
|
targets = [oci_core_public_ip.relay.ip_address]
|
|
timeout_in_seconds = 10
|
|
vantage_point_names = local.health_check_vantage_points
|
|
freeform_tags = var.freeform_tags
|
|
}
|
|
|
|
resource "oci_ons_notification_topic" "relay" {
|
|
compartment_id = local.compartment_id
|
|
name = "oci-l4-relay-alerts"
|
|
description = "Relay availability and health alerts"
|
|
freeform_tags = var.freeform_tags
|
|
}
|
|
|
|
resource "oci_ons_subscription" "relay_email" {
|
|
count = local.monitoring_alert_enabled ? 1 : 0
|
|
|
|
compartment_id = local.compartment_id
|
|
endpoint = local.monitoring_alert_email
|
|
protocol = "EMAIL"
|
|
topic_id = oci_ons_notification_topic.relay.id
|
|
freeform_tags = var.freeform_tags
|
|
}
|
|
|
|
resource "oci_monitoring_alarm" "relay_reachability" {
|
|
body = "At least two external vantage points cannot reach relay HTTP."
|
|
compartment_id = local.compartment_id
|
|
destinations = [oci_ons_notification_topic.relay.id]
|
|
display_name = "oci-l4-relay-reachability"
|
|
is_enabled = true
|
|
message_format = "ONS_OPTIMIZED"
|
|
metric_compartment_id = local.compartment_id
|
|
namespace = "oci_healthchecks"
|
|
pending_duration = local.relay_alarm_pending_duration
|
|
query = "PING.isHealthy[1m]{resourceId = \"${oci_health_checks_ping_monitor.relay_http.id}\"}.grouping().mean() < 0.5"
|
|
repeat_notification_duration = "PT2H"
|
|
resolution = "1m"
|
|
severity = "CRITICAL"
|
|
freeform_tags = var.freeform_tags
|
|
}
|
|
|
|
resource "oci_monitoring_alarm" "relay_https" {
|
|
body = "At least two external vantage points report unhealthy relay HTTPS while relay HTTP remains reachable."
|
|
compartment_id = local.compartment_id
|
|
destinations = [oci_ons_notification_topic.relay.id]
|
|
display_name = "oci-l4-relay-https"
|
|
is_enabled = true
|
|
message_format = "ONS_OPTIMIZED"
|
|
metric_compartment_id = local.compartment_id
|
|
namespace = "oci_healthchecks"
|
|
pending_duration = local.relay_alarm_pending_duration
|
|
query = "HTTP.isHealthy[1m]{resourceId = \"${oci_health_checks_http_monitor.relay_https.id}\"}.grouping().mean() < 0.5 && PING.isHealthy[1m]{resourceId = \"${oci_health_checks_ping_monitor.relay_http.id}\"}.grouping().mean() >= 0.5"
|
|
repeat_notification_duration = "PT2H"
|
|
resolution = "1m"
|
|
severity = "CRITICAL"
|
|
freeform_tags = var.freeform_tags
|
|
}
|
|
|
|
resource "oci_monitoring_alarm" "relay_mail_https" {
|
|
count = var.mail_https_health_check_enabled ? 1 : 0
|
|
|
|
body = "At least two external vantage points report unhealthy Stalwart user HTTPS while relay HTTP remains reachable."
|
|
compartment_id = local.compartment_id
|
|
destinations = [oci_ons_notification_topic.relay.id]
|
|
display_name = "oci-l4-relay-mail-https"
|
|
is_enabled = true
|
|
message_format = "ONS_OPTIMIZED"
|
|
metric_compartment_id = local.compartment_id
|
|
namespace = "oci_healthchecks"
|
|
pending_duration = local.relay_alarm_pending_duration
|
|
query = "HTTP.isHealthy[1m]{resourceId = \"${oci_health_checks_http_monitor.relay_mail_https[0].id}\"}.grouping().mean() < 0.5 && PING.isHealthy[1m]{resourceId = \"${oci_health_checks_ping_monitor.relay_http.id}\"}.grouping().mean() >= 0.5"
|
|
repeat_notification_duration = "PT2H"
|
|
resolution = "1m"
|
|
severity = "CRITICAL"
|
|
freeform_tags = var.freeform_tags
|
|
}
|
|
|
|
resource "oci_monitoring_alarm" "relay_mail" {
|
|
for_each = oci_health_checks_ping_monitor.relay_mail
|
|
|
|
body = "At least two external vantage points cannot reach relay mail TCP/${each.key} while relay HTTP remains reachable."
|
|
compartment_id = local.compartment_id
|
|
destinations = [oci_ons_notification_topic.relay.id]
|
|
display_name = "oci-l4-relay-mail-${each.key}"
|
|
is_enabled = true
|
|
message_format = "ONS_OPTIMIZED"
|
|
metric_compartment_id = local.compartment_id
|
|
namespace = "oci_healthchecks"
|
|
pending_duration = local.relay_alarm_pending_duration
|
|
query = "PING.isHealthy[1m]{resourceId = \"${each.value.id}\"}.grouping().mean() < 0.5 && PING.isHealthy[1m]{resourceId = \"${oci_health_checks_ping_monitor.relay_http.id}\"}.grouping().mean() >= 0.5"
|
|
repeat_notification_duration = "PT2H"
|
|
resolution = "1m"
|
|
severity = "CRITICAL"
|
|
freeform_tags = var.freeform_tags
|
|
}
|