From 63857e57d14f3d8f9f53f8c80646c7c7237115db Mon Sep 17 00:00:00 2001 From: Rafael Romero Carmona Date: Tue, 31 Jul 2018 14:47:21 +0200 Subject: [PATCH] MON-230 Big Query monitors generalized and outputs under control with variable --- README.md | 1 + cloud/gcp/big-query/README.md | 72 ++-- cloud/gcp/big-query/inputs.tf | 426 +++++++++++++++++++ cloud/gcp/big-query/monitors-big-query.tf | 400 +++++++++++++++++ cloud/gcp/big-query/outputs.tf | 44 ++ cloud/gcp/big-query/query.tf | 152 ------- cloud/gcp/big-query/scanned_bytes.tf | 77 ---- cloud/gcp/big-query/scanned_bytes_billed.tf | 77 ---- cloud/gcp/big-query/slots.tf | 74 ---- cloud/gcp/big-query/storage.tf | 78 ---- cloud/gcp/big-query/table_count.tf | 78 ---- cloud/gcp/big-query/uploaded_bytes.tf | 78 ---- cloud/gcp/big-query/uploaded_bytes_billed.tf | 78 ---- 13 files changed, 914 insertions(+), 721 deletions(-) create mode 100644 cloud/gcp/big-query/outputs.tf delete mode 100644 cloud/gcp/big-query/query.tf delete mode 100644 cloud/gcp/big-query/scanned_bytes.tf delete mode 100644 cloud/gcp/big-query/scanned_bytes_billed.tf delete mode 100644 cloud/gcp/big-query/slots.tf delete mode 100644 cloud/gcp/big-query/storage.tf delete mode 100644 cloud/gcp/big-query/table_count.tf delete mode 100644 cloud/gcp/big-query/uploaded_bytes.tf delete mode 100644 cloud/gcp/big-query/uploaded_bytes_billed.tf diff --git a/README.md b/README.md index 4439901..72455ee 100644 --- a/README.md +++ b/README.md @@ -92,6 +92,7 @@ The `//` is very important, it's a terraform specific syntax used to separate gi - [storage](https://bitbucket.org/morea/terraform.feature.datadog/src/master/cloud/azure/storage/) - [stream-analytics](https://bitbucket.org/morea/terraform.feature.datadog/src/master/cloud/azure/stream-analytics/) - [gcp](https://bitbucket.org/morea/terraform.feature.datadog/src/master/cloud/gcp/) + - [big-query](https://bitbucket.org/morea/terraform.feature.datadog/src/master/cloud/gcp/big-query/) - [cloud-sql](https://bitbucket.org/morea/terraform.feature.datadog/src/master/cloud/gcp/cloud-sql/) - [common](https://bitbucket.org/morea/terraform.feature.datadog/src/master/cloud/gcp/cloud-sql/common/) - [mysql](https://bitbucket.org/morea/terraform.feature.datadog/src/master/cloud/gcp/cloud-sql/mysql/) diff --git a/cloud/gcp/big-query/README.md b/cloud/gcp/big-query/README.md index c7a9d32..7964f96 100644 --- a/cloud/gcp/big-query/README.md +++ b/cloud/gcp/big-query/README.md @@ -1,55 +1,43 @@ -GCP Big Query -============================== +# CLOUD GCP BIG-QUERY DataDog monitors -How to use this module ----------------------- +## How to use this module ``` -module "datadog-monitors-gcp-big-query" { +module "datadog-monitors-cloud-gcp-big-query" { source = "git::ssh://git@bitbucket.org/morea/terraform.feature.datadog.git//cloud/gcp/big-query?ref={revision}" - project_id = "${var.gcp_project_id}" environment = "${var.environment}" message = "${module.datadog-message-alerting.alerting-message}" } ``` -Purpose -------- -Creates DataDog monitors with the following checks : +## Purpose -* Query Concurrent Queries -* Query Execution Times (muted by default) -* Query Scanned Bytes (muted by default) -* Query Scanned Bytes Billed (muted by default) +Creates DataDog monitors with the following checks: -* Slots Available +- GCP Big Query Available Slots close to the limit +- GCP Big Query Concurrent Queries close to the limit +- GCP Big Query Execution Time too high +- GCP Big Query Scanned Bytes Billed too high +- GCP Big Query Scanned Bytes too high +- GCP Big Query Stored Bytes too high +- GCP Big Query Table Count too high +- GCP Big Query Uploaded Bytes Billed too high +- GCP Big Query Uploaded Bytes too high -* Storage Stored Bytes (muted by default) -* Storage Table Count per Dataset (muted by default) -* Storage Uploaded Bytes (muted by default) -* Storage Uploaded Bytes Billed (muted by default) - - -Useful links ------------- - -* [GCP Big Query monitoring](https://cloud.google.com/bigquery/docs/monitoring) -* [Datadog Integration for GCP Big Query](https://docs.datadoghq.com/integrations/google_cloud_big_query/) -* [GCP Big Query Quotas and Limits](https://cloud.google.com/bigquery/quotas) - -Inputs ------- +## Inputs | Name | Description | Type | Default | Required | |------|-------------|:----:|:-----:|:-----:| +| available_slots_enabled | Whether or not to create the monitor | string | `true` | no | | available_slots_extra_tags | Extra tags for GCP Big Query Available Slots monitor | list | `` | no | | available_slots_message | Custom message for the Available Slots monitor | string | `` | no | | available_slots_silenced | Groups to mute for GCP Big Query Available Slots monitor. | map | `` | no | | available_slots_threshold_critical | Available Slots (critical threshold) | string | `200` | no | | available_slots_threshold_warning | Available Slots (warning threshold) | string | `300` | no | | available_slots_timeframe | Timeframe for the Available Slots monitor | string | `last_5m` | no | +| concurrent_queries_enabled | Whether or not to create the monitor | string | `true` | no | | concurrent_queries_extra_tags | Extra tags for GCP Big Query Concurrent Queries monitor | list | `` | no | | concurrent_queries_message | Custom message for the Concurrent Queries monitor | string | `` | no | | concurrent_queries_silenced | Groups to mute for GCP Big Query Concurrent Queries monitor | map | `` | no | @@ -58,6 +46,7 @@ Inputs | concurrent_queries_timeframe | Timeframe for the Concurrent Queries monitor | string | `last_5m` | no | | delay | Delay in seconds for the metric evaluation | string | `900` | no | | environment | Architecture environment | string | - | yes | +| execution_time_enabled | Whether or not to create the monitor | string | `true` | no | | execution_time_extra_tags | Extra tags for GCP Big Query Execution Time monitor | list | `` | no | | execution_time_message | Custom message for the Execution Time monitor | string | `` | no | | execution_time_silenced | Groups to mute for GCP Big Query Execution Time monitor. Muted by default. | map | `` | no | @@ -68,36 +57,42 @@ Inputs | filter_tags_use_defaults | Use default filter tags convention | string | `true` | no | | message | Message sent when a monitor is triggered | string | - | yes | | project_id | ID of the GCP Project | string | - | yes | +| scanned_bytes_billed_enabled | Whether or not to create the monitor | string | `true` | no | | scanned_bytes_billed_extra_tags | Extra tags for GCP Big Query Scanned Bytes Billed monitor | list | `` | no | | scanned_bytes_billed_message | Custom message for the Scanned Bytes Billed monitor | string | `` | no | | scanned_bytes_billed_silenced | Groups to mute for GCP Big Query Scanned Bytes Billed monitor. Muted by default. | map | `` | no | | scanned_bytes_billed_threshold_critical | Scanned Bytes Billed Bytes (critical threshold) | string | `1` | no | | scanned_bytes_billed_threshold_warning | Scanned Bytes Billed Bytes (warning threshold) | string | `0` | no | | scanned_bytes_billed_timeframe | Timeframe for the Scanned Bytes Billed monitor | string | `last_4h` | no | +| scanned_bytes_enabled | Whether or not to create the monitor | string | `true` | no | | scanned_bytes_extra_tags | Extra tags for GCP Big Query Scanned Bytes monitor | list | `` | no | | scanned_bytes_message | Custom message for the Scanned Bytes monitor | string | `` | no | | scanned_bytes_silenced | Groups to mute for GCP Big Query Scanned Bytes monitor. Muted by default. | map | `` | no | | scanned_bytes_threshold_critical | Scanned Bytes Bytes (critical threshold) | string | `1` | no | | scanned_bytes_threshold_warning | Scanned Bytes Bytes (warning threshold) | string | `0` | no | | scanned_bytes_timeframe | Timeframe for the Scanned Bytes monitor | string | `last_4h` | no | +| stored_bytes_enabled | Whether or not to create the monitor | string | `true` | no | | stored_bytes_extra_tags | Extra tags for GCP Big Query Stored Bytes monitor | list | `` | no | | stored_bytes_message | Custom message for the Stored Bytes monitor | string | `` | no | | stored_bytes_silenced | Groups to mute for GCP Big Query Stored Bytes monitor. Muted by default. | map | `` | no | | stored_bytes_threshold_critical | Stored Bytes in fraction (critical threshold) | string | `1` | no | | stored_bytes_threshold_warning | Stored Bytes in fraction (warning threshold) | string | `0` | no | | stored_bytes_timeframe | Timeframe for the Stored Bytes monitor | string | `last_5m` | no | +| table_count_enabled | Whether or not to create the monitor | string | `true` | no | | table_count_extra_tags | Extra tags for GCP Big Query Table Count monitor | list | `` | no | | table_count_message | Custom message for the Table Count monitor | string | `` | no | | table_count_silenced | Groups to mute for GCP Big Query Table Count monitor. Muted by default. | map | `` | no | | table_count_threshold_critical | Table Count (critical threshold) | string | `1` | no | | table_count_threshold_warning | Table Count (warning threshold) | string | `0` | no | | table_count_timeframe | Timeframe for the Table Count monitor | string | `last_4h` | no | +| uploaded_bytes_billed_enabled | Whether or not to create the monitor | string | `true` | no | | uploaded_bytes_billed_extra_tags | Extra tags for GCP Big Query Scanned Bytes monitor | list | `` | no | | uploaded_bytes_billed_message | Custom message for the Uploaded Bytes Billed monitor | string | `` | no | | uploaded_bytes_billed_silenced | Groups to mute for GCP Big Query Uploaded Bytes Billed monitor. Muted by default. | map | `` | no | | uploaded_bytes_billed_threshold_critical | Uploaded Bytes Billed in Bytes (critical threshold) | string | `1` | no | | uploaded_bytes_billed_threshold_warning | Uploaded Bytes Billed in Bytes (warning threshold) | string | `0` | no | | uploaded_bytes_billed_timeframe | Timeframe for the Uploaded Bytes Billed monitor | string | `last_4h` | no | +| uploaded_bytes_enabled | Whether or not to create the monitor | string | `true` | no | | uploaded_bytes_extra_tags | Extra tags for GCP Big Query Uploaded Bytes monitor | list | `` | no | | uploaded_bytes_message | Custom message for the Uploaded Bytes monitor | string | `` | no | | uploaded_bytes_silenced | Groups to mute for GCP Big Query Uploaded Bytes monitor. Muted by default. | map | `` | no | @@ -105,3 +100,22 @@ Inputs | uploaded_bytes_threshold_warning | Uploaded Bytes in Bytes (warning threshold) | string | `0` | no | | uploaded_bytes_timeframe | Timeframe for the Uploaded Bytes monitor | string | `last_4h` | no | +## Outputs + +| Name | Description | +|------|-------------| +| available_slots_id | id for monitor available_slots | +| concurrent_queries_id | id for monitor concurrent_queries | +| execution_time_id | id for monitor execution_time | +| scanned_bytes_billed_id | id for monitor scanned_bytes_billed | +| scanned_bytes_id | id for monitor scanned_bytes | +| stored_bytes_id | id for monitor stored_bytes | +| table_count_id | id for monitor table_count | +| uploaded_bytes_billed_id | id for monitor uploaded_bytes_billed | +| uploaded_bytes_id | id for monitor uploaded_bytes | + +## Related documentation + +* [GCP Big Query monitoring](https://cloud.google.com/bigquery/docs/monitoring) +* [Datadog Integration for GCP Big Query](https://docs.datadoghq.com/integrations/google_cloud_big_query/) +* [GCP Big Query Quotas and Limits](https://cloud.google.com/bigquery/quotas) diff --git a/cloud/gcp/big-query/inputs.tf b/cloud/gcp/big-query/inputs.tf index 97fc013..c390b22 100644 --- a/cloud/gcp/big-query/inputs.tf +++ b/cloud/gcp/big-query/inputs.tf @@ -32,3 +32,429 @@ variable "project_id" { type = "string" description = "ID of the GCP Project" } + +# +# Concurrent queries +# +variable "concurrent_queries_enabled" { + description = "Whether or not to create the monitor" + type = "string" + default = "true" +} + +variable "concurrent_queries_message" { + description = "Custom message for the Concurrent Queries monitor" + type = "string" + default = "" +} + +variable "concurrent_queries_timeframe" { + description = "Timeframe for the Concurrent Queries monitor" + type = "string" + default = "last_5m" +} + +variable "concurrent_queries_threshold_warning" { + description = "Concurrent Queries (warning threshold) (hard limit 50)" + type = "string" + default = 40 +} + +variable "concurrent_queries_threshold_critical" { + description = "Concurrent Queries (critical threshold) (hard limit 50)" + type = "string" + default = 45 +} + +variable "concurrent_queries_silenced" { + description = "Groups to mute for GCP Big Query Concurrent Queries monitor" + type = "map" + default = {} +} + +variable "concurrent_queries_extra_tags" { + description = "Extra tags for GCP Big Query Concurrent Queries monitor" + type = "list" + default = [] +} + +# +# Execution Time +# +variable "execution_time_enabled" { + description = "Whether or not to create the monitor" + type = "string" + default = "true" +} + +variable "execution_time_message" { + description = "Custom message for the Execution Time monitor" + type = "string" + default = "" +} + +variable "execution_time_timeframe" { + description = "Timeframe for the Execution Time monitor" + type = "string" + default = "last_5m" +} + +variable "execution_time_threshold_warning" { + description = "Average Execution Time in seconds (warning threshold)" + type = "string" + default = 100 +} + +variable "execution_time_threshold_critical" { + description = "Average Execution Time in seconds (critical threshold)" + type = "string" + default = 150 +} + +variable "execution_time_silenced" { + description = "Groups to mute for GCP Big Query Execution Time monitor. Muted by default." + type = "map" + + default = { + "*" = 0 + } +} + +variable "execution_time_extra_tags" { + description = "Extra tags for GCP Big Query Execution Time monitor" + type = "list" + default = [] +} + +# +# Scanned Bytes +# +variable "scanned_bytes_enabled" { + description = "Whether or not to create the monitor" + type = "string" + default = "true" +} + +variable "scanned_bytes_message" { + description = "Custom message for the Scanned Bytes monitor" + type = "string" + default = "" +} + +variable "scanned_bytes_timeframe" { + description = "Timeframe for the Scanned Bytes monitor" + type = "string" + default = "last_4h" +} + +variable "scanned_bytes_threshold_warning" { + description = "Scanned Bytes Bytes (warning threshold)" + type = "string" + default = 0 +} + +variable "scanned_bytes_threshold_critical" { + description = "Scanned Bytes Bytes (critical threshold)" + type = "string" + default = 1 +} + +variable "scanned_bytes_silenced" { + description = "Groups to mute for GCP Big Query Scanned Bytes monitor. Muted by default." + type = "map" + + default = { + "*" = 0 + } +} + +variable "scanned_bytes_extra_tags" { + description = "Extra tags for GCP Big Query Scanned Bytes monitor" + type = "list" + default = [] +} + +# +# Scanned Bytes Billed +# +variable "scanned_bytes_billed_enabled" { + description = "Whether or not to create the monitor" + type = "string" + default = "true" +} + +variable "scanned_bytes_billed_message" { + description = "Custom message for the Scanned Bytes Billed monitor" + type = "string" + default = "" +} + +variable "scanned_bytes_billed_timeframe" { + description = "Timeframe for the Scanned Bytes Billed monitor" + type = "string" + default = "last_4h" +} + +variable "scanned_bytes_billed_threshold_warning" { + description = "Scanned Bytes Billed Bytes (warning threshold)" + type = "string" + default = 0 +} + +variable "scanned_bytes_billed_threshold_critical" { + description = "Scanned Bytes Billed Bytes (critical threshold)" + type = "string" + default = 1 +} + +variable "scanned_bytes_billed_silenced" { + description = "Groups to mute for GCP Big Query Scanned Bytes Billed monitor. Muted by default." + type = "map" + + default = { + "*" = 0 + } +} + +variable "scanned_bytes_billed_extra_tags" { + description = "Extra tags for GCP Big Query Scanned Bytes Billed monitor" + type = "list" + default = [] +} + +# +# Available Slots +# +variable "available_slots_enabled" { + description = "Whether or not to create the monitor" + type = "string" + default = "true" +} + +variable "available_slots_message" { + description = "Custom message for the Available Slots monitor" + type = "string" + default = "" +} + +variable "available_slots_timeframe" { + description = "Timeframe for the Available Slots monitor" + type = "string" + default = "last_5m" +} + +variable "available_slots_threshold_warning" { + description = "Available Slots (warning threshold)" + type = "string" + default = 300 +} + +variable "available_slots_threshold_critical" { + description = "Available Slots (critical threshold)" + type = "string" + default = 200 +} + +variable "available_slots_silenced" { + description = "Groups to mute for GCP Big Query Available Slots monitor." + type = "map" + default = {} +} + +variable "available_slots_extra_tags" { + description = "Extra tags for GCP Big Query Available Slots monitor" + type = "list" + default = [] +} + +# +# Stored Bytes +# +variable "stored_bytes_enabled" { + description = "Whether or not to create the monitor" + type = "string" + default = "true" +} + +variable "stored_bytes_message" { + description = "Custom message for the Stored Bytes monitor" + type = "string" + default = "" +} + +variable "stored_bytes_timeframe" { + description = "Timeframe for the Stored Bytes monitor" + type = "string" + default = "last_5m" +} + +variable "stored_bytes_threshold_warning" { + description = "Stored Bytes in fraction (warning threshold)" + type = "string" + default = 0 +} + +variable "stored_bytes_threshold_critical" { + description = "Stored Bytes in fraction (critical threshold)" + type = "string" + default = 1 +} + +variable "stored_bytes_silenced" { + description = "Groups to mute for GCP Big Query Stored Bytes monitor. Muted by default." + type = "map" + + default = { + "*" = 0 + } +} + +variable "stored_bytes_extra_tags" { + description = "Extra tags for GCP Big Query Stored Bytes monitor" + type = "list" + default = [] +} + +# +# Table Count +# +variable "table_count_enabled" { + description = "Whether or not to create the monitor" + type = "string" + default = "true" +} + +variable "table_count_message" { + description = "Custom message for the Table Count monitor" + type = "string" + default = "" +} + +variable "table_count_timeframe" { + description = "Timeframe for the Table Count monitor" + type = "string" + default = "last_4h" +} + +variable "table_count_threshold_warning" { + description = "Table Count (warning threshold)" + type = "string" + default = 0 +} + +variable "table_count_threshold_critical" { + description = "Table Count (critical threshold)" + type = "string" + default = 1 +} + +variable "table_count_silenced" { + description = "Groups to mute for GCP Big Query Table Count monitor. Muted by default." + type = "map" + + default = { + "*" = 0 + } +} + +variable "table_count_extra_tags" { + description = "Extra tags for GCP Big Query Table Count monitor" + type = "list" + default = [] +} + +# +# Uploaded Bytes +# +variable "uploaded_bytes_enabled" { + description = "Whether or not to create the monitor" + type = "string" + default = "true" +} + +variable "uploaded_bytes_message" { + description = "Custom message for the Uploaded Bytes monitor" + type = "string" + default = "" +} + +variable "uploaded_bytes_timeframe" { + description = "Timeframe for the Uploaded Bytes monitor" + type = "string" + default = "last_4h" +} + +variable "uploaded_bytes_threshold_warning" { + description = "Uploaded Bytes in Bytes (warning threshold)" + type = "string" + default = 0 +} + +variable "uploaded_bytes_threshold_critical" { + description = "Uploaded Bytes in Bytes (critical threshold)" + type = "string" + default = 1 +} + +variable "uploaded_bytes_silenced" { + description = "Groups to mute for GCP Big Query Uploaded Bytes monitor. Muted by default." + type = "map" + + default = { + "*" = 0 + } +} + +variable "uploaded_bytes_extra_tags" { + description = "Extra tags for GCP Big Query Uploaded Bytes monitor" + type = "list" + default = [] +} + +# +# Uploaded Bytes Billed +# +variable "uploaded_bytes_billed_enabled" { + description = "Whether or not to create the monitor" + type = "string" + default = "true" +} + +variable "uploaded_bytes_billed_message" { + description = "Custom message for the Uploaded Bytes Billed monitor" + type = "string" + default = "" +} + +variable "uploaded_bytes_billed_timeframe" { + description = "Timeframe for the Uploaded Bytes Billed monitor" + type = "string" + default = "last_4h" +} + +variable "uploaded_bytes_billed_threshold_warning" { + description = "Uploaded Bytes Billed in Bytes (warning threshold)" + type = "string" + default = 0 +} + +variable "uploaded_bytes_billed_threshold_critical" { + description = "Uploaded Bytes Billed in Bytes (critical threshold)" + type = "string" + default = 1 +} + +variable "uploaded_bytes_billed_silenced" { + description = "Groups to mute for GCP Big Query Uploaded Bytes Billed monitor. Muted by default." + type = "map" + + default = { + "*" = 0 + } +} + +variable "uploaded_bytes_billed_extra_tags" { + description = "Extra tags for GCP Big Query Scanned Bytes monitor" + type = "list" + default = [] +} diff --git a/cloud/gcp/big-query/monitors-big-query.tf b/cloud/gcp/big-query/monitors-big-query.tf index a04a935..0a87403 100644 --- a/cloud/gcp/big-query/monitors-big-query.tf +++ b/cloud/gcp/big-query/monitors-big-query.tf @@ -10,3 +10,403 @@ data "template_file" "filter" { "${var.filter_tags_custom}"}" } } + +# +# Concurrent queries +# +resource "datadog_monitor" "concurrent_queries" { + count = "${var.concurrent_queries_enabled == "true" ? 1 : 0}" + + name = "[${var.environment}] GCP Big Query Concurrent Queries close to the limit {{#is_alert}}{{{comparator}}} {{threshold}}% ({{value}}%){{/is_alert}}{{#is_warning}}{{{comparator}}} {{warn_threshold}}% ({{value}}%){{/is_warning}}" + message = "${coalesce(var.concurrent_queries_message, var.message)}" + + type = "metric alert" + + query = < ${var.concurrent_queries_threshold_critical} +EOF + + thresholds { + warning = "${var.concurrent_queries_threshold_warning}" + critical = "${var.concurrent_queries_threshold_critical}" + } + + include_tags = true + notify_no_data = false + require_full_window = false + renotify_interval = 0 + notify_audit = false + timeout_h = 0 + locked = false + + evaluation_delay = "${var.delay}" + new_host_delay = "${var.delay}" + + silenced = "${var.concurrent_queries_silenced}" + + tags = [ + "team:gcp", + "provider:gcp", + "env:${var.environment}", + "resource:big-query", + "created_by:terraform", + "${var.concurrent_queries_extra_tags}", + ] +} + +# +# Execution Time +# +resource "datadog_monitor" "execution_time" { + count = "${var.execution_time_enabled == "true" ? 1 : 0}" + + name = "[${var.environment}] GCP Big Query Execution Time too high {{#is_alert}}{{{comparator}}} {{threshold}}% ({{value}}%){{/is_alert}}{{#is_warning}}{{{comparator}}} {{warn_threshold}}% ({{value}}%){{/is_warning}}" + message = "${coalesce(var.execution_time_message, var.message)}" + + type = "metric alert" + + query = < ${var.execution_time_threshold_critical} +EOF + + thresholds { + warning = "${var.execution_time_threshold_warning}" + critical = "${var.execution_time_threshold_critical}" + } + + include_tags = true + notify_no_data = false + require_full_window = false + renotify_interval = 0 + notify_audit = false + timeout_h = 0 + locked = false + + evaluation_delay = "${var.delay}" + new_host_delay = "${var.delay}" + + silenced = "${var.execution_time_silenced}" + + tags = [ + "team:gcp", + "provider:gcp", + "env:${var.environment}", + "resource:big-query", + "created_by:terraform", + "${var.execution_time_extra_tags}", + ] +} + +# +# Scanned Bytes +# +resource "datadog_monitor" "scanned_bytes" { + count = "${var.scanned_bytes_enabled == "true" ? 1 : 0}" + + name = "[${var.environment}] GCP Big Query Scanned Bytes too high {{#is_alert}}{{{comparator}}} {{threshold}}% ({{value}}%){{/is_alert}}{{#is_warning}}{{{comparator}}} {{warn_threshold}}% ({{value}}%){{/is_warning}}" + message = "${coalesce(var.scanned_bytes_message, var.message)}" + + type = "metric alert" + + query = < ${var.scanned_bytes_threshold_critical} +EOF + + thresholds { + warning = "${var.scanned_bytes_threshold_warning}" + critical = "${var.scanned_bytes_threshold_critical}" + } + + include_tags = true + notify_no_data = false + require_full_window = false + renotify_interval = 0 + notify_audit = false + timeout_h = 0 + locked = false + + evaluation_delay = "${var.delay}" + new_host_delay = "${var.delay}" + + silenced = "${var.scanned_bytes_silenced}" + + tags = [ + "team:gcp", + "provider:gcp", + "env:${var.environment}", + "resource:big-query", + "created_by:terraform", + "${var.scanned_bytes_extra_tags}", + ] +} + +# +# Scanned Bytes Billed +# +resource "datadog_monitor" "scanned_bytes_billed" { + count = "${var.scanned_bytes_billed_enabled == "true" ? 1 : 0}" + + name = "[${var.environment}] GCP Big Query Scanned Bytes Billed too high {{#is_alert}}{{{comparator}}} {{threshold}}% ({{value}}%){{/is_alert}}{{#is_warning}}{{{comparator}}} {{warn_threshold}}% ({{value}}%){{/is_warning}}" + message = "${coalesce(var.scanned_bytes_billed_message, var.message)}" + + type = "metric alert" + + query = < ${var.scanned_bytes_billed_threshold_critical} +EOF + + thresholds { + warning = "${var.scanned_bytes_billed_threshold_warning}" + critical = "${var.scanned_bytes_billed_threshold_critical}" + } + + include_tags = true + notify_no_data = false + require_full_window = false + renotify_interval = 0 + notify_audit = false + timeout_h = 0 + locked = false + + evaluation_delay = "${var.delay}" + new_host_delay = "${var.delay}" + + silenced = "${var.scanned_bytes_billed_silenced}" + + tags = [ + "team:gcp", + "provider:gcp", + "env:${var.environment}", + "resource:big-query", + "created_by:terraform", + "${var.scanned_bytes_billed_extra_tags}", + ] +} + +# +# Available Slots +# +resource "datadog_monitor" "available_slots" { + count = "${var.available_slots_enabled == "true" ? 1 : 0}" + + name = "[${var.environment}] GCP Big Query Available Slots close to the limit {{#is_alert}}{{{comparator}}} {{threshold}}% ({{value}}%){{/is_alert}}{{#is_warning}}{{{comparator}}} {{warn_threshold}}% ({{value}}%){{/is_warning}}" + message = "${coalesce(var.available_slots_message, var.message)}" + + type = "metric alert" + + query = < ${var.stored_bytes_threshold_critical} +EOF + + thresholds { + warning = "${var.stored_bytes_threshold_warning}" + critical = "${var.stored_bytes_threshold_critical}" + } + + include_tags = true + notify_no_data = false + require_full_window = false + renotify_interval = 0 + notify_audit = false + timeout_h = 0 + locked = false + + evaluation_delay = "${var.delay}" + new_host_delay = "${var.delay}" + + silenced = "${var.stored_bytes_silenced}" + + tags = [ + "team:gcp", + "provider:gcp", + "env:${var.environment}", + "resource:big-query", + "created_by:terraform", + "${var.stored_bytes_extra_tags}", + ] +} + +# +# Table Count +# +resource "datadog_monitor" "table_count" { + count = "${var.table_count_enabled == "true" ? 1 : 0}" + + name = "[${var.environment}] GCP Big Query Table Count too high {{#is_alert}}{{{comparator}}} {{threshold}}% ({{value}}%){{/is_alert}}{{#is_warning}}{{{comparator}}} {{warn_threshold}}% ({{value}}%){{/is_warning}}" + message = "${coalesce(var.table_count_message, var.message)}" + + type = "metric alert" + + query = < ${var.table_count_threshold_critical} +EOF + + thresholds { + warning = "${var.table_count_threshold_warning}" + critical = "${var.table_count_threshold_critical}" + } + + include_tags = true + notify_no_data = false + require_full_window = false + renotify_interval = 0 + notify_audit = false + timeout_h = 0 + locked = false + + evaluation_delay = "${var.delay}" + new_host_delay = "${var.delay}" + + silenced = "${var.table_count_silenced}" + + tags = [ + "team:gcp", + "provider:gcp", + "env:${var.environment}", + "resource:big-query", + "created_by:terraform", + "${var.table_count_extra_tags}", + ] +} + +# +# Uploaded Bytes +# +resource "datadog_monitor" "uploaded_bytes" { + count = "${var.uploaded_bytes_enabled == "true" ? 1 : 0}" + + name = "[${var.environment}] GCP Big Query Uploaded Bytes too high {{#is_alert}}{{{comparator}}} {{threshold}}% ({{value}}%){{/is_alert}}{{#is_warning}}{{{comparator}}} {{warn_threshold}}% ({{value}}%){{/is_warning}}" + message = "${coalesce(var.uploaded_bytes_message, var.message)}" + + type = "metric alert" + + query = < ${var.uploaded_bytes_threshold_critical} +EOF + + thresholds { + warning = "${var.uploaded_bytes_threshold_warning}" + critical = "${var.uploaded_bytes_threshold_critical}" + } + + include_tags = true + notify_no_data = false + require_full_window = false + renotify_interval = 0 + notify_audit = false + timeout_h = 0 + locked = false + + evaluation_delay = "${var.delay}" + new_host_delay = "${var.delay}" + + silenced = "${var.uploaded_bytes_silenced}" + + tags = [ + "team:gcp", + "provider:gcp", + "env:${var.environment}", + "resource:big-query", + "created_by:terraform", + "${var.uploaded_bytes_extra_tags}", + ] +} + +# +# Uploaded Bytes Billed +# +resource "datadog_monitor" "uploaded_bytes_billed" { + count = "${var.uploaded_bytes_billed_enabled == "true" ? 1 : 0}" + + name = "[${var.environment}] GCP Big Query Uploaded Bytes Billed too high {{#is_alert}}{{{comparator}}} {{threshold}}% ({{value}}%){{/is_alert}}{{#is_warning}}{{{comparator}}} {{warn_threshold}}% ({{value}}%){{/is_warning}}" + message = "${coalesce(var.uploaded_bytes_billed_message, var.message)}" + + type = "metric alert" + + query = < ${var.uploaded_bytes_billed_threshold_critical} +EOF + + thresholds { + warning = "${var.uploaded_bytes_billed_threshold_warning}" + critical = "${var.uploaded_bytes_billed_threshold_critical}" + } + + include_tags = true + notify_no_data = false + require_full_window = false + renotify_interval = 0 + notify_audit = false + timeout_h = 0 + locked = false + + evaluation_delay = "${var.delay}" + new_host_delay = "${var.delay}" + + silenced = "${var.uploaded_bytes_billed_silenced}" + + tags = [ + "team:gcp", + "provider:gcp", + "env:${var.environment}", + "resource:big-query", + "created_by:terraform", + "${var.uploaded_bytes_billed_extra_tags}", + ] +} diff --git a/cloud/gcp/big-query/outputs.tf b/cloud/gcp/big-query/outputs.tf new file mode 100644 index 0000000..be9de5f --- /dev/null +++ b/cloud/gcp/big-query/outputs.tf @@ -0,0 +1,44 @@ +output "concurrent_queries_id" { + description = "id for monitor concurrent_queries" + value = "${datadog_monitor.concurrent_queries.*.id}" +} + +output "execution_time_id" { + description = "id for monitor execution_time" + value = "${datadog_monitor.execution_time.*.id}" +} + +output "scanned_bytes_id" { + description = "id for monitor scanned_bytes" + value = "${datadog_monitor.scanned_bytes.*.id}" +} + +output "scanned_bytes_billed_id" { + description = "id for monitor scanned_bytes_billed" + value = "${datadog_monitor.scanned_bytes_billed.*.id}" +} + +output "available_slots_id" { + description = "id for monitor available_slots" + value = "${datadog_monitor.available_slots.*.id}" +} + +output "stored_bytes_id" { + description = "id for monitor stored_bytes" + value = "${datadog_monitor.stored_bytes.*.id}" +} + +output "table_count_id" { + description = "id for monitor table_count" + value = "${datadog_monitor.table_count.*.id}" +} + +output "uploaded_bytes_id" { + description = "id for monitor uploaded_bytes" + value = "${datadog_monitor.uploaded_bytes.*.id}" +} + +output "uploaded_bytes_billed_id" { + description = "id for monitor uploaded_bytes_billed" + value = "${datadog_monitor.uploaded_bytes_billed.*.id}" +} diff --git a/cloud/gcp/big-query/query.tf b/cloud/gcp/big-query/query.tf deleted file mode 100644 index ea218c6..0000000 --- a/cloud/gcp/big-query/query.tf +++ /dev/null @@ -1,152 +0,0 @@ -# -# Concurrent queries -# -variable "concurrent_queries_message" { - description = "Custom message for the Concurrent Queries monitor" - type = "string" - default = "" -} - -variable "concurrent_queries_timeframe" { - description = "Timeframe for the Concurrent Queries monitor" - type = "string" - default = "last_5m" -} - -variable "concurrent_queries_threshold_warning" { - description = "Concurrent Queries (warning threshold) (hard limit 50)" - type = "string" - default = 40 -} - -variable "concurrent_queries_threshold_critical" { - description = "Concurrent Queries (critical threshold) (hard limit 50)" - type = "string" - default = 45 -} - -variable "concurrent_queries_silenced" { - description = "Groups to mute for GCP Big Query Concurrent Queries monitor" - type = "map" - default = {} -} - -variable "concurrent_queries_extra_tags" { - description = "Extra tags for GCP Big Query Concurrent Queries monitor" - type = "list" - default = [] -} - -resource "datadog_monitor" "concurrent_queries" { - name = "[${var.environment}] GCP Big Query Concurrent Queries close to the limit {{#is_alert}}{{{comparator}}} {{threshold}}% ({{value}}%){{/is_alert}}{{#is_warning}}{{{comparator}}} {{warn_threshold}}% ({{value}}%){{/is_warning}}" - message = "${coalesce(var.concurrent_queries_message, var.message)}" - - type = "metric alert" - - query = < ${var.concurrent_queries_threshold_critical} -EOF - - thresholds { - warning = "${var.concurrent_queries_threshold_warning}" - critical = "${var.concurrent_queries_threshold_critical}" - } - - include_tags = true - notify_no_data = false - require_full_window = false - renotify_interval = 0 - notify_audit = false - timeout_h = 0 - locked = false - evaluation_delay = "${var.delay}" - new_host_delay = "${var.delay}" - silenced = "${var.concurrent_queries_silenced}" - - tags = [ - "team:gcp", - "provider:gcp", - "env:${var.environment}", - "resource:big-query", - "${var.concurrent_queries_extra_tags}", - ] -} - -# -# Execution Time -# -variable "execution_time_message" { - description = "Custom message for the Execution Time monitor" - type = "string" - default = "" -} - -variable "execution_time_timeframe" { - description = "Timeframe for the Execution Time monitor" - type = "string" - default = "last_5m" -} - -variable "execution_time_threshold_warning" { - description = "Average Execution Time in seconds (warning threshold)" - type = "string" - default = 100 -} - -variable "execution_time_threshold_critical" { - description = "Average Execution Time in seconds (critical threshold)" - type = "string" - default = 150 -} - -variable "execution_time_silenced" { - description = "Groups to mute for GCP Big Query Execution Time monitor. Muted by default." - type = "map" - - default = { - "*" = 0 - } -} - -variable "execution_time_extra_tags" { - description = "Extra tags for GCP Big Query Execution Time monitor" - type = "list" - default = [] -} - -resource "datadog_monitor" "execution_time" { - name = "[${var.environment}] GCP Big Query Execution Time too high {{#is_alert}}{{{comparator}}} {{threshold}}% ({{value}}%){{/is_alert}}{{#is_warning}}{{{comparator}}} {{warn_threshold}}% ({{value}}%){{/is_warning}}" - message = "${coalesce(var.execution_time_message, var.message)}" - - type = "metric alert" - - query = < ${var.execution_time_threshold_critical} -EOF - - thresholds { - warning = "${var.execution_time_threshold_warning}" - critical = "${var.execution_time_threshold_critical}" - } - - include_tags = true - notify_no_data = false - require_full_window = false - renotify_interval = 0 - notify_audit = false - timeout_h = 0 - locked = false - evaluation_delay = "${var.delay}" - new_host_delay = "${var.delay}" - silenced = "${var.execution_time_silenced}" - - tags = [ - "team:gcp", - "provider:gcp", - "env:${var.environment}", - "resource:big-query", - "${var.execution_time_extra_tags}", - ] -} diff --git a/cloud/gcp/big-query/scanned_bytes.tf b/cloud/gcp/big-query/scanned_bytes.tf deleted file mode 100644 index 00e284e..0000000 --- a/cloud/gcp/big-query/scanned_bytes.tf +++ /dev/null @@ -1,77 +0,0 @@ -# -# Scanned Bytes -# -variable "scanned_bytes_message" { - description = "Custom message for the Scanned Bytes monitor" - type = "string" - default = "" -} - -variable "scanned_bytes_timeframe" { - description = "Timeframe for the Scanned Bytes monitor" - type = "string" - default = "last_4h" -} - -variable "scanned_bytes_threshold_warning" { - description = "Scanned Bytes Bytes (warning threshold)" - type = "string" - default = 0 -} - -variable "scanned_bytes_threshold_critical" { - description = "Scanned Bytes Bytes (critical threshold)" - type = "string" - default = 1 -} - -variable "scanned_bytes_silenced" { - description = "Groups to mute for GCP Big Query Scanned Bytes monitor. Muted by default." - type = "map" - - default = { - "*" = 0 - } -} - -variable "scanned_bytes_extra_tags" { - description = "Extra tags for GCP Big Query Scanned Bytes monitor" - type = "list" - default = [] -} - -resource "datadog_monitor" "scanned_bytes" { - name = "[${var.environment}] GCP Big Query Scanned Bytes too high {{#is_alert}}{{{comparator}}} {{threshold}}% ({{value}}%){{/is_alert}}{{#is_warning}}{{{comparator}}} {{warn_threshold}}% ({{value}}%){{/is_warning}}" - message = "${coalesce(var.scanned_bytes_message, var.message)}" - - type = "metric alert" - - query = < ${var.scanned_bytes_threshold_critical} -EOF - - thresholds { - warning = "${var.scanned_bytes_threshold_warning}" - critical = "${var.scanned_bytes_threshold_critical}" - } - - include_tags = true - notify_no_data = false - require_full_window = false - renotify_interval = 0 - notify_audit = false - timeout_h = 0 - locked = false - evaluation_delay = "${var.delay}" - new_host_delay = "${var.delay}" - silenced = "${var.scanned_bytes_silenced}" - - tags = [ - "team:gcp", - "provider:gcp", - "env:${var.environment}", - "resource:big-query", - "${var.scanned_bytes_extra_tags}", - ] -} diff --git a/cloud/gcp/big-query/scanned_bytes_billed.tf b/cloud/gcp/big-query/scanned_bytes_billed.tf deleted file mode 100644 index 749999d..0000000 --- a/cloud/gcp/big-query/scanned_bytes_billed.tf +++ /dev/null @@ -1,77 +0,0 @@ -# -# Scanned Bytes Billed -# -variable "scanned_bytes_billed_message" { - description = "Custom message for the Scanned Bytes Billed monitor" - type = "string" - default = "" -} - -variable "scanned_bytes_billed_timeframe" { - description = "Timeframe for the Scanned Bytes Billed monitor" - type = "string" - default = "last_4h" -} - -variable "scanned_bytes_billed_threshold_warning" { - description = "Scanned Bytes Billed Bytes (warning threshold)" - type = "string" - default = 0 -} - -variable "scanned_bytes_billed_threshold_critical" { - description = "Scanned Bytes Billed Bytes (critical threshold)" - type = "string" - default = 1 -} - -variable "scanned_bytes_billed_silenced" { - description = "Groups to mute for GCP Big Query Scanned Bytes Billed monitor. Muted by default." - type = "map" - - default = { - "*" = 0 - } -} - -variable "scanned_bytes_billed_extra_tags" { - description = "Extra tags for GCP Big Query Scanned Bytes Billed monitor" - type = "list" - default = [] -} - -resource "datadog_monitor" "scanned_bytes_billed" { - name = "[${var.environment}] GCP Big Query Scanned Bytes Billed too high {{#is_alert}}{{{comparator}}} {{threshold}}% ({{value}}%){{/is_alert}}{{#is_warning}}{{{comparator}}} {{warn_threshold}}% ({{value}}%){{/is_warning}}" - message = "${coalesce(var.scanned_bytes_billed_message, var.message)}" - - type = "metric alert" - - query = < ${var.scanned_bytes_billed_threshold_critical} -EOF - - thresholds { - warning = "${var.scanned_bytes_billed_threshold_warning}" - critical = "${var.scanned_bytes_billed_threshold_critical}" - } - - include_tags = true - notify_no_data = false - require_full_window = false - renotify_interval = 0 - notify_audit = false - timeout_h = 0 - locked = false - evaluation_delay = "${var.delay}" - new_host_delay = "${var.delay}" - silenced = "${var.scanned_bytes_billed_silenced}" - - tags = [ - "team:gcp", - "provider:gcp", - "env:${var.environment}", - "resource:big-query", - "${var.scanned_bytes_billed_extra_tags}", - ] -} diff --git a/cloud/gcp/big-query/slots.tf b/cloud/gcp/big-query/slots.tf deleted file mode 100644 index 0a8c22d..0000000 --- a/cloud/gcp/big-query/slots.tf +++ /dev/null @@ -1,74 +0,0 @@ -# -# Available Slots -# -variable "available_slots_message" { - description = "Custom message for the Available Slots monitor" - type = "string" - default = "" -} - -variable "available_slots_timeframe" { - description = "Timeframe for the Available Slots monitor" - type = "string" - default = "last_5m" -} - -variable "available_slots_threshold_warning" { - description = "Available Slots (warning threshold)" - type = "string" - default = 300 -} - -variable "available_slots_threshold_critical" { - description = "Available Slots (critical threshold)" - type = "string" - default = 200 -} - -variable "available_slots_silenced" { - description = "Groups to mute for GCP Big Query Available Slots monitor." - type = "map" - default = {} -} - -variable "available_slots_extra_tags" { - description = "Extra tags for GCP Big Query Available Slots monitor" - type = "list" - default = [] -} - -resource "datadog_monitor" "available_slots" { - name = "[${var.environment}] GCP Big Query Available Slots close to the limit {{#is_alert}}{{{comparator}}} {{threshold}}% ({{value}}%){{/is_alert}}{{#is_warning}}{{{comparator}}} {{warn_threshold}}% ({{value}}%){{/is_warning}}" - message = "${coalesce(var.available_slots_message, var.message)}" - - type = "metric alert" - - query = < ${var.stored_bytes_threshold_critical} -EOF - - thresholds { - warning = "${var.stored_bytes_threshold_warning}" - critical = "${var.stored_bytes_threshold_critical}" - } - - include_tags = true - notify_no_data = false - require_full_window = false - renotify_interval = 0 - notify_audit = false - timeout_h = 0 - locked = false - evaluation_delay = "${var.delay}" - new_host_delay = "${var.delay}" - silenced = "${var.stored_bytes_silenced}" - - tags = [ - "team:gcp", - "provider:gcp", - "env:${var.environment}", - "resource:big-query", - "${var.stored_bytes_extra_tags}", - ] -} diff --git a/cloud/gcp/big-query/table_count.tf b/cloud/gcp/big-query/table_count.tf deleted file mode 100644 index 4b8f7a3..0000000 --- a/cloud/gcp/big-query/table_count.tf +++ /dev/null @@ -1,78 +0,0 @@ -# -# Table Count -# -variable "table_count_message" { - description = "Custom message for the Table Count monitor" - type = "string" - default = "" -} - -variable "table_count_timeframe" { - description = "Timeframe for the Table Count monitor" - type = "string" - default = "last_4h" -} - -variable "table_count_threshold_warning" { - description = "Table Count (warning threshold)" - type = "string" - default = 0 -} - -variable "table_count_threshold_critical" { - description = "Table Count (critical threshold)" - type = "string" - default = 1 -} - -variable "table_count_silenced" { - description = "Groups to mute for GCP Big Query Table Count monitor. Muted by default." - type = "map" - - default = { - "*" = 0 - } -} - -variable "table_count_extra_tags" { - description = "Extra tags for GCP Big Query Table Count monitor" - type = "list" - default = [] -} - -resource "datadog_monitor" "table_count" { - name = "[${var.environment}] GCP Big Query Table Count too high {{#is_alert}}{{{comparator}}} {{threshold}}% ({{value}}%){{/is_alert}}{{#is_warning}}{{{comparator}}} {{warn_threshold}}% ({{value}}%){{/is_warning}}" - message = "${coalesce(var.table_count_message, var.message)}" - - type = "metric alert" - - query = < ${var.table_count_threshold_critical} -EOF - - thresholds { - warning = "${var.table_count_threshold_warning}" - critical = "${var.table_count_threshold_critical}" - } - - include_tags = true - notify_no_data = false - require_full_window = false - renotify_interval = 0 - notify_audit = false - timeout_h = 0 - locked = false - evaluation_delay = "${var.delay}" - new_host_delay = "${var.delay}" - silenced = "${var.table_count_silenced}" - - tags = [ - "team:gcp", - "provider:gcp", - "env:${var.environment}", - "resource:big-query", - "${var.table_count_extra_tags}", - ] -} diff --git a/cloud/gcp/big-query/uploaded_bytes.tf b/cloud/gcp/big-query/uploaded_bytes.tf deleted file mode 100644 index bc48ff4..0000000 --- a/cloud/gcp/big-query/uploaded_bytes.tf +++ /dev/null @@ -1,78 +0,0 @@ -# -# Uploaded Bytes -# -variable "uploaded_bytes_message" { - description = "Custom message for the Uploaded Bytes monitor" - type = "string" - default = "" -} - -variable "uploaded_bytes_timeframe" { - description = "Timeframe for the Uploaded Bytes monitor" - type = "string" - default = "last_4h" -} - -variable "uploaded_bytes_threshold_warning" { - description = "Uploaded Bytes in Bytes (warning threshold)" - type = "string" - default = 0 -} - -variable "uploaded_bytes_threshold_critical" { - description = "Uploaded Bytes in Bytes (critical threshold)" - type = "string" - default = 1 -} - -variable "uploaded_bytes_silenced" { - description = "Groups to mute for GCP Big Query Uploaded Bytes monitor. Muted by default." - type = "map" - - default = { - "*" = 0 - } -} - -variable "uploaded_bytes_extra_tags" { - description = "Extra tags for GCP Big Query Uploaded Bytes monitor" - type = "list" - default = [] -} - -resource "datadog_monitor" "uploaded_bytes" { - name = "[${var.environment}] GCP Big Query Uploaded Bytes too high {{#is_alert}}{{{comparator}}} {{threshold}}% ({{value}}%){{/is_alert}}{{#is_warning}}{{{comparator}}} {{warn_threshold}}% ({{value}}%){{/is_warning}}" - message = "${coalesce(var.uploaded_bytes_message, var.message)}" - - type = "metric alert" - - query = < ${var.uploaded_bytes_threshold_critical} -EOF - - thresholds { - warning = "${var.uploaded_bytes_threshold_warning}" - critical = "${var.uploaded_bytes_threshold_critical}" - } - - include_tags = true - notify_no_data = false - require_full_window = false - renotify_interval = 0 - notify_audit = false - timeout_h = 0 - locked = false - evaluation_delay = "${var.delay}" - new_host_delay = "${var.delay}" - silenced = "${var.uploaded_bytes_silenced}" - - tags = [ - "team:gcp", - "provider:gcp", - "env:${var.environment}", - "resource:big-query", - "${var.uploaded_bytes_extra_tags}", - ] -} diff --git a/cloud/gcp/big-query/uploaded_bytes_billed.tf b/cloud/gcp/big-query/uploaded_bytes_billed.tf deleted file mode 100644 index c28e14e..0000000 --- a/cloud/gcp/big-query/uploaded_bytes_billed.tf +++ /dev/null @@ -1,78 +0,0 @@ -# -# Uploaded Bytes Billed -# -variable "uploaded_bytes_billed_message" { - description = "Custom message for the Uploaded Bytes Billed monitor" - type = "string" - default = "" -} - -variable "uploaded_bytes_billed_timeframe" { - description = "Timeframe for the Uploaded Bytes Billed monitor" - type = "string" - default = "last_4h" -} - -variable "uploaded_bytes_billed_threshold_warning" { - description = "Uploaded Bytes Billed in Bytes (warning threshold)" - type = "string" - default = 0 -} - -variable "uploaded_bytes_billed_threshold_critical" { - description = "Uploaded Bytes Billed in Bytes (critical threshold)" - type = "string" - default = 1 -} - -variable "uploaded_bytes_billed_silenced" { - description = "Groups to mute for GCP Big Query Uploaded Bytes Billed monitor. Muted by default." - type = "map" - - default = { - "*" = 0 - } -} - -variable "uploaded_bytes_billed_extra_tags" { - description = "Extra tags for GCP Big Query Scanned Bytes monitor" - type = "list" - default = [] -} - -resource "datadog_monitor" "uploaded_bytes_billed" { - name = "[${var.environment}] GCP Big Query Uploaded Bytes Billed too high {{#is_alert}}{{{comparator}}} {{threshold}}% ({{value}}%){{/is_alert}}{{#is_warning}}{{{comparator}}} {{warn_threshold}}% ({{value}}%){{/is_warning}}" - message = "${coalesce(var.uploaded_bytes_billed_message, var.message)}" - - type = "metric alert" - - query = < ${var.uploaded_bytes_billed_threshold_critical} -EOF - - thresholds { - warning = "${var.uploaded_bytes_billed_threshold_warning}" - critical = "${var.uploaded_bytes_billed_threshold_critical}" - } - - include_tags = true - notify_no_data = false - require_full_window = false - renotify_interval = 0 - notify_audit = false - timeout_h = 0 - locked = false - evaluation_delay = "${var.delay}" - new_host_delay = "${var.delay}" - silenced = "${var.uploaded_bytes_billed_silenced}" - - tags = [ - "team:gcp", - "provider:gcp", - "env:${var.environment}", - "resource:big-query", - "${var.uploaded_bytes_billed_extra_tags}", - ] -}