mirror of
https://github.com/storytold/terraform-aws-observability-accelerator.git
synced 2026-10-09 00:09:43 +00:00
Split api server dashboards (#216)
* Split api server dashboards * Pre commit
This commit is contained in:
@@ -55,6 +55,7 @@ See examples using this Terraform modules in the **Amazon EKS** section of [this
|
||||
| [helm_release.grafana_operator](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |
|
||||
| [helm_release.kube_state_metrics](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |
|
||||
| [helm_release.prometheus_node_exporter](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |
|
||||
| [kubectl_manifest.api_server_dashboards](https://registry.terraform.io/providers/gavinbunney/kubectl/latest/docs/resources/manifest) | resource |
|
||||
| [kubectl_manifest.flux_gitrepository](https://registry.terraform.io/providers/gavinbunney/kubectl/latest/docs/resources/manifest) | resource |
|
||||
| [kubectl_manifest.flux_kustomization](https://registry.terraform.io/providers/gavinbunney/kubectl/latest/docs/resources/manifest) | resource |
|
||||
| [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
|
||||
| Name | Description | Type | Default | Required |
|
||||
|------|-------------|------|---------|:--------:|
|
||||
| <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 |
|
||||
| <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 |
|
||||
| <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 |
|
||||
| <a name="input_eks_cluster_id"></a> [eks\_cluster\_id](#input\_eks\_cluster\_id) | EKS Cluster Id | `string` | n/a | yes |
|
||||
| <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
|
||||
| <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 |
|
||||
| <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 |
|
||||
| <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 |
|
||||
| <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 |
|
||||
| <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 |
|
||||
| <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 |
|
||||
| <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 |
|
||||
| <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 |
|
||||
| <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 |
|
||||
|
||||
@@ -37,9 +37,6 @@ spec:
|
||||
AMP_ENDPOINT_URL: ${var.managed_prometheus_workspace_endpoint}
|
||||
AMG_ENDPOINT_URL: ${var.grafana_url}
|
||||
GRAFANA_CLUSTER_DASH_URL: ${var.grafana_cluster_dashboard_url}
|
||||
GRAFANA_APISERVER_BASIC_DASH_URL: ${var.grafana_apiserver_basic_dashboard_url}
|
||||
GRAFANA_APISERVER_ADVANCED_DASH_URL: ${var.grafana_apiserver_advanced_dashboard_url}
|
||||
GRAFANA_APISERVER_TROUBLESHOOTING_DASH_URL: ${var.grafana_apiserver_troubleshooting_dashboard_url}
|
||||
GRAFANA_KUBELET_DASH_URL: ${var.grafana_kubelet_dashboard_url}
|
||||
GRAFANA_NSWRKLDS_DASH_URL: ${var.grafana_namespace_workloads_dashboard_url}
|
||||
GRAFANA_NODEEXP_DASH_URL: ${var.grafana_node_exporter_dashboard_url}
|
||||
@@ -49,3 +46,31 @@ YAML
|
||||
count = var.enable_dashboards ? 1 : 0
|
||||
depends_on = [module.external_secrets]
|
||||
}
|
||||
|
||||
# api server dashboards
|
||||
resource "kubectl_manifest" "api_server_dashboards" {
|
||||
yaml_body = <<YAML
|
||||
apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
|
||||
kind: Kustomization
|
||||
metadata:
|
||||
name: ${local.apiserver_monitoring_config.flux_kustomization_name}
|
||||
namespace: flux-system
|
||||
spec:
|
||||
interval: 1m0s
|
||||
path: ${local.apiserver_monitoring_config.flux_kustomization_path}
|
||||
prune: true
|
||||
sourceRef:
|
||||
kind: GitRepository
|
||||
name: ${local.apiserver_monitoring_config.flux_gitrepository_name}
|
||||
postBuild:
|
||||
substitute:
|
||||
AMG_AWS_REGION: ${var.managed_prometheus_workspace_region}
|
||||
AMP_ENDPOINT_URL: ${var.managed_prometheus_workspace_endpoint}
|
||||
AMG_ENDPOINT_URL: ${var.grafana_url}
|
||||
GRAFANA_APISERVER_BASIC_DASH_URL: ${local.apiserver_monitoring_config.dashboards.basic}
|
||||
GRAFANA_APISERVER_ADVANCED_DASH_URL: ${local.apiserver_monitoring_config.dashboards.advanced}
|
||||
GRAFANA_APISERVER_TROUBLESHOOTING_DASH_URL: ${local.apiserver_monitoring_config.dashboards.troubleshooting}
|
||||
YAML
|
||||
count = var.enable_apiserver_monitoring ? 1 : 0
|
||||
depends_on = [module.external_secrets]
|
||||
}
|
||||
|
||||
@@ -105,4 +105,18 @@ locals {
|
||||
grafana_istio_service_dashboard_url = "https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/istio/istio-service-dashboard.json"
|
||||
}
|
||||
|
||||
apiserver_monitoring_config = {
|
||||
# can be overriden by providing a config
|
||||
flux_gitrepository_name = "aws-observability-accelerator"
|
||||
flux_gitrepository_url = "https://github.com/aws-observability/aws-observability-accelerator"
|
||||
flux_gitrepository_branch = "main"
|
||||
flux_kustomization_name = "grafana-dashboards-apiserver"
|
||||
flux_kustomization_path = "./artifacts/grafana-operator-manifests/eks/apiserver"
|
||||
|
||||
dashboards = {
|
||||
basic = "https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/infrastructure/apiserver/apiserver-basic.json"
|
||||
advanced = "https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/infrastructure/apiserver/apiserver-advanced.json"
|
||||
troubleshooting = "https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/infrastructure/apiserver/apiserver-troubleshooting.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -207,6 +207,26 @@ variable "enable_apiserver_monitoring" {
|
||||
default = true
|
||||
}
|
||||
|
||||
variable "apiserver_monitoring_config" {
|
||||
description = "Config object for API server monitoring"
|
||||
type = object({
|
||||
flux_gitrepository_name = string
|
||||
flux_gitrepository_url = string
|
||||
flux_gitrepository_branch = string
|
||||
flux_kustomization_name = string
|
||||
flux_kustomization_path = string
|
||||
|
||||
dashboards = object({
|
||||
basic = string
|
||||
advanced = string
|
||||
troubleshooting = string
|
||||
})
|
||||
})
|
||||
|
||||
# defaults are pre-computed in locals.tf, provide a full definition to override
|
||||
default = null
|
||||
}
|
||||
|
||||
variable "enable_tracing" {
|
||||
description = "Enables tracing with OTLP traces receiver to X-Ray"
|
||||
type = bool
|
||||
@@ -446,24 +466,6 @@ variable "grafana_cluster_dashboard_url" {
|
||||
default = "https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/infrastructure/cluster.json"
|
||||
}
|
||||
|
||||
variable "grafana_apiserver_basic_dashboard_url" {
|
||||
description = "Dashboard URL for Kube-apiserver (basic) Grafana Dashboard JSON"
|
||||
type = string
|
||||
default = "https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/infrastructure/apiserver-basic.json"
|
||||
}
|
||||
|
||||
variable "grafana_apiserver_advanced_dashboard_url" {
|
||||
description = "Dashboard URL for Kube-apiserver (advanced) Grafana Dashboard JSON"
|
||||
type = string
|
||||
default = "https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/infrastructure/apiserver-advanced.json"
|
||||
}
|
||||
|
||||
variable "grafana_apiserver_troubleshooting_dashboard_url" {
|
||||
description = "Dashboard URL for Kube-apiserver (troubleshooting) Grafana Dashboard JSON"
|
||||
type = string
|
||||
default = "https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/infrastructure/apiserver-troubleshooting.json"
|
||||
}
|
||||
|
||||
variable "grafana_kubelet_dashboard_url" {
|
||||
description = "Dashboard URL for Kubelet Grafana Dashboard JSON"
|
||||
type = string
|
||||
|
||||
Reference in New Issue
Block a user