Skip to content

Commit 94e3d9b

Browse files
committed
cloud_run_alerts: add flexible json-based log indicators and policies
1 parent ed3653b commit 94e3d9b

File tree

3 files changed

+358
-14
lines changed

3 files changed

+358
-14
lines changed

modules/alerts_cloud_run/README.md

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -106,23 +106,25 @@ module "cloud_run_service_alerts" {
106106

107107
| Name | Description | Type | Default | Required |
108108
|------|-------------|------|---------|:--------:|
109-
| <a name="input_built_in_container_util_indicators"></a> [built\_in\_container\_util\_indicators](#input\_built\_in\_container\_util\_indicators) | Map for Cloud Run container utilization indicators. The window must be in seconds. Threshold should be represented | <pre>map(object({<br> metric = string<br> window = number<br> threshold = number<br> p_value = optional(number)<br> additional_filters = optional(string)<br> additional_group_by_fields = optional(list(string))<br> }))</pre> | `{}` | no |
110-
| <a name="input_built_in_forward_progress_indicators"></a> [built\_in\_forward\_progress\_indicators](#input\_built\_in\_forward\_progress\_indicators) | Map for forward progress Cloud Run indicators. The window must be in seconds. | <pre>map(object({<br> metric = string<br> window = number<br> threshold = number<br> additional_filters = optional(string)<br> additional_group_by_fields = optional(list(string))<br> }))</pre> | `{}` | no |
111-
| <a name="input_cloud_run_resource"></a> [cloud\_run\_resource](#input\_cloud\_run\_resource) | One of either service name or job name which will dictate the Cloud Run resource to monitor. | <pre>object({<br> service_name = optional(string)<br> job_name = optional(string)<br> })</pre> | n/a | yes |
109+
| <a name="input_advanced_log_based_json_indicators"></a> [advanced\_log\_based\_json\_indicators](#input\_advanced\_log\_based\_json\_indicators) | Map for advanced log based indicators using JSON payload with custom label extractors, metric descriptors, and alert conditions. | <pre>map(object({<br/> name = string<br/> description = optional(string)<br/> filter = string<br/> label_extractors = map(string)<br/> metric_kind = string<br/> value_type = string<br/> labels = list(object({<br/> key = string<br/> value_type = string<br/> description = string<br/> }))<br/> alert_condition = object({<br/> duration = string<br/> threshold = number<br/> aligner = string<br/> reducer = string<br/> filter = optional(string)<br/> group_by_fields = optional(list(string))<br/> # Policy name allows custom policy name<br/> policy_name = optional(string)<br/> # Policy severity allows custom severity<br/> policy_severity = optional(string, "ERROR")<br/> # Runbook URL for this specific policy<br/> runbook_url = optional(string)<br/> # Policy group to include this metric in (if not specified, creates individual policy)<br/> policy_group = optional(string)<br/> })<br/> }))</pre> | `{}` | no |
110+
| <a name="input_built_in_container_util_indicators"></a> [built\_in\_container\_util\_indicators](#input\_built\_in\_container\_util\_indicators) | Map for Cloud Run container utilization indicators. The window must be in seconds. Threshold should be represented | <pre>map(object({<br/> metric = string<br/> window = number<br/> threshold = number<br/> p_value = optional(number)<br/> additional_filters = optional(string)<br/> additional_group_by_fields = optional(list(string))<br/> }))</pre> | `{}` | no |
111+
| <a name="input_built_in_forward_progress_indicators"></a> [built\_in\_forward\_progress\_indicators](#input\_built\_in\_forward\_progress\_indicators) | Map for forward progress Cloud Run indicators. The window must be in seconds. | <pre>map(object({<br/> metric = string<br/> window = number<br/> threshold = number<br/> additional_filters = optional(string)<br/> additional_group_by_fields = optional(list(string))<br/> }))</pre> | `{}` | no |
112+
| <a name="input_cloud_run_resource"></a> [cloud\_run\_resource](#input\_cloud\_run\_resource) | One of either service name or job name which will dictate the Cloud Run resource to monitor. | <pre>object({<br/> service_name = optional(string)<br/> job_name = optional(string)<br/> })</pre> | n/a | yes |
113+
| <a name="input_enable_advanced_log_based_json_indicators"></a> [enable\_advanced\_log\_based\_json\_indicators](#input\_enable\_advanced\_log\_based\_json\_indicators) | A flag to enable or disable the creation of advanced log based JSON indicators. | `bool` | `false` | no |
112114
| <a name="input_enable_built_in_container_indicators"></a> [enable\_built\_in\_container\_indicators](#input\_enable\_built\_in\_container\_indicators) | A flag to enable or disable the creation of built in container utilization indicators. | `bool` | `false` | no |
113115
| <a name="input_enable_built_in_forward_progress_indicators"></a> [enable\_built\_in\_forward\_progress\_indicators](#input\_enable\_built\_in\_forward\_progress\_indicators) | A flag to enable or disable the creation of built in forward progress indicators. | `bool` | `false` | no |
114116
| <a name="input_enable_log_based_json_indicators"></a> [enable\_log\_based\_json\_indicators](#input\_enable\_log\_based\_json\_indicators) | A flag to enable or disable the creation of log based JSON indicators. | `bool` | `false` | no |
115117
| <a name="input_enable_log_based_text_indicators"></a> [enable\_log\_based\_text\_indicators](#input\_enable\_log\_based\_text\_indicators) | A flag to enable or disable the creation of log based text indicators. | `bool` | `false` | no |
116-
| <a name="input_job_failure_configuration"></a> [job\_failure\_configuration](#input\_job\_failure\_configuration) | Configuration applied to the job failure alert policy. Only applies to jobs. | <pre>object({<br> enabled = bool<br> window = number<br> threshold = number<br> additional_filters = optional(string)<br> additional_group_by_fields = optional(list(string))<br> })</pre> | <pre>{<br> "additional_filters": "",<br> "additional_group_by_fields": [],<br> "enabled": false,<br> "threshold": 0,<br> "window": 300<br>}</pre> | no |
117-
| <a name="input_log_based_json_indicators"></a> [log\_based\_json\_indicators](#input\_log\_based\_json\_indicators) | Map for log based indicators using JSON payload. Payload message is a regex match. | <pre>map(object({<br> log_name_suffix = string<br> severity = string<br> condition_threshold = object({<br> window = number<br> threshold = number<br> })<br> additional_filters = optional(string)<br> additional_group_by_fields = optional(list(string))<br> }))</pre> | `{}` | no |
118-
| <a name="input_log_based_text_indicators"></a> [log\_based\_text\_indicators](#input\_log\_based\_text\_indicators) | Map for log based indicators using text payload. Payload message is a regex match. | <pre>map(object({<br> log_name_suffix = string<br> severity = string<br> text_payload_message = string<br> condition_threshold = object({<br> window = number<br> threshold = number<br> })<br> additional_filters = optional(string)<br> additional_group_by_fields = optional(list(string))<br> }))</pre> | `{}` | no |
118+
| <a name="input_job_failure_configuration"></a> [job\_failure\_configuration](#input\_job\_failure\_configuration) | Configuration applied to the job failure alert policy. Only applies to jobs. | <pre>object({<br/> enabled = bool<br/> window = number<br/> threshold = number<br/> additional_filters = optional(string)<br/> additional_group_by_fields = optional(list(string))<br/> })</pre> | <pre>{<br/> "additional_filters": "",<br/> "additional_group_by_fields": [],<br/> "enabled": false,<br/> "threshold": 0,<br/> "window": 300<br/>}</pre> | no |
119+
| <a name="input_log_based_json_indicators"></a> [log\_based\_json\_indicators](#input\_log\_based\_json\_indicators) | Map for log based indicators using JSON payload. Payload message is a regex match. | <pre>map(object({<br/> log_name_suffix = string<br/> severity = string<br/> condition_threshold = object({<br/> window = number<br/> threshold = number<br/> })<br/> additional_filters = optional(string)<br/> additional_group_by_fields = optional(list(string))<br/> }))</pre> | `{}` | no |
120+
| <a name="input_log_based_text_indicators"></a> [log\_based\_text\_indicators](#input\_log\_based\_text\_indicators) | Map for log based indicators using text payload. Payload message is a regex match. | <pre>map(object({<br/> log_name_suffix = string<br/> severity = string<br/> text_payload_message = string<br/> condition_threshold = object({<br/> window = number<br/> threshold = number<br/> })<br/> additional_filters = optional(string)<br/> additional_group_by_fields = optional(list(string))<br/> }))</pre> | `{}` | no |
119121
| <a name="input_notification_channels_non_paging"></a> [notification\_channels\_non\_paging](#input\_notification\_channels\_non\_paging) | List of notification channels to alert. | `list(string)` | `[]` | no |
120122
| <a name="input_project_id"></a> [project\_id](#input\_project\_id) | The GCP project ID. | `string` | n/a | yes |
121-
| <a name="input_runbook_urls"></a> [runbook\_urls](#input\_runbook\_urls) | URLs of markdown files. | <pre>object({<br> forward_progress = optional(string)<br> container_util = optional(string)<br> bad_request = optional(string)<br> server_fault = optional(string)<br> request_latency = optional(string)<br> max_conns = optional(string)<br> job_failure = optional(string)<br> text_based_logs = optional(string)<br> json_based_logs = optional(string)<br> })</pre> | n/a | yes |
122-
| <a name="input_service_4xx_configuration"></a> [service\_4xx\_configuration](#input\_service\_4xx\_configuration) | Configuration applied to the 4xx alert policy. Only applies to services. | <pre>object({<br> enabled = bool<br> window = number<br> threshold = number<br> additional_filters = optional(string)<br> additional_group_by_fields = optional(list(string))<br> })</pre> | <pre>{<br> "additional_filters": "",<br> "additional_group_by_fields": [],<br> "enabled": false,<br> "threshold": 0,<br> "window": 300<br>}</pre> | no |
123-
| <a name="input_service_5xx_configuration"></a> [service\_5xx\_configuration](#input\_service\_5xx\_configuration) | Configuration applied to the 5xx alert policy. Only applies to services. | <pre>object({<br> enabled = bool<br> window = number<br> threshold = number<br> additional_filters = optional(string)<br> additional_group_by_fields = optional(list(string))<br> })</pre> | <pre>{<br> "additional_filters": "",<br> "additional_group_by_fields": [],<br> "enabled": false,<br> "threshold": 0,<br> "window": 300<br>}</pre> | no |
124-
| <a name="input_service_latency_configuration"></a> [service\_latency\_configuration](#input\_service\_latency\_configuration) | Configuration applied to the request latency alert policy. Only applies to services. | <pre>object({<br> enabled = bool<br> window = number<br> threshold_ms = number<br> p_value = number<br> additional_filters = optional(string)<br> additional_group_by_fields = optional(list(string))<br> })</pre> | <pre>{<br> "additional_filters": "",<br> "additional_group_by_fields": [],<br> "enabled": false,<br> "p_value": 95,<br> "threshold_ms": 0,<br> "window": 300<br>}</pre> | no |
125-
| <a name="input_service_max_conns_configuration"></a> [service\_max\_conns\_configuration](#input\_service\_max\_conns\_configuration) | Configuration applied to the max connections alert policy. Only applies to services. | <pre>object({<br> enabled = bool<br> window = number<br> threshold = number<br> p_value = number<br> additional_filters = optional(string)<br> additional_group_by_fields = optional(list(string))<br> })</pre> | <pre>{<br> "additional_filters": "",<br> "additional_group_by_fields": [],<br> "enabled": false,<br> "p_value": 95,<br> "threshold": 0,<br> "window": 300<br>}</pre> | no |
123+
| <a name="input_runbook_urls"></a> [runbook\_urls](#input\_runbook\_urls) | URLs of markdown files. | <pre>object({<br/> forward_progress = optional(string)<br/> container_util = optional(string)<br/> bad_request = optional(string)<br/> server_fault = optional(string)<br/> request_latency = optional(string)<br/> max_conns = optional(string)<br/> job_failure = optional(string)<br/> text_based_logs = optional(string)<br/> json_based_logs = optional(string)<br/> })</pre> | n/a | yes |
124+
| <a name="input_service_4xx_configuration"></a> [service\_4xx\_configuration](#input\_service\_4xx\_configuration) | Configuration applied to the 4xx alert policy. Only applies to services. | <pre>object({<br/> enabled = bool<br/> window = number<br/> threshold = number<br/> additional_filters = optional(string)<br/> additional_group_by_fields = optional(list(string))<br/> })</pre> | <pre>{<br/> "additional_filters": "",<br/> "additional_group_by_fields": [],<br/> "enabled": false,<br/> "threshold": 0,<br/> "window": 300<br/>}</pre> | no |
125+
| <a name="input_service_5xx_configuration"></a> [service\_5xx\_configuration](#input\_service\_5xx\_configuration) | Configuration applied to the 5xx alert policy. Only applies to services. | <pre>object({<br/> enabled = bool<br/> window = number<br/> threshold = number<br/> additional_filters = optional(string)<br/> additional_group_by_fields = optional(list(string))<br/> })</pre> | <pre>{<br/> "additional_filters": "",<br/> "additional_group_by_fields": [],<br/> "enabled": false,<br/> "threshold": 0,<br/> "window": 300<br/>}</pre> | no |
126+
| <a name="input_service_latency_configuration"></a> [service\_latency\_configuration](#input\_service\_latency\_configuration) | Configuration applied to the request latency alert policy. Only applies to services. | <pre>object({<br/> enabled = bool<br/> window = number<br/> threshold_ms = number<br/> p_value = number<br/> additional_filters = optional(string)<br/> additional_group_by_fields = optional(list(string))<br/> })</pre> | <pre>{<br/> "additional_filters": "",<br/> "additional_group_by_fields": [],<br/> "enabled": false,<br/> "p_value": 95,<br/> "threshold_ms": 0,<br/> "window": 300<br/>}</pre> | no |
127+
| <a name="input_service_max_conns_configuration"></a> [service\_max\_conns\_configuration](#input\_service\_max\_conns\_configuration) | Configuration applied to the max connections alert policy. Only applies to services. | <pre>object({<br/> enabled = bool<br/> window = number<br/> threshold = number<br/> p_value = number<br/> additional_filters = optional(string)<br/> additional_group_by_fields = optional(list(string))<br/> })</pre> | <pre>{<br/> "additional_filters": "",<br/> "additional_group_by_fields": [],<br/> "enabled": false,<br/> "p_value": 95,<br/> "threshold": 0,<br/> "window": 300<br/>}</pre> | no |
126128

127129
## Outputs
128130

@@ -145,10 +147,13 @@ No outputs.
145147

146148
| Name | Type |
147149
|------|------|
150+
| [google_logging_metric.advanced_json_payload_logging_metric](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/logging_metric) | resource |
148151
| [google_logging_metric.json_payload_logging_metric](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/logging_metric) | resource |
149152
| [google_logging_metric.text_payload_logging_metric](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/logging_metric) | resource |
153+
| [google_monitoring_alert_policy.advanced_json_payload_logging_alert_policy](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/monitoring_alert_policy) | resource |
150154
| [google_monitoring_alert_policy.container_util_alert_policy](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/monitoring_alert_policy) | resource |
151155
| [google_monitoring_alert_policy.forward_progress_alert_policy](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/monitoring_alert_policy) | resource |
156+
| [google_monitoring_alert_policy.grouped_metric_alert_policies](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/monitoring_alert_policy) | resource |
152157
| [google_monitoring_alert_policy.job_failure_alert_policy](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/monitoring_alert_policy) | resource |
153158
| [google_monitoring_alert_policy.json_payload_logging_alert_policy](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/monitoring_alert_policy) | resource |
154159
| [google_monitoring_alert_policy.service_4xx_alert_policy](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/monitoring_alert_policy) | resource |

0 commit comments

Comments
 (0)