Skip to content

Commit 5bbb4af

Browse files
authored
Split api server dashboards (#216)
* Split api server dashboards * Pre commit
1 parent 43f1d58 commit 5bbb4af

File tree

4 files changed

+64
-24
lines changed

4 files changed

+64
-24
lines changed

modules/eks-monitoring/README.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ See examples using this Terraform modules in the **Amazon EKS** section of [this
5555
| [helm_release.grafana_operator](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |
5656
| [helm_release.kube_state_metrics](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |
5757
| [helm_release.prometheus_node_exporter](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |
58+
| [kubectl_manifest.api_server_dashboards](https://registry.terraform.io/providers/gavinbunney/kubectl/latest/docs/resources/manifest) | resource |
5859
| [kubectl_manifest.flux_gitrepository](https://registry.terraform.io/providers/gavinbunney/kubectl/latest/docs/resources/manifest) | resource |
5960
| [kubectl_manifest.flux_kustomization](https://registry.terraform.io/providers/gavinbunney/kubectl/latest/docs/resources/manifest) | resource |
6061
| [aws_caller_identity.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/caller_identity) | data source |
@@ -67,6 +68,7 @@ See examples using this Terraform modules in the **Amazon EKS** section of [this
6768
| Name | Description | Type | Default | Required |
6869
|------|-------------|------|---------|:--------:|
6970
| <a name="input_adot_loglevel"></a> [adot\_loglevel](#input\_adot\_loglevel) | Verbosity level for ADOT collector logs. This accepts (detailed\|normal\|basic), see https://aws-otel.github.io/docs/components/misc-exporters for mor infos. | `string` | `"normal"` | no |
71+
| <a name="input_apiserver_monitoring_config"></a> [apiserver\_monitoring\_config](#input\_apiserver\_monitoring\_config) | Config object for API server monitoring | <pre>object({<br> flux_gitrepository_name = string<br> flux_gitrepository_url = string<br> flux_gitrepository_branch = string<br> flux_kustomization_name = string<br> flux_kustomization_path = string<br><br> dashboards = object({<br> basic = string<br> advanced = string<br> troubleshooting = string<br> })<br> })</pre> | `null` | no |
7072
| <a name="input_custom_metrics_config"></a> [custom\_metrics\_config](#input\_custom\_metrics\_config) | Configuration object to enable custom metrics collection | <pre>map(object({<br> enableBasicAuth = bool<br> path = string<br> basicAuthUsername = string<br> basicAuthPassword = string<br> ports = string<br> droppedSeriesPrefixes = string<br> }))</pre> | `null` | no |
7173
| <a name="input_eks_cluster_id"></a> [eks\_cluster\_id](#input\_eks\_cluster\_id) | EKS Cluster Id | `string` | n/a | yes |
7274
| <a name="input_enable_alerting_rules"></a> [enable\_alerting\_rules](#input\_enable\_alerting\_rules) | Enables or disables Managed Prometheus alerting rules | `bool` | `true` | no |
@@ -94,9 +96,6 @@ See examples using this Terraform modules in the **Amazon EKS** section of [this
9496
| <a name="input_flux_kustomization_path"></a> [flux\_kustomization\_path](#input\_flux\_kustomization\_path) | Flux Kustomization Path | `string` | `"./artifacts/grafana-operator-manifests/eks/infrastructure"` | no |
9597
| <a name="input_go_config"></a> [go\_config](#input\_go\_config) | Grafana Operator configuration | <pre>object({<br> create_namespace = bool<br> helm_chart = string<br> helm_name = string<br> k8s_namespace = string<br> helm_release_name = string<br> helm_chart_version = string<br> })</pre> | <pre>{<br> "create_namespace": true,<br> "helm_chart": "oci://ghcr.io/grafana-operator/helm-charts/grafana-operator",<br> "helm_chart_version": "v5.0.0-rc3",<br> "helm_name": "grafana-operator",<br> "helm_release_name": "grafana-operator",<br> "k8s_namespace": "grafana-operator"<br>}</pre> | no |
9698
| <a name="input_grafana_api_key"></a> [grafana\_api\_key](#input\_grafana\_api\_key) | Grafana API key for the Amazon Managed Grafana workspace. Required if `enable_external_secrets = true` | `string` | `""` | no |
97-
| <a name="input_grafana_apiserver_advanced_dashboard_url"></a> [grafana\_apiserver\_advanced\_dashboard\_url](#input\_grafana\_apiserver\_advanced\_dashboard\_url) | Dashboard URL for Kube-apiserver (advanced) Grafana Dashboard JSON | `string` | `"https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/infrastructure/apiserver-advanced.json"` | no |
98-
| <a name="input_grafana_apiserver_basic_dashboard_url"></a> [grafana\_apiserver\_basic\_dashboard\_url](#input\_grafana\_apiserver\_basic\_dashboard\_url) | Dashboard URL for Kube-apiserver (basic) Grafana Dashboard JSON | `string` | `"https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/infrastructure/apiserver-basic.json"` | no |
99-
| <a name="input_grafana_apiserver_troubleshooting_dashboard_url"></a> [grafana\_apiserver\_troubleshooting\_dashboard\_url](#input\_grafana\_apiserver\_troubleshooting\_dashboard\_url) | Dashboard URL for Kube-apiserver (troubleshooting) Grafana Dashboard JSON | `string` | `"https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/infrastructure/apiserver-troubleshooting.json"` | no |
10099
| <a name="input_grafana_cluster_dashboard_url"></a> [grafana\_cluster\_dashboard\_url](#input\_grafana\_cluster\_dashboard\_url) | Dashboard URL for Cluster Grafana Dashboard JSON | `string` | `"https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/infrastructure/cluster.json"` | no |
101100
| <a name="input_grafana_kubelet_dashboard_url"></a> [grafana\_kubelet\_dashboard\_url](#input\_grafana\_kubelet\_dashboard\_url) | Dashboard URL for Kubelet Grafana Dashboard JSON | `string` | `"https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/infrastructure/kubelet.json"` | no |
102101
| <a name="input_grafana_namespace_workloads_dashboard_url"></a> [grafana\_namespace\_workloads\_dashboard\_url](#input\_grafana\_namespace\_workloads\_dashboard\_url) | Dashboard URL for Namespace Workloads Grafana Dashboard JSON | `string` | `"https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/infrastructure/namespace-workloads.json"` | no |

modules/eks-monitoring/dashboards.tf

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,6 @@ spec:
3737
AMP_ENDPOINT_URL: ${var.managed_prometheus_workspace_endpoint}
3838
AMG_ENDPOINT_URL: ${var.grafana_url}
3939
GRAFANA_CLUSTER_DASH_URL: ${var.grafana_cluster_dashboard_url}
40-
GRAFANA_APISERVER_BASIC_DASH_URL: ${var.grafana_apiserver_basic_dashboard_url}
41-
GRAFANA_APISERVER_ADVANCED_DASH_URL: ${var.grafana_apiserver_advanced_dashboard_url}
42-
GRAFANA_APISERVER_TROUBLESHOOTING_DASH_URL: ${var.grafana_apiserver_troubleshooting_dashboard_url}
4340
GRAFANA_KUBELET_DASH_URL: ${var.grafana_kubelet_dashboard_url}
4441
GRAFANA_NSWRKLDS_DASH_URL: ${var.grafana_namespace_workloads_dashboard_url}
4542
GRAFANA_NODEEXP_DASH_URL: ${var.grafana_node_exporter_dashboard_url}
@@ -49,3 +46,31 @@ YAML
4946
count = var.enable_dashboards ? 1 : 0
5047
depends_on = [module.external_secrets]
5148
}
49+
50+
# api server dashboards
51+
resource "kubectl_manifest" "api_server_dashboards" {
52+
yaml_body = <<YAML
53+
apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
54+
kind: Kustomization
55+
metadata:
56+
name: ${local.apiserver_monitoring_config.flux_kustomization_name}
57+
namespace: flux-system
58+
spec:
59+
interval: 1m0s
60+
path: ${local.apiserver_monitoring_config.flux_kustomization_path}
61+
prune: true
62+
sourceRef:
63+
kind: GitRepository
64+
name: ${local.apiserver_monitoring_config.flux_gitrepository_name}
65+
postBuild:
66+
substitute:
67+
AMG_AWS_REGION: ${var.managed_prometheus_workspace_region}
68+
AMP_ENDPOINT_URL: ${var.managed_prometheus_workspace_endpoint}
69+
AMG_ENDPOINT_URL: ${var.grafana_url}
70+
GRAFANA_APISERVER_BASIC_DASH_URL: ${local.apiserver_monitoring_config.dashboards.basic}
71+
GRAFANA_APISERVER_ADVANCED_DASH_URL: ${local.apiserver_monitoring_config.dashboards.advanced}
72+
GRAFANA_APISERVER_TROUBLESHOOTING_DASH_URL: ${local.apiserver_monitoring_config.dashboards.troubleshooting}
73+
YAML
74+
count = var.enable_apiserver_monitoring ? 1 : 0
75+
depends_on = [module.external_secrets]
76+
}

modules/eks-monitoring/locals.tf

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,4 +105,18 @@ locals {
105105
grafana_istio_service_dashboard_url = "https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/istio/istio-service-dashboard.json"
106106
}
107107

108+
apiserver_monitoring_config = {
109+
# can be overriden by providing a config
110+
flux_gitrepository_name = "aws-observability-accelerator"
111+
flux_gitrepository_url = "https://github.com/aws-observability/aws-observability-accelerator"
112+
flux_gitrepository_branch = "main"
113+
flux_kustomization_name = "grafana-dashboards-apiserver"
114+
flux_kustomization_path = "./artifacts/grafana-operator-manifests/eks/apiserver"
115+
116+
dashboards = {
117+
basic = "https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/infrastructure/apiserver/apiserver-basic.json"
118+
advanced = "https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/infrastructure/apiserver/apiserver-advanced.json"
119+
troubleshooting = "https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/infrastructure/apiserver/apiserver-troubleshooting.json"
120+
}
121+
}
108122
}

modules/eks-monitoring/variables.tf

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,26 @@ variable "enable_apiserver_monitoring" {
207207
default = true
208208
}
209209

210+
variable "apiserver_monitoring_config" {
211+
description = "Config object for API server monitoring"
212+
type = object({
213+
flux_gitrepository_name = string
214+
flux_gitrepository_url = string
215+
flux_gitrepository_branch = string
216+
flux_kustomization_name = string
217+
flux_kustomization_path = string
218+
219+
dashboards = object({
220+
basic = string
221+
advanced = string
222+
troubleshooting = string
223+
})
224+
})
225+
226+
# defaults are pre-computed in locals.tf, provide a full definition to override
227+
default = null
228+
}
229+
210230
variable "enable_tracing" {
211231
description = "Enables tracing with OTLP traces receiver to X-Ray"
212232
type = bool
@@ -446,24 +466,6 @@ variable "grafana_cluster_dashboard_url" {
446466
default = "https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/infrastructure/cluster.json"
447467
}
448468

449-
variable "grafana_apiserver_basic_dashboard_url" {
450-
description = "Dashboard URL for Kube-apiserver (basic) Grafana Dashboard JSON"
451-
type = string
452-
default = "https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/infrastructure/apiserver-basic.json"
453-
}
454-
455-
variable "grafana_apiserver_advanced_dashboard_url" {
456-
description = "Dashboard URL for Kube-apiserver (advanced) Grafana Dashboard JSON"
457-
type = string
458-
default = "https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/infrastructure/apiserver-advanced.json"
459-
}
460-
461-
variable "grafana_apiserver_troubleshooting_dashboard_url" {
462-
description = "Dashboard URL for Kube-apiserver (troubleshooting) Grafana Dashboard JSON"
463-
type = string
464-
default = "https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/infrastructure/apiserver-troubleshooting.json"
465-
}
466-
467469
variable "grafana_kubelet_dashboard_url" {
468470
description = "Dashboard URL for Kubelet Grafana Dashboard JSON"
469471
type = string

0 commit comments

Comments
 (0)