Files
streetmerchant/terraform/resource-logging.tf
T

52 lines
1.3 KiB
Terraform

resource "aws_cloudwatch_log_group" "main" {
name = var.app_name
retention_in_days = 3
}
locals {
stores = split(",",var.streetmerchant_env["STORES"])
metrics = {
out_of_stock = [for store in local.stores : ["${var.app_name}-out-of-stock", store]]
error = [for store in local.stores : ["${var.app_name}-error", store]]
}
}
resource "aws_cloudwatch_log_metric_filter" "out_of_stock" {
for_each = toset(local.stores)
log_group_name = aws_cloudwatch_log_group.main.name
name = "${each.key}-out-of-stock"
pattern = "${each.key} \"OUT OF STOCK\""
metric_transformation {
name = each.key
namespace = "${var.app_name}-out-of-stock"
value = 1
default_value = 0
}
}
resource "aws_cloudwatch_log_metric_filter" "error" {
for_each = toset(local.stores)
log_group_name = aws_cloudwatch_log_group.main.name
name = "${each.key}-error"
pattern = "${each.key} \"ERROR\""
metric_transformation {
name = each.key
namespace = "${var.app_name}-error"
value = 1
default_value = 0
}
}
resource "aws_cloudwatch_dashboard" "main" {
dashboard_name = "${var.app_name}-dashboard"
dashboard_body = templatefile("dashboard.json.template", {
out_of_stock = jsonencode(local.metrics.out_of_stock)
error = jsonencode(local.metrics.error)
region = var.region
})
}