Files
terraform-aws-observability…/modules/workloads/infra/README.md
T
Rodrigue Koffi 54c810e1a9 Add support for tf 1.3+ (#58)
* Add support for tf 1.3+

* Bump min version

* Bump blueprint version
2022-10-25 15:57:37 +02:00

8.5 KiB

Infrastructure monitoring

This module provides EKS cluster monitoring with the following resources:

  • AWS Distro For OpenTelemetry Operator and Collector
  • AWS Managed Grafana Dashboard and data source
  • Alerts and recording rules with AWS Managed Service for Prometheus

This module is inspired from the open source kube-prometheus-stack

Requirements

Name Version
terraform >= 1.1.0
aws >= 4.0.0
grafana >= 1.25.0
helm >= 2.4.1
kubectl >= 1.14
kubernetes >= 2.10

Providers

Name Version
aws >= 4.0.0
grafana >= 1.25.0
helm >= 2.4.1

Modules

Name Source Version
helm_addon github.com/aws-ia/terraform-aws-eks-blueprints//modules/kubernetes-addons/helm-addon v4.13.1

Resources

Name Type
aws_prometheus_rule_group_namespace.alerting_rules resource
aws_prometheus_rule_group_namespace.recording_rules resource
grafana_dashboard.cluster resource
grafana_dashboard.kubelet resource
grafana_dashboard.nodeexp_nodes resource
grafana_dashboard.nodes resource
grafana_dashboard.nsworkload resource
grafana_dashboard.workloads resource
helm_release.kube_state_metrics resource
helm_release.prometheus_node_exporter resource
aws_caller_identity.current data source
aws_eks_cluster.eks_cluster data source
aws_partition.current data source
aws_region.current data source

Inputs

Name Description Type Default Required
dashboards_folder_id Grafana folder ID for automatic dashboards string n/a yes
eks_cluster_id EKS Cluster Id string n/a yes
enable_alerting_rules Enables or disables Managed Prometheus alerting rules bool true no
enable_dashboards Enables or disables curated dashboards bool true no
enable_kube_state_metrics Enables or disables Kube State metrics exporter. Disabling this might affect some data in the dashboards bool true no
enable_node_exporter Enables or disables Node exporter. Disabling this might affect some data in the dashboards bool true no
enable_recording_rules Enables or disables Managed Prometheus recording rules. Disabling this might affect some data in the dashboards bool true no
helm_config Helm Config for Prometheus any {} no
irsa_iam_permissions_boundary IAM permissions boundary for IRSA roles string "" no
irsa_iam_role_path IAM role path for IRSA roles string "/" no
ksm_config Kube State metrics configuration
object({
create_namespace = bool
k8s_namespace = string
helm_chart_name = string
helm_chart_version = string
helm_release_name = string
helm_repo_url = string
helm_settings = map(string)
helm_values = map(any)

scrape_interval = string
scrape_timeout = string
})
{
"create_namespace": true,
"helm_chart_name": "kube-state-metrics",
"helm_chart_version": "4.16.0",
"helm_release_name": "kube-state-metrics",
"helm_repo_url": "https://prometheus-community.github.io/helm-charts",
"helm_settings": {},
"helm_values": {},
"k8s_namespace": "kube-system",
"scrape_interval": "60s",
"scrape_timeout": "15s"
}
no
managed_prometheus_workspace_endpoint Amazon Managed Prometheus Workspace Endpoint string null no
managed_prometheus_workspace_id Amazon Managed Prometheus Workspace ID string null no
managed_prometheus_workspace_region Amazon Managed Prometheus Workspace's Region string null no
ne_config Node exporter configuration
object({
create_namespace = bool
k8s_namespace = string
helm_chart_name = string
helm_chart_version = string
helm_release_name = string
helm_repo_url = string
helm_settings = map(string)
helm_values = map(any)

scrape_interval = string
scrape_timeout = string
})
{
"create_namespace": true,
"helm_chart_name": "prometheus-node-exporter",
"helm_chart_version": "2.0.3",
"helm_release_name": "prometheus-node-exporter",
"helm_repo_url": "https://prometheus-community.github.io/helm-charts",
"helm_settings": {},
"helm_values": {},
"k8s_namespace": "prometheus-node-exporter",
"scrape_interval": "60s",
"scrape_timeout": "60s"
}
no
prometheus_config Controls default values such as scrape interval, timeouts and ports globally
object({
global_scrape_interval = string
global_scrape_timeout = string
})
{
"global_scrape_interval": "60s",
"global_scrape_timeout": "15s"
}
no
tags Additional tags (e.g. map('BusinessUnit,XYZ) map(string) {} no

Outputs

Name Description
grafana_dashboard_urls URLs for dashboards created