Skip to content

vomba/terraform-aws-eks-monitoring

 
 

Repository files navigation

terraform-aws-eks-monitoring

Deploys the "Grafana + Prometheus + Loki" monitoring stack via Helm on AWS EKS.

Usage

Example:

module "monitoring" {
  source = "github.com/andreswebs/terraform-aws-eks-monitoring"

  cluster_oidc_provider = var.eks_cluster_oidc_provider

  loki_iam_role_name           = "loki-${var.eks_cluster_id}"
  loki_compactor_iam_role_name = "loki-compactor-${var.eks_cluster_id}"
  grafana_iam_role_name        = "grafana-${var.eks_cluster_id}"

  loki_storage_s3_bucket_name = var.loki_storage_s3_bucket_name

  chart_version_loki_distributed = var.chart_version_loki_distributed
  chart_version_promtail         = var.chart_version_promtail
  chart_version_prometheus       = var.chart_version_prometheus
  chart_version_grafana          = var.chart_version_grafana

  grafana_enabled = true

}

Inputs

Name Description Type Default Required
chart_version_fluent_bit Chart version string null no
chart_version_grafana Chart version string null no
chart_version_loki Chart version string null no
chart_version_loki_distributed Chart version string null no
chart_version_metrics_server Chart version string null no
chart_version_prometheus Chart version string null no
chart_version_promtail Chart version string null no
cluster_oidc_provider OpenID Connect (OIDC) Identity Provider associated with the Kubernetes cluster string "" no
create_loki_storage Create S3 bucket for Loki storage? bool false no
create_loki_storage_id_suffix Append a random identifier string suffix to the Loki storage S3 bucket name? bool false no
create_loki_storage_kms_key Create KMS key? bool true no
grafana_enabled Enable Grafana? bool true no
grafana_iam_role_name Name of IAM role for Grafana string "grafana" no
grafana_service_account_name Name of the Kubernetes service account for Grafana string "grafana" no
helm_atomic_creation Purge resources on installation failure ? The wait flag will be set automatically if atomic is used bool true no
helm_cleanup_on_fail Deletion new resources created in this upgrade if the upgrade fails ? bool true no
helm_create_namespace Create the namespace if it does not yet exist ? bool true no
helm_dependency_update Run helm dependency update before installing the chart ? bool false no
helm_force_update Force resource update through delete/recreate if needed ? bool false no
helm_keyring Location of public keys used for verification; used only if verify is true string ".gnupg/pubring.gpg" no
helm_max_history Maximum number of release versions stored per release; 0 means no limit number 3 no
helm_recreate_pods Perform pods restart during upgrade/rollback ? bool true no
helm_release_name_fluent_bit Release name string "fluent-bit" no
helm_release_name_grafana Release name string "grafana" no
helm_release_name_loki Release name string "loki" no
helm_release_name_metrics_server Release name string "metrics-server" no
helm_release_name_prometheus Release name string "prometheus" no
helm_release_name_promtail Release name string "promtail" no
helm_replace Re-use the given name, even if that name is already used; this is unsafe in production bool false no
helm_reset_values When upgrading, reset the values to the ones built into the chart ? bool false no
helm_reuse_values When upgrading, reuse the last release's values and merge any overrides ? If 'reset_values' is specified, this is ignored bool false no
helm_skip_crds Skip installing CRDs ? bool false no
helm_timeout_seconds Time in seconds to wait for any individual kubernetes operation number 300 no
helm_verify Verify the package before installing it. Helm uses a provenance file to verify the integrity of the chart bool false no
helm_wait_for_completion Wait until all resources are in a ready state before marking the release as successful ? bool true no
helm_wait_for_jobs Wait until all Jobs have been completed before marking the release as successful ? bool true no
k8s_namespace Name of the Kubernetes namespace to which resources will be deployed string "monitoring" no
loki_aggregator Loki aggregator to install, must be either promtail or fluent-bit string "promtail" no
loki_compactor_iam_role_name Name of IAM role for Loki Compactor string "loki-compactor" no
loki_compactor_service_account_name Name of the Kubernetes service account for the Loki compactor string "loki-compactor" no
loki_enabled Enable Loki? bool true no
loki_iam_role_name Name of IAM role for Loki string "loki" no
loki_mode Loki mode, must be either single or distributed string "distributed" no
loki_service_account_name Name of the Kubernetes service account for Loki components string "loki" no
loki_storage_expiration_days Number of days to retain objects; 0 means never expire number 90 no
loki_storage_kms_key_arn (Optional) ARN of KMS key used to encrypt bucket objects; ignored if create_kms_key is set to true string null no
loki_storage_kms_key_deletion_window_in_days KMS key deletion window in days number 30 no
loki_storage_kms_key_enable_rotation Enable KMS key rotation? bool true no
loki_storage_s3_bucket_name Name of S3 bucket used for Loki storage string "" no
loki_storage_s3_force_destroy Force destroy bucket when running terraform destroy? bool false no
metrics_server_enabled Enable Metrics Server? bool true no
prometheus_enabled Enable Prometheus? bool true no

Modules

Name Source Version
iam ./modules/iam n/a
log_storage ./modules/storage n/a
resources ./modules/resources n/a

Outputs

Name Description
namespace The name (metadata.name) of the namespace

Providers

Name Version
random ~> 3.4

Requirements

Name Version
terraform ~> 1.3
aws ~> 4.50
helm ~> 2.9
random ~> 3.4

Resources

Name Type
random_id.id resource

Authors

Andre Silva - @andreswebs

License

This project is licensed under the Unlicense.

About

Deploys Prometheus, Grafana, Loki and Promtail on AWS EKS via Helm

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • HCL 100.0%