@@ -33,6 +33,13 @@ The Observability Terraform Module is a comprehensive solution designed to simpl
33
33
- Automates the deployment of the entire observability stack, reducing complexity and ensuring consistency.
34
34
- Includes preconfigured dashboards and alert rules for quick setup and immediate insights.
35
35
36
+ 5 . Signoz Community Edition Support
37
+ - Adds native support for Signoz CE, an all-in-one observability platform.
38
+
39
+ - Enables logs, metrics, and traces to be collected and correlated in one unified interface.
40
+
41
+ - Simplifies tracing setup with OpenTelemetry Collector and works out of the box with distributed applications.
42
+
36
43
For more information about this repository and its usage, please see [ Terraform AWS ARC Observability Module Usage Guide] ( docs/module-usage-guide/README.md ) .
37
44
38
45
@@ -232,16 +239,17 @@ No resources.
232
239
| <a name =" input_namespace " ></a > [ namespace] ( #input\_ namespace ) | Namespace for the resources. | ` string ` | n/a | yes |
233
240
| <a name="input_prometheus_config"></a> [prometheus\_config](#input\_prometheus\_config) | Configuration settings for deploying Prometheus | <pre>object({<br> name = optional(string, "prometheus")<br> k8s_namespace = object({<br> name = optional(string, "metrics")<br> create = optional(bool, true)<br> })<br> log_level = optional(string, "info")<br> replica_count = optional(number, 1)<br> storage = optional(string, "8Gi")<br> storage_class = optional(string, "gp2")<br> enable_kube_state_metrics = optional(bool, true)<br> enable_node_exporter = optional(bool, true)<br> cpu_limit = optional(string, "100m")<br> memory_limit = optional(string, "512Mi")<br> cpu_request = optional(string, "100m")<br> memory_request = optional(string, "128Mi")<br> retention_period = optional(string, "15d")<br><br> grafana_config = object({<br> name = optional(string, "grafana")<br> replica_count = optional(number, 1)<br> ingress_enabled = optional(bool, false)<br> lb_visibility = optional(string, "internet-facing") # Options: "internal" or "internet-facing"<br> aws_certificate_arn = optional(string, "")<br> ingress_host = optional(string, "")<br> admin_user = optional(string, "admin")<br> cpu_limit = optional(string, "100m")<br> memory_limit = optional(string, "128Mi")<br> cpu_request = optional(string, "100m")<br> memory_request = optional(string, "128Mi")<br> dashboard_list = optional(list(object({<br> name = string<br> json = string<br> })), [])<br> })<br><br> blackbox_exporter_config = object({<br> name = optional(string, "blackbox-exporter")<br> replica_count = optional(number, 1)<br> cpu_limit = optional(string, "100m")<br> memory_limit = optional(string, "500Mi")<br> cpu_request = optional(string, "100m")<br> memory_request = optional(string, "50Mi")<br> monitoring_targets = list(object({<br> name = string # Target name (e.g., google)<br> url = string # URL to monitor (e.g., https://google.com)<br> scrape_interval = optional(string, "60s") # Scrape interval (e.g., 60s)<br> scrape_timeout = optional(string, "60s") # Scrape timeout (e.g., 60s)<br> status_code_pattern_list = optional(string, "[http_2xx]") # Blackbox module to use (e.g., http_2xx)<br> }))<br> })<br><br> alertmanager_config = object({<br> name = optional(string, "alertmanager")<br> replica_count = optional(number, 1)<br> cpu_limit = optional(string, "100m")<br> memory_limit = optional(string, "128Mi")<br> cpu_request = optional(string, "10m")<br> memory_request = optional(string, "32Mi")<br> custom_alerts = optional(string, "")<br> alert_notification_settings = optional(string, "")<br> })<br> })</pre> | <pre>{<br> "alertmanager_config": {<br> "name": "alertmanager"<br> },<br> "blackbox_exporter_config": {<br> "monitoring_targets": [],<br> "name": "blackbox-exporter"<br> },<br> "enable_kube_state_metrics": true,<br> "enable_node_exporter": true,<br> "grafana_config": {<br> "admin_user": "admin",<br> "ingress_enabled": false,<br> "lb_visibility": "internet-facing",<br> "prometheus_endpoint": "prometheus"<br> },<br> "k8s_namespace": {<br> "create": true,<br> "name": "metrics"<br> },<br> "log_level": "info",<br> "replica_count": 1,<br> "resources": {<br> "cpu_limit": "100m",<br> "cpu_request": "100m",<br> "memory_limit": "512Mi",<br> "memory_request": "128Mi"<br> },<br> "retention_period": "15d",<br> "storage": "8Gi"<br>}</pre> | no |
234
241
| <a name =" input_search_engine " ></a > [ search\_ engine] ( #input\_ search\_ engine ) | (optional) Search engine for logs | ` string ` | ` null ` | no |
235
- | <a name="input_signoz_config"></a> [signoz\_config](#input\_signoz\_config) | Configuration for observability components in the monitoring stack. This variable encapsulates<br>settings for the following components:<br><br>- ClickHouse:<br> Used as the backend storage engine for observability data (like traces and metrics).<br> Includes credentials and resource limits/requests for tuning performance.<br><br>- SigNoz:<br> Provides the UI and analytics for monitoring and tracing applications.<br> Includes ingress setup and compute resource configuration.<br><br>- Alertmanager:<br> Handles alerting rules and notifications for monitoring data.<br> Includes configuration for storage, scaling, and ingress settings.<br><br>- OTEL Collector:<br> Collects telemetry data (logs, metrics, traces) from the applications and<br> routes it to appropriate backends.<br> Includes resource definitions and optional ingress configuration.<br><br>This structure enables centralized management of observability stack deployment in Kubernetes<br>via Terraform. | <pre>object({<br> k8s_namespace = object({<br> name = optional(string, "signoz")<br> create = optional(bool, false)<br> })<br> name = string<br> storage_class = optional(string, "gp3")<br> cluster_name = string<br> clickhouse = optional(object({<br> user = optional(string, "admin")<br> password = optional(string, "27ff0399-0d3a-4bd8-919d-17c2181e6fb9")<br> cpu_limit = optional(string, "2000m")<br> memory_limit = optional(string, "4Gi")<br> cpu_request = optional(string, "100m")<br> memory_request = optional(string, "200Mi")<br> storage = optional(string, "20Gi")<br> }))<br><br> signoz_bin = optional(object({<br> replica_count = optional(number, 1)<br> cpu_limit = optional(string, "750m")<br> memory_limit = optional(string, "1000Mi")<br> cpu_request = optional(string, "100m")<br> memory_request = optional(string, "200Mi")<br> enable_ingress = optional(bool, false)<br> certificate_arn = optional(string, null)<br> domain = optional(string, "signoz.example.com")<br> }))<br><br> alertmanager = optional(object({<br> enable = optional(bool, false)<br> replica_count = optional(number, 1)<br> cpu_limit = optional(string, "750m")<br> memory_limit = optional(string, "1000Mi")<br> cpu_request = optional(string, "100m")<br> memory_request = optional(string, "200Mi")<br> storage = optional(string, "100Mi")<br> enable_ingress = optional(bool, false)<br> certificate_arn = optional(string, null)<br> domain = optional(string, "signoz.example.com")<br> }))<br><br> otel_collector = optional(object({<br> cpu_limit = optional(string, "1")<br> memory_limit = optional(string, "2Gi")<br> cpu_request = optional(string, "100m")<br> memory_request = optional(string, "200Mi")<br> storage = optional(string, "100Mi")<br> enable_ingress = optional(bool, false)<br> certificate_arn = optional(string, null)<br> domain = optional(string, "signoz.example.com")<br> }))<br> })</pre> | <pre>{<br> "cluster_name": null,<br> "k8s_namespace": {<br> "create": true,<br> "name": "signoz"<br> },<br> "name": null<br>}</pre> | no |
242
+ | <a name="input_signoz_config"></a> [signoz\_config](#input\_signoz\_config) | Configuration for observability components in the monitoring stack. This variable encapsulates<br>settings for the following components:<br><br>- ClickHouse:<br> Used as the backend storage engine for observability data (like traces and metrics).<br> Includes credentials and resource limits/requests for tuning performance.<br><br>- SigNoz:<br> Provides the UI and analytics for monitoring and tracing applications.<br> Includes ingress setup and compute resource configuration.<br><br>- Alertmanager:<br> Handles alerting rules and notifications for monitoring data.<br> Includes configuration for storage, scaling, and ingress settings.<br><br>- OTEL Collector:<br> Collects telemetry data (logs, metrics, traces) from the applications and<br> routes it to appropriate backends.<br> Includes resource definitions and optional ingress configuration.<br><br>This structure enables centralized management of observability stack deployment in Kubernetes<br>via Terraform. | <pre>object({<br> k8s_namespace = object({<br> name = optional(string, "signoz")<br> create = optional(bool, false)<br> })<br> name = string<br> storage_class = optional(string, "gp3")<br> cluster_name = string<br> clickhouse = optional(object({<br> user = optional(string, "admin")<br> cpu_limit = optional(string, "2000m")<br> memory_limit = optional(string, "4Gi")<br> cpu_request = optional(string, "100m")<br> memory_request = optional(string, "200Mi")<br> storage = optional(string, "20Gi")<br> }))<br><br> signoz_bin = optional(object({<br> replica_count = optional(number, 1)<br> cpu_limit = optional(string, "750m")<br> memory_limit = optional(string, "1000Mi")<br> cpu_request = optional(string, "100m")<br> memory_request = optional(string, "200Mi")<br> ingress_enabled = optional(bool, false)<br> aws_certificate_arn = optional(string, null)<br> domain = string<br> root_domain = optional(string, null) // if root domain is provided, it creates DNS record<br> lb_visibility = optional(string, "internet-facing") # Options: "internal" or "internet-facing"<br> metric_collection_interval = optional(string, "30s")<br> }))<br><br> alertmanager = optional(object({<br> enable = optional(bool, false)<br> replica_count = optional(number, 1)<br> cpu_limit = optional(string, "750m")<br> memory_limit = optional(string, "1000Mi")<br> cpu_request = optional(string, "100m")<br> memory_request = optional(string, "200Mi")<br> storage = optional(string, "100Mi")<br> enable_ingress = optional(bool, false)<br> aws_certificate_arn = optional(string, null)<br> domain = optional(string, "signoz.example.com")<br> }))<br><br> otel_collector = optional(object({<br> cpu_limit = optional(string, "1")<br> memory_limit = optional(string, "2Gi")<br> cpu_request = optional(string, "100m")<br> memory_request = optional(string, "200Mi")<br> storage = optional(string, "100Mi")<br> enable_ingress = optional(bool, false)<br> aws_certificate_arn = optional(string, null)<br> domain = optional(string, "signoz.example.com")<br> }))<br> })</pre> | <pre>{<br> "cluster_name": null,<br> "k8s_namespace": {<br> "create": true,<br> "name": "signoz"<br> },<br> "name": null<br>}</pre> | no |
236
243
| <a name =" input_tags " ></a > [ tags] ( #input\_ tags ) | (optional) Tags for AWS resources | ` map(string) ` | ` {} ` | no |
237
244
| <a name =" input_tracing_stack " ></a > [ tracing\_ stack] ( #input\_ tracing\_ stack ) | (optional) Distributed tracing stack | ` string ` | ` null ` | no |
238
245
239
246
## Outputs
240
247
241
248
| Name | Description |
242
249
| ------| -------------|
243
- | <a name =" output_grafana_lb_arn " ></a > [ grafana\_ lb\_ arn] ( #output\_ grafana\_ lb\_ arn ) | Grafana ingress loadbalancer ARN |
244
- | <a name =" output_kibana_lb_arn " ></a > [ kibana\_ lb\_ arn] ( #output\_ kibana\_ lb\_ arn ) | Kibana ingress loadbalancer ARN |
250
+ | <a name =" output_grafana_lb_dns " ></a > [ grafana\_ lb\_ dns] ( #output\_ grafana\_ lb\_ dns ) | Grafana ingress loadbalancer DNS |
251
+ | <a name =" output_kibana_lb_dns " ></a > [ kibana\_ lb\_ dns] ( #output\_ kibana\_ lb\_ dns ) | Kibana ingress loadbalancer DNS |
252
+ | <a name =" output_signoz_lb_dns " ></a > [ signoz\_ lb\_ dns] ( #output\_ signoz\_ lb\_ dns ) | Signoz ingress loadbalancer DNS |
245
253
<!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK -->
246
254
247
255
## Development
0 commit comments