data "aws_secretsmanager_secret" "datadog_api" {
  name = "${var.environment}/datadog/DD_API_KEY"
}

data "aws_secretsmanager_secret_version" "datadog_api" {
  secret_id = data.aws_secretsmanager_secret.datadog_api.id
}

data "aws_secretsmanager_secret" "datadog_app_key" {
  name = "${var.environment}/datadog/DD_APP_KEY"
}

data "aws_secretsmanager_secret_version" "datadog_app_key" {
  secret_id = data.aws_secretsmanager_secret.datadog_app_key.id
}

# Datadog provider
provider "datadog" {
  api_key = data.aws_secretsmanager_secret_version.datadog_api.secret_string
  app_key = data.aws_secretsmanager_secret_version.datadog_app_key.secret_string
}

resource "datadog_monitor" "kafka_connector_ows_assets_throughput" {
  count   = 1 # set to 0 to disable the monitor
  name    = "${var.environment}-${local.service_name_ows_assets}-throughput-monitor"
  type    = "metric alert"
  message = "Incoming data level has dropped in connector's topics for the last 24h. Notify: ${var.notification_endpoints}"

  query = "sum(last_1d):avg:aws.kafka.messages_in_per_sec{environment:${var.environment},topic:cdc.owsassets.asset*} by {topic} * 60 * 60 * 24 < 100"

  monitor_thresholds {
    critical          = 100
    warning           = 1000
    warning_recovery  = 1100
    critical_recovery = 200
  }

  notify_no_data      = true
  no_data_timeframe   = 60
  notify_audit        = false
  renotify_interval   = 60
  timeout_h           = 0
  require_full_window = false

  tags = [
    "environment:${var.environment}",
    "service_name:${local.service_name_ows_assets}",
  ]
}
