# Monitor for process
resource "datadog_monitor" "live_process_monitor" {
  name               = "${var.environment}-${var.service_name}-${replace(var.process_name, "/\\.[a-z]+/", "")}-process-monitor"
  type               = "process alert"
  message            = "${var.process_name} is down on {{host.name}}, IP address {{host.ip}} ${var.notification_endpoints}"
  escalation_message = "Escalation to ${var.escalation_notification_endpoints}"

  query = var.tag_based_alert_enabled == true ? format(
    var.tag_based_alert_query,
    var.process_name,
    var.process_query_tags,
    var.monitor_measurement_interval,
    var.threshold_critical,
    ) : var.multi_alert_enabled == true ? format(
    var.host_multi_alert_query,
    var.process_name,
    var.environment,
    var.monitor_measurement_interval,
    var.threshold_critical,
    ) : format(
    var.host_simple_alert_query,
    var.process_name,
    var.environment,
    var.hostname,
    var.monitor_measurement_interval,
    var.threshold_critical,
  )

  monitor_thresholds {
    warning  = var.threshold_warning
    critical = var.threshold_critical
  }

  include_tags        = true
  notify_no_data      = false
  notify_audit        = false
  renotify_interval   = 0
  timeout_h           = 0
  require_full_window = false

  tags = local.tags
}
