Move all dashboards to GitOps (#175)

* Typo

* Remove Grafana provider

* Temp: move dashbaords to gitOps

* Move external labels to resource attributes

* Avoid DDoS with using 0.0.0.0

* Pre-commit

* Transition in two steps

Will need to remove provider in a separate version to provide a transition path as removing this will break terraform and leave orphans in the state

* Move patterns' dashboards creation to gitOps

Standardize config objects for patterns as well

* Pre-commit

* Create AMP dashboard from external source with Grafana provider

* Fix deprecated option

* Fix Flux requirements

* Run pre-commit

* Update example with operator

* Cleanup examples

* Update multicluster example

* Update multicluster example

* Drop dead variable

* Update docs

* Change GitOps branch name

* Update docs

* Replacing Secrets Manager to SSM to store Grafana API Key (#178)

* Fixing SSM

* Fixing SSM

* Replacing Secrets Manager with SSM

* Replacing Secrets Manager with SSM

* Update architecture diagram

* Update architecture diagram

* Update README.md

* Update index.md

* Fixing Grafana Operator Version

* Fix multicluster example

* Update docs

---------

Co-authored-by: Ela AWS <51791117+elamaran11@users.noreply.github.com>
Co-authored-by: Elamaran Shanmugam <elamaran.shan@gmail.com>
This commit is contained in:
Rodrigue Koffi
2023-06-12 18:00:42 +02:00
committed by GitHub
parent c5e4c0c718
commit fa38a90efc
46 changed files with 363 additions and 4462 deletions
+10 -23
View File
@@ -3,8 +3,6 @@ module "aws_observability_accelerator" {
aws_region = var.eks_cluster_1_region
enable_managed_prometheus = false
enable_alertmanager = true
create_dashboard_folder = true
create_prometheus_data_source = true
grafana_api_key = var.grafana_api_key
managed_prometheus_workspace_region = null
managed_prometheus_workspace_id = var.managed_prometheus_workspace_id
@@ -24,23 +22,18 @@ module "eks_cluster_1_monitoring" {
# This configuration section results in actions performed on AMG and AMP; and it needs to be done just once
# And hence, this in performed in conjunction with the setup of the eks_cluster_1 EKS cluster
enable_dashboards = true
enable_alerting_rules = true
enable_recording_rules = true
enable_dashboards = true
enable_external_secrets = true
enable_fluxcd = true
enable_alerting_rules = true
enable_recording_rules = true
grafana_api_key = var.grafana_api_key
dashboards_folder_id = module.aws_observability_accelerator.grafana_dashboards_folder_id
managed_prometheus_workspace_id = module.aws_observability_accelerator.managed_prometheus_workspace_id
managed_prometheus_workspace_endpoint = module.aws_observability_accelerator.managed_prometheus_workspace_endpoint
managed_prometheus_workspace_region = module.aws_observability_accelerator.managed_prometheus_workspace_region
grafana_url = module.aws_observability_accelerator.managed_grafana_workspace_endpoint
java_config = {
enable_alerting_rules = true
enable_recording_rules = true
scrape_sample_limit = 1
}
prometheus_config = {
global_scrape_interval = "60s"
global_scrape_timeout = "15s"
@@ -68,23 +61,17 @@ module "eks_cluster_2_monitoring" {
# Since the following were enabled in conjunction with the set up of the
# eks_cluster_1 EKS cluster, we will skip them with the eks_cluster_2 EKS cluster
enable_dashboards = false
enable_alerting_rules = false
enable_recording_rules = false
enable_dashboards = false
enable_external_secrets = false
enable_fluxcd = false
enable_alerting_rules = false
enable_recording_rules = false
grafana_api_key = var.grafana_api_key
dashboards_folder_id = module.aws_observability_accelerator.grafana_dashboards_folder_id
managed_prometheus_workspace_id = module.aws_observability_accelerator.managed_prometheus_workspace_id
managed_prometheus_workspace_endpoint = module.aws_observability_accelerator.managed_prometheus_workspace_endpoint
managed_prometheus_workspace_region = module.aws_observability_accelerator.managed_prometheus_workspace_region
grafana_url = module.aws_observability_accelerator.managed_grafana_workspace_endpoint
java_config = {
enable_alerting_rules = false # addressed while setting up the eks_cluster_1 EKS cluster
enable_recording_rules = false # addressed while setting up the eks_cluster_1 EKS cluster
scrape_sample_limit = 1
}
prometheus_config = {
global_scrape_interval = "60s"
global_scrape_timeout = "15s"
-2
View File
@@ -236,8 +236,6 @@ terraform destroy -var-file=terraform.tfvars
| <a name="output_aws_region"></a> [aws\_region](#output\_aws\_region) | AWS Region |
| <a name="output_eks_cluster_id"></a> [eks\_cluster\_id](#output\_eks\_cluster\_id) | EKS Cluster Id |
| <a name="output_eks_cluster_version"></a> [eks\_cluster\_version](#output\_eks\_cluster\_version) | EKS Cluster version |
| <a name="output_grafana_dashboard_urls"></a> [grafana\_dashboard\_urls](#output\_grafana\_dashboard\_urls) | URLs for dashboards created |
| <a name="output_grafana_prometheus_datasource_test"></a> [grafana\_prometheus\_datasource\_test](#output\_grafana\_prometheus\_datasource\_test) | Grafana save & test URL for Amazon Managed Prometheus workspace |
| <a name="output_managed_prometheus_workspace_endpoint"></a> [managed\_prometheus\_workspace\_endpoint](#output\_managed\_prometheus\_workspace\_endpoint) | Amazon Managed Prometheus workspace endpoint |
| <a name="output_managed_prometheus_workspace_id"></a> [managed\_prometheus\_workspace\_id](#output\_managed\_prometheus\_workspace\_id) | Amazon Managed Prometheus workspace ID |
<!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK -->
+1 -3
View File
@@ -79,10 +79,8 @@ module "eks_monitoring" {
eks_cluster_id = var.eks_cluster_id
# control the publishing of dashboards by specifying the boolean value for the variable 'enable_dashboards', default is 'true'
# the intention to publish is overruled depending upon whether grafana dashboard folder is created by the observability accelerator
enable_dashboards = module.aws_observability_accelerator.grafana_dashboard_folder_created ? var.enable_dashboards : false
enable_dashboards = var.enable_dashboards
dashboards_folder_id = module.aws_observability_accelerator.grafana_dashboards_folder_id
managed_prometheus_workspace_id = module.aws_observability_accelerator.managed_prometheus_workspace_id
managed_prometheus_workspace_endpoint = module.aws_observability_accelerator.managed_prometheus_workspace_endpoint
-10
View File
@@ -13,16 +13,6 @@ output "managed_prometheus_workspace_id" {
value = module.aws_observability_accelerator.managed_prometheus_workspace_id
}
output "grafana_dashboard_urls" {
description = "URLs for dashboards created"
value = module.eks_monitoring.grafana_dashboard_urls
}
output "grafana_prometheus_datasource_test" {
description = "Grafana save & test URL for Amazon Managed Prometheus workspace"
value = module.aws_observability_accelerator.grafana_prometheus_datasource_test
}
output "eks_cluster_version" {
description = "EKS Cluster version"
value = module.eks_monitoring.eks_cluster_version
@@ -247,8 +247,6 @@ add this `managed_prometheus_region=xxx` and `managed_prometheus_workspace_id=ws
| <a name="output_aws_region"></a> [aws\_region](#output\_aws\_region) | AWS Region |
| <a name="output_eks_cluster_id"></a> [eks\_cluster\_id](#output\_eks\_cluster\_id) | EKS Cluster Id |
| <a name="output_eks_cluster_version"></a> [eks\_cluster\_version](#output\_eks\_cluster\_version) | EKS Cluster version |
| <a name="output_grafana_dashboard_urls"></a> [grafana\_dashboard\_urls](#output\_grafana\_dashboard\_urls) | URLs for dashboards created |
| <a name="output_grafana_prometheus_datasource_test"></a> [grafana\_prometheus\_datasource\_test](#output\_grafana\_prometheus\_datasource\_test) | Grafana save & test URL for Amazon Managed Prometheus workspace |
| <a name="output_managed_prometheus_workspace_endpoint"></a> [managed\_prometheus\_workspace\_endpoint](#output\_managed\_prometheus\_workspace\_endpoint) | Amazon Managed Prometheus workspace endpoint |
| <a name="output_managed_prometheus_workspace_id"></a> [managed\_prometheus\_workspace\_id](#output\_managed\_prometheus\_workspace\_id) | Amazon Managed Prometheus workspace ID |
<!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK -->
+1 -3
View File
@@ -75,10 +75,8 @@ module "eks_monitoring" {
grafana_url = module.aws_observability_accelerator.managed_grafana_workspace_endpoint
# control the publishing of dashboards by specifying the boolean value for the variable 'enable_dashboards', default is 'true'
# the intention to publish is overruled depending upon whether grafana dashboard folder is created by the observability accelerator
enable_dashboards = module.aws_observability_accelerator.grafana_dashboard_folder_created ? var.enable_dashboards : false
enable_dashboards = var.enable_dashboards
dashboards_folder_id = module.aws_observability_accelerator.grafana_dashboards_folder_id
managed_prometheus_workspace_id = module.aws_observability_accelerator.managed_prometheus_workspace_id
managed_prometheus_workspace_endpoint = module.aws_observability_accelerator.managed_prometheus_workspace_endpoint
@@ -13,16 +13,6 @@ output "managed_prometheus_workspace_id" {
value = module.aws_observability_accelerator.managed_prometheus_workspace_id
}
output "grafana_dashboard_urls" {
description = "URLs for dashboards created"
value = module.eks_monitoring.grafana_dashboard_urls
}
output "grafana_prometheus_datasource_test" {
description = "Grafana save & test URL for Amazon Managed Prometheus workspace"
value = module.aws_observability_accelerator.grafana_prometheus_datasource_test
}
output "eks_cluster_version" {
description = "EKS Cluster version"
value = module.eks_monitoring.eks_cluster_version
@@ -52,7 +52,7 @@ View the full documentation for this example [here](https://aws-observability.gi
|------|-------------|------|---------|:--------:|
| <a name="input_aws_region"></a> [aws\_region](#input\_aws\_region) | AWS Region | `string` | n/a | yes |
| <a name="input_eks_cluster_id"></a> [eks\_cluster\_id](#input\_eks\_cluster\_id) | Name of the EKS cluster | `string` | `"eks-cluster-with-vpc"` | no |
| <a name="input_enable_dashboards"></a> [enable\_dashboards](#input\_enable\_dashboards) | Enables or disables curated dashboards | `bool` | `true` | no |
| <a name="input_enable_dashboards"></a> [enable\_dashboards](#input\_enable\_dashboards) | Enables or disables curated dashboards. Dashboards are managed by the Grafana Operator | `bool` | `true` | no |
| <a name="input_grafana_api_key"></a> [grafana\_api\_key](#input\_grafana\_api\_key) | API key for authorizing the Grafana provider to make changes to Amazon Managed Grafana | `string` | n/a | yes |
| <a name="input_managed_grafana_workspace_id"></a> [managed\_grafana\_workspace\_id](#input\_managed\_grafana\_workspace\_id) | Amazon Managed Grafana Workspace ID | `string` | n/a | yes |
| <a name="input_managed_prometheus_workspace_id"></a> [managed\_prometheus\_workspace\_id](#input\_managed\_prometheus\_workspace\_id) | Amazon Managed Service for Prometheus Workspace ID | `string` | `""` | no |
@@ -64,9 +64,4 @@ View the full documentation for this example [here](https://aws-observability.gi
| <a name="output_aws_region"></a> [aws\_region](#output\_aws\_region) | AWS Region |
| <a name="output_eks_cluster_id"></a> [eks\_cluster\_id](#output\_eks\_cluster\_id) | EKS Cluster Id |
| <a name="output_eks_cluster_version"></a> [eks\_cluster\_version](#output\_eks\_cluster\_version) | EKS Cluster version |
| <a name="output_grafana_dashboard_urls"></a> [grafana\_dashboard\_urls](#output\_grafana\_dashboard\_urls) | URLs for dashboards created |
| <a name="output_grafana_prometheus_datasource_test"></a> [grafana\_prometheus\_datasource\_test](#output\_grafana\_prometheus\_datasource\_test) | Grafana save & test URL for Amazon Managed Prometheus workspace |
| <a name="output_managed_grafana_workspace_id"></a> [managed\_grafana\_workspace\_id](#output\_managed\_grafana\_workspace\_id) | Amazon Managed Grafana workspace ID |
| <a name="output_managed_prometheus_workspace_endpoint"></a> [managed\_prometheus\_workspace\_endpoint](#output\_managed\_prometheus\_workspace\_endpoint) | Amazon Managed Prometheus workspace endpoint |
| <a name="output_managed_prometheus_workspace_id"></a> [managed\_prometheus\_workspace\_id](#output\_managed\_prometheus\_workspace\_id) | Amazon Managed Prometheus workspace ID |
<!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK -->
@@ -50,6 +50,8 @@ module "aws_observability_accelerator" {
enable_alertmanager = true
# reusing existing Amazon Managed Grafana workspace
# This is not needed anymore but kept here for a two step transition into
# removing the Terraform Grafana provider
managed_grafana_workspace_id = var.managed_grafana_workspace_id
grafana_api_key = var.grafana_api_key
@@ -85,10 +87,8 @@ module "eks_monitoring" {
grafana_url = module.aws_observability_accelerator.managed_grafana_workspace_endpoint
# control the publishing of dashboards by specifying the boolean value for the variable 'enable_dashboards', default is 'true'
# the intention to publish is overruled depending upon whether grafana dashboard folder is created by the observability accelerator
enable_dashboards = module.aws_observability_accelerator.grafana_dashboard_folder_created ? var.enable_dashboards : false
enable_dashboards = var.enable_dashboards
dashboards_folder_id = module.aws_observability_accelerator.grafana_dashboards_folder_id
managed_prometheus_workspace_id = module.aws_observability_accelerator.managed_prometheus_workspace_id
managed_prometheus_workspace_endpoint = module.aws_observability_accelerator.managed_prometheus_workspace_endpoint
@@ -3,30 +3,6 @@ output "aws_region" {
value = module.aws_observability_accelerator.aws_region
}
output "managed_prometheus_workspace_endpoint" {
description = "Amazon Managed Prometheus workspace endpoint"
value = module.aws_observability_accelerator.managed_prometheus_workspace_endpoint
}
output "managed_prometheus_workspace_id" {
description = "Amazon Managed Prometheus workspace ID"
value = module.aws_observability_accelerator.managed_prometheus_workspace_id
}
output "managed_grafana_workspace_id" {
description = "Amazon Managed Grafana workspace ID"
value = module.aws_observability_accelerator.managed_grafana_workspace_id
}
output "grafana_dashboard_urls" {
description = "URLs for dashboards created"
value = module.eks_monitoring.grafana_dashboard_urls
}
output "grafana_prometheus_datasource_test" {
description = "Grafana save & test URL for Amazon Managed Prometheus workspace"
value = module.aws_observability_accelerator.grafana_prometheus_datasource_test
}
output "eks_cluster_version" {
description = "EKS Cluster version"
value = module.eks_monitoring.eks_cluster_version
@@ -27,7 +27,7 @@ variable "grafana_api_key" {
}
variable "enable_dashboards" {
description = "Enables or disables curated dashboards"
description = "Enables or disables curated dashboards. Dashboards are managed by the Grafana Operator"
type = bool
default = true
}