diff --git a/terraform/main.tf b/terraform/main.tf
index 24d69c0..7be76f4 100644
--- a/terraform/main.tf
+++ b/terraform/main.tf
@@ -100,10 +100,9 @@ resource "aws_prometheus_workspace" "prometheus" {
alias = "prometheus-${module.this.id}"
}
-module "o11y" {
+module "monitoring" {
source = "./monitoring"
context = module.this.context
- environment = terraform.workspace
prometheus_workspace_id = aws_prometheus_workspace.prometheus.id
}
diff --git a/terraform/monitoring/README.md b/terraform/monitoring/README.md
index 4ae8dbc..93fe71b 100644
--- a/terraform/monitoring/README.md
+++ b/terraform/monitoring/README.md
@@ -9,12 +9,14 @@ Configure the Grafana dashboards for the application
|------|---------|
| [terraform](#requirement\_terraform) | ~> 1.0 |
| [grafana](#requirement\_grafana) | ~> 1.24 |
+| [jsonnet](#requirement\_jsonnet) | ~> 2.2.0 |
## Providers
| Name | Version |
|------|---------|
| [grafana](#provider\_grafana) | ~> 1.24 |
+| [jsonnet](#provider\_jsonnet) | ~> 2.2.0 |
## Modules
@@ -29,6 +31,7 @@ Configure the Grafana dashboards for the application
| [grafana_dashboard.at_a_glance](https://registry.terraform.io/providers/grafana/grafana/latest/docs/resources/dashboard) | resource |
| [grafana_data_source.cloudwatch](https://registry.terraform.io/providers/grafana/grafana/latest/docs/resources/data_source) | resource |
| [grafana_data_source.prometheus](https://registry.terraform.io/providers/grafana/grafana/latest/docs/resources/data_source) | resource |
+| [jsonnet_file.dashboard](https://registry.terraform.io/providers/alxrem/jsonnet/latest/docs/data-sources/file) | data source |
## Inputs
@@ -51,5 +54,8 @@ Configure the Grafana dashboards for the application
## Outputs
-No outputs.
+| Name | Description |
+|------|-------------|
+| [dashboard\_definition](#output\_dashboard\_definition) | The JSON definition of the dashboard. |
+| [prometheus\_url](#output\_prometheus\_url) | The URL of the Prometheus server to use for this dashboard. |
diff --git a/terraform/monitoring/data_sources.tf b/terraform/monitoring/data_sources.tf
new file mode 100644
index 0000000..83c8e2f
--- /dev/null
+++ b/terraform/monitoring/data_sources.tf
@@ -0,0 +1,26 @@
+locals {
+ prometheus_url = "https://aps-workspaces.${module.this.environment}.amazonaws.com/workspaces/${var.prometheus_workspace_id}/"
+}
+
+resource "grafana_data_source" "prometheus" {
+ type = "prometheus"
+ name = "${module.this.id}-amp"
+ url = local.prometheus_url
+
+ json_data_encoded = jsonencode({
+ httpMethod = "GET"
+ manageAlerts = false
+ sigV4Auth = true
+ sigV4AuthType = "ec2_iam_role"
+ sigV4Region = module.this.environment
+ })
+}
+
+resource "grafana_data_source" "cloudwatch" {
+ type = "cloudwatch"
+ name = "${module.this.id}-cloudwatch"
+
+ json_data_encoded = jsonencode({
+ defaultRegion = module.this.environment
+ })
+}
diff --git a/terraform/monitoring/main.tf b/terraform/monitoring/main.tf
index d12210f..a939b3c 100644
--- a/terraform/monitoring/main.tf
+++ b/terraform/monitoring/main.tf
@@ -7,29 +7,6 @@ locals {
# )
}
-resource "grafana_data_source" "prometheus" {
- type = "prometheus"
- name = "${module.this.id}-amp"
- url = "https://aps-workspaces.${module.this.environment}.amazonaws.com/workspaces/${var.prometheus_workspace_id}/"
-
- json_data_encoded = jsonencode({
- httpMethod = "GET"
- manageAlerts = false
- sigV4Auth = true
- sigV4AuthType = "ec2_iam_role"
- sigV4Region = module.this.environment
- })
-}
-
-resource "grafana_data_source" "cloudwatch" {
- type = "cloudwatch"
- name = "${module.this.id}-cloudwatch"
-
- json_data_encoded = jsonencode({
- defaultRegion = module.this.environment
- })
-}
-
data "jsonnet_file" "dashboard" {
source = "${path.module}/dashboard.jsonnet"
diff --git a/terraform/monitoring/outputs.tf b/terraform/monitoring/outputs.tf
index 6bc7cdf..8219bca 100644
--- a/terraform/monitoring/outputs.tf
+++ b/terraform/monitoring/outputs.tf
@@ -1,3 +1,9 @@
+output "prometheus_url" {
+ description = "The URL of the Prometheus server to use for this dashboard."
+ value = local.prometheus_url
+}
+
output "dashboard_definition" {
- value = data.jsonnet_file.dashboard.rendered
+ description = "The JSON definition of the dashboard."
+ value = data.jsonnet_file.dashboard.rendered
}