# AWS EKS Multicluster Observability This example shows how to use the [AWS Observability Accelerator](https://github.com/aws-observability/terraform-aws-observability-accelerator), with more than one EKS cluster and verify the collected metrics from all the clusters in the dashboards of a common `Amazon Managed Grafana` workspace. ## Prerequisites #### 1. EKS clusters Using the example [eks-cluster-with-vpc](../../examples/eks-cluster-with-vpc/), create two EKS clusters with the names: 1. `eks-cluster-1` 2. `eks-cluster-2` #### 2. Amazon Managed Serivce for Prometheus (AMP) workspace We recommend that you create a new AMP workspace. To do that you can run the following command. Ensure you have the following necessary IAM permissions * `aps.CreateWorkspace` ```sh export TF_VAR_managed_prometheus_workspace_id=$(aws amp create-workspace --alias observability-accelerator --query='workspaceId' --output text) ``` #### 3. Amazon Managed Grafana (AMG) workspace To run this example you need an AMG workspace. If you have an existing workspace, create an environment variable as described below. To create a new workspace, visit our supporting example for managed Grafana. !!! note For the URL `https://g-xyz.grafana-workspace.eu-central-1.amazonaws.com`, the workspace ID would be `g-xyz` ```sh export TF_VAR_managed_grafana_workspace_id=g-xxx ``` #### 4. Grafana API Key AMG provides a control plane API for generating Grafana API keys. As a security best practice, we will provide to Terraform a short lived API key to run the `apply` or `destroy` command. Ensure you have the following necessary IAM permissions * `grafana.CreateWorkspaceApiKey` * `grafana.DeleteWorkspaceApiKey` ```sh export TF_VAR_grafana_api_key=`aws grafana create-workspace-api-key --key-name "observability-accelerator-$(date +%s)" --key-role ADMIN --seconds-to-live 1200 --workspace-id $TF_VAR_managed_grafana_workspace_id --query key --output text` ``` ## Setup #### 1. Download sources and initialize Terraform ```sh git clone https://github.com/aws-observability/terraform-aws-observability-accelerator.git cd terraform-aws-observability-accelerator/examples/eks-multicluster terraform init ``` #### 2. Deploy Verify by looking at the file `variables.tf` that there are two EKS clusters targeted for deployment by the names/ids: 1. `eks-cluster-1` 2. `eks-cluster-2` The difference in deployment between these clusters is that Terraform, when setting up the EKS cluster behind variable `eks_cluster_1_id` for observability, also sets up: * Dashboard folder and files in `AMG` * Prometheus and Java, alerting and recording rules in `AMP` !!! warning To override the defaults, create a `terraform.tfvars` and change the default values of the variables. Run the following command to deploy ```sh terraform apply --auto-approve ``` ## Verifying Multicluster Observability One you have successfully run the above setup, you should be able to see dashboards similar to the images shown below in `Amazon Managed Grafana` workspace. Note how you are able to use the `cluster` dropdown to filter the dashboards to metrics collected from a specific EKS cluster. eks-multicluster-1 eks-multicluster-2 ## Cleanup To clean up entirely, run the following command: ```sh terraform destroy --auto-approve ```