@hiiretail/gcp-infra-cli 0.104.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. package/README.md +9 -46
  2. package/bin/gcp-infra +5 -2
  3. package/package.json +7 -30
  4. package/src/gcp-infra.js +87 -0
  5. package/LICENSE +0 -21
  6. package/generators/clan-resources/clan-project/generator.json +0 -4
  7. package/generators/clan-resources/clan-project/index.js +0 -135
  8. package/generators/clan-resources/clan-project/templates/clan-resources/cloud-nat/terragrunt.hcl +0 -52
  9. package/generators/clan-resources/clan-project/templates/clan-resources/cloud-nat-static-ip/spec.hcl +0 -7
  10. package/generators/clan-resources/clan-project/templates/clan-resources/cloud-nat-static-ip/terragrunt.hcl +0 -25
  11. package/generators/clan-resources/clan-project/templates/clan-resources/cloud-router/terragrunt.hcl +0 -34
  12. package/generators/clan-resources/clan-project/templates/clan-resources/gke/gke-resources/terragrunt.hcl +0 -40
  13. package/generators/clan-resources/clan-project/templates/clan-resources/gke/spec.hcl +0 -18
  14. package/generators/clan-resources/clan-project/templates/clan-resources/gke/terragrunt.hcl +0 -52
  15. package/generators/clan-resources/clan-project/templates/clan-resources/network/firewall-rules/config/main.tf +0 -41
  16. package/generators/clan-resources/clan-project/templates/clan-resources/network/firewall-rules/config/vars.tf +0 -9
  17. package/generators/clan-resources/clan-project/templates/clan-resources/network/firewall-rules/terragrunt.hcl +0 -32
  18. package/generators/clan-resources/clan-project/templates/clan-resources/network/spec.hcl +0 -54
  19. package/generators/clan-resources/clan-project/templates/clan-resources/network/terragrunt.hcl +0 -29
  20. package/generators/clan-resources/clan-project/templates/clan-resources/private-vpc-connection/config/main.tf +0 -18
  21. package/generators/clan-resources/clan-project/templates/clan-resources/private-vpc-connection/config/vars.tf +0 -27
  22. package/generators/clan-resources/clan-project/templates/clan-resources/private-vpc-connection/terragrunt.hcl +0 -35
  23. package/generators/clan-resources/clan-project/templates/clan-resources/serverless-vpc-connector/terragrunt.hcl +0 -40
  24. package/generators/clan-resources/clan-project/templates/clan-resources/terragrunt.hcl +0 -3
  25. package/generators/clan-resources/command.json +0 -7
  26. package/generators/common-resources/bigquery/generator.json +0 -4
  27. package/generators/common-resources/bigquery/index.js +0 -284
  28. package/generators/common-resources/bigquery/templates/bigquery/spec.hcl +0 -8
  29. package/generators/common-resources/bigquery/templates/bigquery/terragrunt.hcl +0 -53
  30. package/generators/common-resources/bigquery/templates/scheduled-queries/terragrunt.hcl +0 -56
  31. package/generators/common-resources/bigquery/templates/schema/schema.json +0 -14
  32. package/generators/common-resources/budget/generator.json +0 -4
  33. package/generators/common-resources/budget/index.js +0 -89
  34. package/generators/common-resources/budget/templates/budget/terragrunt.hcl +0 -45
  35. package/generators/common-resources/cloud-armor/generator.json +0 -4
  36. package/generators/common-resources/cloud-armor/index.js +0 -45
  37. package/generators/common-resources/cloud-armor/templates/policies.yaml +0 -53
  38. package/generators/common-resources/cloud-armor/templates/terragrunt.hcl +0 -30
  39. package/generators/common-resources/cloud-storage/generator.json +0 -4
  40. package/generators/common-resources/cloud-storage/index.js +0 -156
  41. package/generators/common-resources/cloud-storage/templates/cloud-storage/storage.yaml +0 -26
  42. package/generators/common-resources/cloud-storage/templates/cloud-storage/terragrunt.hcl +0 -32
  43. package/generators/common-resources/cloudsql/generator.json +0 -4
  44. package/generators/common-resources/cloudsql/index.js +0 -106
  45. package/generators/common-resources/cloudsql/templates/mssql/instance/spec.hcl +0 -76
  46. package/generators/common-resources/cloudsql/templates/mssql/instance/terragrunt.hcl +0 -38
  47. package/generators/common-resources/cloudsql/templates/mssql/instance-secrets/terragrunt.hcl +0 -37
  48. package/generators/common-resources/cloudsql/templates/mysql/instance/spec.hcl +0 -73
  49. package/generators/common-resources/cloudsql/templates/mysql/instance/terragrunt.hcl +0 -40
  50. package/generators/common-resources/cloudsql/templates/mysql/instance-secrets/terragrunt.hcl +0 -38
  51. package/generators/common-resources/cloudsql/templates/postgres-clan/instance/spec.hcl +0 -102
  52. package/generators/common-resources/cloudsql/templates/postgres-clan/instance/terragrunt.hcl +0 -36
  53. package/generators/common-resources/cloudsql/templates/postgres-clan/instance-secrets/terragrunt.hcl +0 -44
  54. package/generators/common-resources/cloudsql-database/generator.json +0 -4
  55. package/generators/common-resources/cloudsql-database/index.js +0 -70
  56. package/generators/common-resources/cloudsql-database/templates/mysql/database/proxy_port.hcl +0 -4
  57. package/generators/common-resources/cloudsql-database/templates/mysql/database/terragrunt.hcl +0 -69
  58. package/generators/common-resources/cloudsql-database/templates/mysql/outputs.json +0 -5
  59. package/generators/common-resources/cloudsql-database/templates/mysql/secrets/terragrunt.hcl +0 -30
  60. package/generators/common-resources/cloudsql-database/templates/postgres/database/proxy_port.hcl +0 -4
  61. package/generators/common-resources/cloudsql-database/templates/postgres/database/spec.hcl +0 -17
  62. package/generators/common-resources/cloudsql-database/templates/postgres/database/terragrunt.hcl +0 -74
  63. package/generators/common-resources/cloudsql-database/templates/postgres/outputs.json +0 -5
  64. package/generators/common-resources/cloudsql-database/templates/postgres/secrets/terragrunt.hcl +0 -30
  65. package/generators/common-resources/command.json +0 -8
  66. package/generators/common-resources/confluent-cluster/generator.json +0 -4
  67. package/generators/common-resources/confluent-cluster/index.js +0 -52
  68. package/generators/common-resources/confluent-cluster/templates/confluent/spec.hcl +0 -5
  69. package/generators/common-resources/confluent-cluster/templates/confluent/terragrunt.hcl +0 -25
  70. package/generators/common-resources/datastore/generator.json +0 -4
  71. package/generators/common-resources/datastore/index.js +0 -91
  72. package/generators/common-resources/datastore/templates/datastore/indexes.yaml +0 -6
  73. package/generators/common-resources/datastore/templates/datastore/terragrunt.hcl +0 -23
  74. package/generators/common-resources/elastic-cloud/generator.json +0 -4
  75. package/generators/common-resources/elastic-cloud/index.js +0 -52
  76. package/generators/common-resources/elastic-cloud/templates/elastic/spec.hcl +0 -27
  77. package/generators/common-resources/elastic-cloud/templates/elastic/terragrunt.hcl +0 -27
  78. package/generators/common-resources/elastic-index-policy/generator.json +0 -4
  79. package/generators/common-resources/elastic-index-policy/handle-yaml.js +0 -76
  80. package/generators/common-resources/elastic-index-policy/index.js +0 -210
  81. package/generators/common-resources/elastic-index-policy/templates/policy/policy.yaml +0 -28
  82. package/generators/common-resources/elastic-index-policy/templates/policy/terragrunt.hcl +0 -25
  83. package/generators/common-resources/elastic-template/generator.json +0 -4
  84. package/generators/common-resources/elastic-template/index.js +0 -84
  85. package/generators/common-resources/elastic-template/templates/elastic-template/mappings.json +0 -1
  86. package/generators/common-resources/elastic-template/templates/elastic-template/terragrunt.hcl +0 -35
  87. package/generators/common-resources/firestore/generator.json +0 -4
  88. package/generators/common-resources/firestore/index.js +0 -141
  89. package/generators/common-resources/firestore/templates/firestore/indexes/indexes.yaml +0 -12
  90. package/generators/common-resources/firestore/templates/firestore/indexes/terragrunt.hcl +0 -27
  91. package/generators/common-resources/firestore/templates/firestore/spec.hcl +0 -31
  92. package/generators/common-resources/firestore/templates/firestore/terragrunt.hcl +0 -25
  93. package/generators/common-resources/iam/generator.json +0 -4
  94. package/generators/common-resources/iam/index.js +0 -62
  95. package/generators/common-resources/iam/templates/github/workflows/iam.yml +0 -18
  96. package/generators/common-resources/iam/templates/iam.yaml +0 -8
  97. package/generators/common-resources/iam/valid-prefix.js +0 -8
  98. package/generators/common-resources/kafka-connect/generator.json +0 -4
  99. package/generators/common-resources/kafka-connect/index.js +0 -75
  100. package/generators/common-resources/kafka-connect/templates/elastic/terragrunt.hcl +0 -92
  101. package/generators/common-resources/kafka-connect/templates/pubsub/terragrunt.hcl +0 -75
  102. package/generators/common-resources/kafka-topics/generator.json +0 -4
  103. package/generators/common-resources/kafka-topics/index.js +0 -54
  104. package/generators/common-resources/kafka-topics/templates/kafka/kafka.yaml +0 -20
  105. package/generators/common-resources/kafka-topics/templates/kafka/terragrunt.hcl +0 -21
  106. package/generators/common-resources/kms/generator.json +0 -4
  107. package/generators/common-resources/kms/index.js +0 -69
  108. package/generators/common-resources/kms/templates/kms/spec.hcl +0 -5
  109. package/generators/common-resources/kms/templates/kms/terragrunt.hcl +0 -33
  110. package/generators/common-resources/memorystore/generator.json +0 -4
  111. package/generators/common-resources/memorystore/index.js +0 -69
  112. package/generators/common-resources/memorystore/templates/outputs.json +0 -3
  113. package/generators/common-resources/memorystore/templates/redis-instance/spec.hcl +0 -16
  114. package/generators/common-resources/memorystore/templates/redis-instance/terragrunt.hcl +0 -35
  115. package/generators/common-resources/memorystore/templates/secrets/terragrunt.hcl +0 -31
  116. package/generators/common-resources/monitoring/generator.json +0 -4
  117. package/generators/common-resources/monitoring/handle-yaml.js +0 -48
  118. package/generators/common-resources/monitoring/index.js +0 -192
  119. package/generators/common-resources/monitoring/templates/alerts/generic-infra.yaml +0 -633
  120. package/generators/common-resources/monitoring/templates/alerts/terragrunt.hcl +0 -37
  121. package/generators/common-resources/monitoring/templates/service/service.yaml +0 -16
  122. package/generators/common-resources/monitoring/templates/service/terragrunt.hcl +0 -37
  123. package/generators/common-resources/monitoring/templates/uptime-checks/terragrunt.hcl +0 -36
  124. package/generators/common-resources/monitoring/templates/uptime-checks/uptime-checks.yaml +0 -3
  125. package/generators/common-resources/monitoring/validate.js +0 -58
  126. package/generators/common-resources/pubsub/append.js +0 -120
  127. package/generators/common-resources/pubsub/generator.json +0 -4
  128. package/generators/common-resources/pubsub/get-gcp-projects.js +0 -34
  129. package/generators/common-resources/pubsub/handle-subscribers.js +0 -63
  130. package/generators/common-resources/pubsub/index.js +0 -316
  131. package/generators/common-resources/pubsub/templates/pubsub/spec.hcl +0 -7
  132. package/generators/common-resources/pubsub/templates/pubsub/subscribers.yaml +0 -16
  133. package/generators/common-resources/pubsub/templates/pubsub/terragrunt.hcl +0 -34
  134. package/generators/common-resources/pubsub/templates/pubsub-dlq/terragrunt.hcl +0 -42
  135. package/generators/common-resources/pubsub/templates/pubsub-external/spec.hcl +0 -10
  136. package/generators/common-resources/pubsub/templates/pubsub-external/subscribers.yaml +0 -16
  137. package/generators/common-resources/pubsub/templates/pubsub-external/terragrunt.hcl +0 -31
  138. package/generators/common-resources/pubsub/validate.js +0 -44
  139. package/generators/common-resources/scheduler/append.js +0 -83
  140. package/generators/common-resources/scheduler/generator.json +0 -4
  141. package/generators/common-resources/scheduler/index.js +0 -103
  142. package/generators/common-resources/scheduler/templates/scheduler/terragrunt.hcl +0 -44
  143. package/generators/common-resources/spanner/append.js +0 -27
  144. package/generators/common-resources/spanner/generator.json +0 -4
  145. package/generators/common-resources/spanner/index.js +0 -169
  146. package/generators/common-resources/spanner/templates/spanner/databases.yaml +0 -5
  147. package/generators/common-resources/spanner/templates/spanner/spec.hcl +0 -22
  148. package/generators/common-resources/spanner/templates/spanner/terragrunt.hcl +0 -33
  149. package/generators/common-resources/spanner/validate.js +0 -38
  150. package/generators/docs/command.json +0 -7
  151. package/generators/docs/rca/generator.json +0 -4
  152. package/generators/docs/rca/index.js +0 -50
  153. package/generators/docs/rca/templates/docs/rca_external.md +0 -43
  154. package/generators/docs/rca/templates/docs/rca_internal.md +0 -88
  155. package/generators/docs/runbook/generator.json +0 -4
  156. package/generators/docs/runbook/index.js +0 -42
  157. package/generators/docs/runbook/templates/docs/runbook.md +0 -106
  158. package/generators/docs/srb/generator.json +0 -4
  159. package/generators/docs/srb/index.js +0 -62
  160. package/generators/docs/srb/templates/docs/README.md +0 -42
  161. package/generators/docs/srb/templates/docs/adr.cmd +0 -3
  162. package/generators/docs/srb/templates/docs/adr.sh +0 -4
  163. package/generators/docs/srb/templates/docs/architecture.md +0 -68
  164. package/generators/docs/srb/templates/docs/cost-estimates.md +0 -39
  165. package/generators/docs/srb/templates/docs/dsl2png.cmd +0 -3
  166. package/generators/docs/srb/templates/docs/dsl2png.sh +0 -4
  167. package/generators/docs/srb/templates/docs/sre.md +0 -43
  168. package/generators/docs/srb/templates/sample.dsl +0 -36
  169. package/generators/init/clan-infra/gcp-projects.js +0 -36
  170. package/generators/init/clan-infra/generator.json +0 -4
  171. package/generators/init/clan-infra/index.js +0 -170
  172. package/generators/init/clan-infra/templates/.yamllint +0 -17
  173. package/generators/init/clan-infra/templates/env/project.hcl +0 -15
  174. package/generators/init/clan-infra/templates/env/secrets/secrets.yaml +0 -4
  175. package/generators/init/clan-infra/templates/env/secrets/terragrunt.hcl +0 -31
  176. package/generators/init/clan-infra/templates/github/CODEOWNERS +0 -1
  177. package/generators/init/clan-infra/templates/github/workflows/infra-verify.yml +0 -16
  178. package/generators/init/clan-infra/templates/github/workflows/infra.yml +0 -17
  179. package/generators/init/clan-infra/templates/github/workflows/release-notes.yml +0 -33
  180. package/generators/init/clan-infra/templates/github/workflows/sync-docs.yml +0 -29
  181. package/generators/init/clan-infra/templates/infra/.terraform-version +0 -1
  182. package/generators/init/clan-infra/templates/infra/.terragrunt-version +0 -1
  183. package/generators/init/clan-infra/templates/infra/README.md +0 -5
  184. package/generators/init/clan-infra/templates/infra/common.hcl +0 -24
  185. package/generators/init/clan-infra/templates/infra/terragrunt_root.hcl +0 -44
  186. package/generators/init/clan-infra/templates/notification-channels/notification-channels.yaml +0 -7
  187. package/generators/init/clan-infra/templates/notification-channels/terragrunt.hcl +0 -29
  188. package/generators/init/clan-infra/templates/release-notes/example-service.yaml +0 -23
  189. package/generators/init/clan-infra/templates/release-notes-schema/release-notes.schema.json +0 -63
  190. package/generators/init/clan-infra/tribe-clan-repo.js +0 -38
  191. package/generators/init/clan-infra/validate.js +0 -8
  192. package/generators/init/command.json +0 -7
  193. package/generators/maintenance/command.json +0 -7
  194. package/generators/maintenance/manage-states/generator.json +0 -4
  195. package/generators/maintenance/manage-states/index.js +0 -188
  196. package/generators/maintenance/update-modules/generator.json +0 -4
  197. package/generators/maintenance/update-modules/index.js +0 -102
  198. package/generators/organization/clan-project/__tests__/__snapshots__/googlecloud.test.js.snap +0 -27
  199. package/generators/organization/clan-project/generator.json +0 -4
  200. package/generators/organization/clan-project/googlecloud.js +0 -119
  201. package/generators/organization/clan-project/index.js +0 -139
  202. package/generators/organization/clan-project/templates/clan/clan.yaml +0 -22
  203. package/generators/organization/clan-project/templates/clan/terragrunt.hcl +0 -39
  204. package/generators/organization/clan-project/templates/clan-project/project.yaml +0 -14
  205. package/generators/organization/clan-project/templates/clan-project/terragrunt.hcl +0 -51
  206. package/generators/organization/clan-project/templates/clans-folder/terragrunt.hcl +0 -3
  207. package/generators/organization/clan-project/templates/department/terragrunt.hcl +0 -32
  208. package/generators/organization/clan-project/templates/tribe/terragrunt.hcl +0 -67
  209. package/generators/organization/clan-project/templates/tribe/tribe.yaml +0 -19
  210. package/generators/organization/command.json +0 -8
  211. package/src/BaseGenerator.js +0 -73
  212. package/src/SecretsGenerator.js +0 -105
  213. package/src/cli.js +0 -73
  214. package/src/dependency-check.js +0 -48
  215. package/src/update-check.js +0 -30
  216. package/src/validators.js +0 -32
  217. package/src/yeoman.js +0 -71
@@ -1,633 +0,0 @@
1
- cloud_function:
2
- failed_execution:
3
- display_name: "[P2] <%-clan%> - Cloud Function | Failed job execution"
4
- conditions:
5
- - display_name: Cloud Function - Execution error count
6
- condition_threshold:
7
- filter: |
8
- resource.type="cloud_function"
9
- metric.type="cloudfunctions.googleapis.com/function/execution_count"
10
- metric.label.status!="ok"
11
- resource.labels.project_id="<%-projectId%>"
12
- threshold_value: 0
13
- duration: 60s
14
- aggregations:
15
- - alignment_period: 60s
16
- per_series_aligner: ALIGN_COUNT
17
- group_by_fields:
18
- - metric.label.status
19
- - resource.label.function_name
20
- documentation:
21
- subject: 'Function: `$${resource.label.function_name}`'
22
- cloud_run:
23
- error_count:
24
- display_name: "[P3] <%-clan%> - Cloud Run | Error rate"
25
- conditions:
26
- - display_name: Error rate above threshold for more than 5 minutes
27
- condition_threshold:
28
- filter: |
29
- resource.type="cloud_run_revision"
30
- metric.type="run.googleapis.com/request_count"
31
- metric.label.response_code_class="5xx"
32
- resource.labels.project_id="<%-projectId%>"
33
- threshold_value: 0.05
34
- duration: 300s
35
- aggregations:
36
- - alignment_period: 60s
37
- per_series_aligner: ALIGN_RATE
38
- cross_series_reducer: REDUCE_SUM
39
- group_by_fields:
40
- - resource.label.service_name
41
- documentation:
42
- subject: 'Service: `$${resource.label.service_name}`'
43
- request_latency:
44
- display_name: "[P3] <%-clan%> - Cloud Run | Request Latency"
45
- conditions:
46
- - display_name: Request latency (p95) above threshold for more than 5 minutes
47
- condition_threshold:
48
- filter: |
49
- resource.type="cloud_run_revision"
50
- metric.type="run.googleapis.com/request_latencies"
51
- resource.labels.project_id="<%-projectId%>"
52
- threshold_value: 500
53
- duration: 300s
54
- aggregations:
55
- - alignment_period: 60s
56
- per_series_aligner: ALIGN_DELTA
57
- cross_series_reducer: REDUCE_PERCENTILE_95
58
- group_by_fields:
59
- - resource.label.service_name
60
- documentation:
61
- subject: 'Service: `$${resource.label.service_name}`'
62
- cpu_utilization:
63
- display_name: "[P3] <%-clan%> - Cloud Run | CPU Utilization"
64
- conditions:
65
- - display_name: CPU utilization above threshold for more than 5 minutes
66
- condition_threshold:
67
- filter: |
68
- resource.type="cloud_run_revision"
69
- metric.type="run.googleapis.com/container/cpu/utilizations"
70
- resource.labels.project_id="<%-projectId%>"
71
- threshold_value: 0.8
72
- duration: 300s
73
- aggregations:
74
- - alignment_period: 60s
75
- per_series_aligner: ALIGN_MEAN
76
- cross_series_reducer: REDUCE_PERCENTILE_99
77
- group_by_fields:
78
- - resource.label.service_name
79
- documentation:
80
- subject: 'Service: `$${resource.label.service_name}`'
81
- memory_utilization:
82
- display_name: "[P3] <%-clan%> - Cloud Run | Memory Utilization"
83
- conditions:
84
- - display_name: Memory utilization above threshold for more than 5 minutes
85
- condition_threshold:
86
- filter: |
87
- resource.type="cloud_run_revision"
88
- metric.type="run.googleapis.com/container/memory/utilizations"
89
- resource.labels.project_id="<%-projectId%>"
90
- threshold_value: 0.8
91
- duration: 300s
92
- aggregations:
93
- - alignment_period: 60s
94
- per_series_aligner: ALIGN_MEAN
95
- cross_series_reducer: REDUCE_PERCENTILE_99
96
- group_by_fields:
97
- - resource.label.service_name
98
- documentation:
99
- subject: 'Service: `$${resource.label.service_name}`'
100
- startup_latency:
101
- display_name: "[P4] <%-clan%> - Cloud Run | Startup Latency"
102
- conditions:
103
- - display_name: Cloud Run - Startup Latency
104
- condition_threshold:
105
- filter: |
106
- resource.type="cloud_run_revision"
107
- metric.type="run.googleapis.com/container/startup_latencies"
108
- resource.labels.project_id="<%-projectId%>"
109
- threshold_value: 2000
110
- duration: 300s
111
- aggregations:
112
- - alignment_period: 60s
113
- per_series_aligner: ALIGN_DELTA
114
- cross_series_reducer: REDUCE_PERCENTILE_99
115
- group_by_fields:
116
- - resource.label.service_name
117
- documentation:
118
- subject: 'Service: `$${resource.label.service_name}`'
119
- cloud_scheduler:
120
- failed_job:
121
- display_name: "[P4] <%-clan%> - Cloud Scheduler | Job Failed"
122
- conditions:
123
- - display_name: Cloud Scheduler Job - Log entries with SEVERITY=Error exceed threshold
124
- condition_threshold:
125
- filter: |
126
- resource.type="cloud_scheduler_job"
127
- metric.type="logging.googleapis.com/log_entry_count"
128
- metric.labels.severity="ERROR"
129
- resource.labels.project_id="<%-projectId%>"
130
- threshold_value: 1
131
- aggregations:
132
- - alignment_period: 60s
133
- per_series_aligner: ALIGN_COUNT
134
- group_by_fields:
135
- - resource.label.job_id
136
- documentation:
137
- subject: 'Job: `$${resource.label.job_id}`'
138
- failed_executions:
139
- display_name: "[P3] <%-clan%> - Cloud Scheduler | Failed Executions"
140
- conditions:
141
- - display_name: Cloud Scheduler - Failed Executions
142
- condition_threshold:
143
- filter: |
144
- resource.type="cloud_scheduler_job"
145
- metric.type="logging.googleapis.com/log_entry_count"
146
- metric.labels.log="cloudscheduler.googleapis.com/executions"
147
- metric.labels.severity="ERROR"
148
- resource.labels.project_id="<%-projectId%>"
149
- threshold_value: 1
150
- duration: 300s
151
- aggregations:
152
- - alignment_period: 60s
153
- per_series_aligner: ALIGN_COUNT
154
- group_by_fields:
155
- - resource.label.job_id
156
- documentation:
157
- subject: 'Job: `$${resource.label.job_id}`'
158
- cloud_sql:
159
- cpu_over_65:
160
- display_name: "[P3] <%-clan%> - CloudSQL | CPU over 65%"
161
- conditions:
162
- - display_name: Cloud SQL Database - CPU utilization above 65% for more than 5 minutes
163
- condition_threshold:
164
- filter: |
165
- resource.type="cloudsql_database"
166
- metric.type="cloudsql.googleapis.com/database/cpu/utilization"
167
- resource.labels.project_id="<%-projectId%>"
168
- threshold_value: 0.65
169
- duration: 300s
170
- aggregations:
171
- - alignment_period: 60s
172
- per_series_aligner: ALIGN_MEAN
173
- cross_series_reducer: REDUCE_MAX
174
- group_by_fields:
175
- - resource.label.database_id
176
- documentation:
177
- subject: 'Database: `$${resource.label.database_id}`'
178
- cpu_over_85:
179
- display_name: "[P3] <%-clan%> - CloudSQL | CPU over 85%"
180
- conditions:
181
- - display_name: "Cloud SQL Database - CPU-usage above 85% for more than 5 minutes"
182
- condition_threshold:
183
- filter: |
184
- resource.type="cloudsql_database"
185
- metric.type="cloudsql.googleapis.com/database/cpu/utilization"
186
- resource.labels.project_id="<%-projectId%>"
187
- threshold_value: 0.85
188
- duration: 300s
189
- aggregations:
190
- - alignment_period: 60s
191
- per_series_aligner: ALIGN_MEAN
192
- cross_series_reducer: REDUCE_MAX
193
- group_by_fields:
194
- - resource.label.database_id
195
- documentation:
196
- subject: 'Database: `$${resource.label.database_id}`'
197
- cpu_over_90:
198
- display_name: "[P3] <%-clan%> - CloudSQL | CPU over 90%"
199
- conditions:
200
- - display_name: Cloud SQL Database - CPU-usage above 90% for more than 5 minutes
201
- condition_threshold:
202
- filter: |
203
- resource.type="cloudsql_database"
204
- metric.type="cloudsql.googleapis.com/database/cpu/utilization"
205
- resource.labels.project_id="<%-projectId%>"
206
- threshold_value: 0.9
207
- duration: 300s
208
- aggregations:
209
- - alignment_period: 60s
210
- per_series_aligner: ALIGN_MEAN
211
- cross_series_reducer: REDUCE_MAX
212
- group_by_fields:
213
- - resource.label.database_id
214
- documentation:
215
- subject: 'Database: `$${resource.label.database_id}`'
216
- memory_over_90:
217
- display_name: "[P2] <%-clan%> - CloudSQL | Memory utilization above 90%"
218
- conditions:
219
- - display_name: Cloud SQL Database - Memory utilization above 90% for more than 5 minutes
220
- condition_threshold:
221
- filter: |
222
- resource.type = "cloudsql_database"
223
- metric.type = "cloudsql.googleapis.com/database/memory/utilization"
224
- resource.labels.project_id="<%-projectId%>"
225
- threshold_value: 0.9
226
- duration: 300s
227
- aggregations:
228
- - alignment_period: 60s
229
- per_series_aligner: ALIGN_MEAN
230
- cross_series_reducer: REDUCE_MAX
231
- group_by_fields:
232
- - resource.label.database_id
233
- documentation:
234
- subject: 'Database: `$${resource.label.database_id}`'
235
- query_over_1s:
236
- display_name: "[P4] <%-clan%> - CloudSQL | Slow query"
237
- conditions:
238
- - display_name: Cloud SQL - Slow query latency
239
- condition_threshold:
240
- filter: |
241
- metric.type="cloudsql.googleapis.com/database/postgresql/insights/perquery/latencies"
242
- resource.type="cloudsql_instance_database"
243
- resource.labels.project_id="<%-projectId%>"
244
- threshold_value: 1000000
245
- aggregations:
246
- - alignment_period: 60s
247
- per_series_aligner: ALIGN_DELTA
248
- cross_series_reducer: REDUCE_PERCENTILE_99
249
- group_by_fields:
250
- - metric.label.querystring
251
- - resource.label.resource_id
252
- documentation:
253
- subject: 'Database: `$${resource.label.resource_id}`'
254
- postgresql_connections:
255
- display_name: "[P3] <%-clan%> - CloudSQL | PostgreSQL Connections"
256
- conditions:
257
- - display_name: Cloud SQL Database - PostgreSQL Connections
258
- condition_threshold:
259
- filter: |
260
- resource.type="cloudsql_database"
261
- metric.type="cloudsql.googleapis.com/database/postgresql/num_backends"
262
- resource.labels.project_id="<%-projectId%>"
263
- threshold_value: 50
264
- duration: 300s
265
- aggregations:
266
- - alignment_period: 60s
267
- per_series_aligner: ALIGN_MAX
268
- group_by_fields:
269
- - resource.label.database_id
270
- documentation:
271
- subject: 'Database: `$${resource.label.database_id}`'
272
- aggregated_lock_time:
273
- display_name: "[P4] <%-clan%> - CloudSQL | Aggregated Lock Time"
274
- conditions:
275
- - display_name: Cloud SQL Database - Aggregated Lock Time
276
- condition_threshold:
277
- filter: |
278
- resource.type="cloudsql_database"
279
- metric.type="cloudsql.googleapis.com/database/postgresql/insights/aggregate/lock_time"
280
- resource.labels.project_id="<%-projectId%>"
281
- threshold_value: 1000
282
- duration: 300s
283
- aggregations:
284
- - alignment_period: 60s
285
- per_series_aligner: ALIGN_MAX
286
- group_by_fields:
287
- - resource.label.database_id
288
- documentation:
289
- subject: 'Database: `$${resource.label.database_id}`'
290
- firestore:
291
- request_latencies:
292
- display_name: "[P3] <%-clan%> - Firestore | High request latencies"
293
- conditions:
294
- - display_name: Firestore - Request latencies are above 1s for more than 5 minutes
295
- condition_threshold:
296
- filter: |
297
- metric.type="firestore.googleapis.com/api/request_latencies"
298
- resource.type="firestore.googleapis.com/Database"
299
- threshold_value: 1
300
- duration: 300s
301
- aggregations:
302
- - alignment_period: 60s
303
- per_series_aligner: ALIGN_DELTA
304
- cross_series_reducer: REDUCE_PERCENTILE_95
305
- group_by_fields:
306
- - resource.label.database_id
307
- documentation:
308
- subject: 'Database: `$${resource.label.database_id}`'
309
- failed_commits:
310
- display_name: "[P3] <%-clan%> - Firestore | High failed commits errors"
311
- conditions:
312
- - display_name: Firestore - Failed commits errors are above 2/sec for more than 1 minute
313
- condition_threshold:
314
- filter: |
315
- metric.type="firestore.googleapis.com/api/request_count"
316
- resource.type="datastore_request"
317
- metric.label."api_method"="Commit"
318
- metric.label."response_code"!="OK"
319
- threshold_value: 2
320
- duration: 60s
321
- aggregations:
322
- - alignment_period: 60s
323
- per_series_aligner: ALIGN_RATE
324
- cross_series_reducer: REDUCE_SUM
325
- group_by_fields:
326
- - metric.label."response_code"
327
- memorystore:
328
- memory_over_50:
329
- display_name: "[P3] <%-clan%> - Memorystore | Memory over 50%"
330
- conditions:
331
- - display_name: Memorystore Redis Instance - Memory Usage above 50% for more than 5 minutes
332
- condition_threshold:
333
- filter: |
334
- resource.type="redis_instance"
335
- metric.type="redis.googleapis.com/stats/memory/usage_ratio"
336
- resource.labels.project_id="<%-projectId%>"
337
- threshold_value: 0.5
338
- duration: 300s
339
- aggregations:
340
- - alignment_period: 60s
341
- per_series_aligner: ALIGN_MEAN
342
- cross_series_reducer: REDUCE_MAX
343
- group_by_fields:
344
- - resource.label.instance_id
345
- documentation:
346
- subject: 'Instance: `$${resource.label.instance_id}`'
347
- memory_over_75:
348
- display_name: "[P3] <%-clan%> - Memorystore | Memory over 75%"
349
- conditions:
350
- - display_name: Memorystore Redis Instance - Memory Usage above 75% for more than 5 minutes
351
- condition_threshold:
352
- filter: |
353
- resource.type="redis_instance"
354
- metric.type="redis.googleapis.com/stats/memory/usage_ratio"
355
- resource.labels.project_id="<%-projectId%>"
356
- threshold_value: 0.75
357
- duration: 300s
358
- aggregations:
359
- - alignment_period: 60s
360
- per_series_aligner: ALIGN_MEAN
361
- cross_series_reducer: REDUCE_MAX
362
- group_by_fields:
363
- - resource.label.instance_id
364
- documentation:
365
- subject: 'Instance: `$${resource.label.instance_id}`'
366
- memory_over_90:
367
- display_name: "[P2] <%-clan%> - Memorystore | Memory over 90%"
368
- conditions:
369
- - display_name: Memorystore Redis Instance - Memory Usage above 90% for more than 5 minutes
370
- condition_threshold:
371
- filter: |
372
- resource.type="redis_instance"
373
- metric.type="redis.googleapis.com/stats/memory/usage_ratio"
374
- resource.labels.project_id="<%-projectId%>"
375
- threshold_value: 0.90
376
- duration: 300s
377
- aggregations:
378
- - alignment_period: 60s
379
- per_series_aligner: ALIGN_MEAN
380
- cross_series_reducer: REDUCE_MAX
381
- group_by_fields:
382
- - resource.label.instance_id
383
- documentation:
384
- subject: 'Instance: `$${resource.label.instance_id}`'
385
- cpu_utilization:
386
- display_name: "[P2] <%-clan%> - Memorystore | CPU Utilization"
387
- conditions:
388
- - display_name: Memorystore - CPU Utilization
389
- condition_threshold:
390
- filter: |
391
- resource.type="redis_instance"
392
- metric.type="redis.googleapis.com/stats/cpu_utilization"
393
- resource.labels.project_id="<%-projectId%>"
394
- threshold_value: 0.75
395
- duration: 300s
396
- aggregations:
397
- - alignment_period: 60s
398
- per_series_aligner: ALIGN_RATE
399
- cross_series_reducer: REDUCE_SUM
400
- group_by_fields:
401
- - resource.label.instance_id
402
- documentation:
403
- subject: 'Instance: `$${resource.label.instance_id}`'
404
- system_memory_overload_duration:
405
- display_name: "[P1] <%-clan%> - Memorystore | System Memory Overload Duration"
406
- conditions:
407
- - display_name: Memorystore - System Memory Overload Duration
408
- condition_threshold:
409
- filter: |
410
- resource.type="redis_instance"
411
- metric.type="redis.googleapis.com/stats/memory/system_memory_overload_duration"
412
- resource.labels.project_id="<%-projectId%>"
413
- threshold_value: 60
414
- duration: 300s
415
- aggregations:
416
- - alignment_period: 60s
417
- per_series_aligner: ALIGN_SUM
418
- group_by_fields:
419
- - resource.label.instance_id
420
- documentation:
421
- subject: 'Instance: `$${resource.label.instance_id}`'
422
- calls:
423
- display_name: "[P3] <%-clan%> - Memorystore | Calls"
424
- conditions:
425
- - display_name: Memorystore - Calls
426
- condition_threshold:
427
- filter: |
428
- resource.type="redis_instance"
429
- metric.type="redis.googleapis.com/commands/calls"
430
- resource.labels.project_id="<%-projectId%>"
431
- resource.labels.role="primary"
432
- threshold_value: 1000
433
- duration: 300s
434
- aggregations:
435
- - alignment_period: 60s
436
- per_series_aligner: ALIGN_SUM
437
- group_by_fields:
438
- - resource.label.instance_id
439
- documentation:
440
- subject: 'Instance: `$${resource.label.instance_id}`'
441
- pub_sub:
442
- unacknowledged_messages:
443
- display_name: "[P3] <%-clan%> - Pub/Sub | Undelivered message(s)"
444
- conditions:
445
- - display_name: Cloud Pub/Sub Subscription - Undelivered messages above 1 for 5 min
446
- condition_threshold:
447
- filter: |
448
- resource.type="pubsub_subscription"
449
- metric.type="pubsub.googleapis.com/subscription/num_undelivered_messages"
450
- resource.labels.project_id="<%-projectId%>"
451
- threshold_value: 1
452
- duration: 300s
453
- aggregations:
454
- - alignment_period: 60s
455
- per_series_aligner: ALIGN_MEAN
456
- group_by_fields:
457
- - resource.label.subscription_id
458
- documentation:
459
- subject: 'Subscription: `$${resource.label.subscription_id}`'
460
- messages_in_dlq:
461
- display_name: "[P3] <%-clan%> - Pub/Sub | Message(s) in DLQ"
462
- conditions:
463
- - display_name: Cloud Pub/Sub Subscription - Number of undelivered message(s) forwarded to DLQ
464
- condition_threshold:
465
- filter: |
466
- resource.type="pubsub_subscription"
467
- metric.type="pubsub.googleapis.com/subscription/dead_letter_message_count"
468
- resource.labels.project_id="<%-projectId%>"
469
- threshold_value: 0
470
- duration: 300s
471
- aggregations:
472
- - alignment_period: 60s
473
- per_series_aligner: ALIGN_RATE
474
- cross_series_reducer: REDUCE_SUM
475
- group_by_fields:
476
- - resource.label.subscription_id
477
- - metric.label.response_code
478
- documentation:
479
- subject: 'Subscription: `$${resource.label.subscription_id}`, Response code: `$${metric.label.response_code}`'
480
- latency:
481
- display_name: "[P3] <%-clan%> - Pub/Sub | Response latency distribution"
482
- conditions:
483
- - display_name: Cloud Pub/Sub Subscription - Latency above 3s
484
- condition_threshold:
485
- filter: |
486
- resource.type="pubsub_subscription"
487
- metric.type="pubsub.googleapis.com/subscription/push_request_latencies"
488
- resource.labels.project_id="<%-projectId%>"
489
- threshold_value: 3000000
490
- duration: 120s
491
- aggregations:
492
- - alignment_period: 60s
493
- per_series_aligner: ALIGN_DELTA
494
- cross_series_reducer: REDUCE_PERCENTILE_95
495
- group_by_fields:
496
- - resource.label.subscription_id
497
- documentation:
498
- subject: 'Subscription: `$${resource.label.subscription_id}`'
499
- oldest_unacked_message_age:
500
- display_name: "[P3] <%-clan%> - Pub/Sub | Oldest unacked message age"
501
- conditions:
502
- - display_name: Cloud Pub/Sub Subscription - Oldest unacked message age
503
- condition_threshold:
504
- filter: |
505
- resource.type="pubsub_subscription"
506
- metric.type="pubsub.googleapis.com/subscription/oldest_unacked_message_age"
507
- resource.labels.project_id="<%-projectId%>"
508
- threshold_value: 3600
509
- duration: 300s
510
- aggregations:
511
- - alignment_period: 60s
512
- per_series_aligner: ALIGN_MEAN
513
- group_by_fields:
514
- - resource.label.subscription_id
515
- documentation:
516
- subject: 'Subscription: `$${resource.label.subscription_id}`'
517
- push_requests_ack:
518
- display_name: "[P3] <%-clan%> - Pub/Sub | Push requests ack"
519
- conditions:
520
- - display_name: Cloud Pub/Sub Subscription - Push requests ack
521
- condition_threshold:
522
- filter: |
523
- resource.type="pubsub_subscription"
524
- metric.type="pubsub.googleapis.com/subscription/push_request_count"
525
- metric.label.response_class!="ack"
526
- resource.labels.project_id="<%-projectId%>"
527
- threshold_value: 50
528
- duration: 300s
529
- aggregations:
530
- - alignment_period: 60s
531
- per_series_aligner: ALIGN_DELTA
532
- group_by_fields:
533
- - resource.label.subscription_id
534
- documentation:
535
- subject: 'Subscription: `$${resource.label.subscription_id}`'
536
- push_requests_success:
537
- display_name: "[P3] <%-clan%> - Pub/Sub | Push requests success"
538
- conditions:
539
- - display_name: Cloud Pub/Sub Subscription - Push requests success
540
- condition_threshold:
541
- filter: |
542
- resource.type="pubsub_subscription"
543
- metric.type="pubsub.googleapis.com/subscription/push_request_count"
544
- metric.label.response_code!="200"
545
- resource.labels.project_id="<%-projectId%>"
546
- threshold_value: 50
547
- duration: 300s
548
- aggregations:
549
- - alignment_period: 60s
550
- per_series_aligner: ALIGN_DELTA
551
- group_by_fields:
552
- - resource.label.subscription_id
553
- documentation:
554
- subject: 'Subscription: `$${resource.label.subscription_id}`'
555
- delivery_latency_health_score:
556
- display_name: "[P3] <%-clan%> - Pub/Sub | Delivery latency health score"
557
- conditions:
558
- - display_name: Cloud Pub/Sub Subscription - Delivery latency health score above 0.5
559
- condition_threshold:
560
- filter: |
561
- resource.type="pubsub_subscription"
562
- metric.type="pubsub.googleapis.com/subscription/delivery_latency_health_score"
563
- resource.labels.project_id="<%-projectId%>"
564
- threshold_value: 0.5
565
- duration: 300s
566
- aggregations:
567
- - alignment_period: 60s
568
- per_series_aligner: ALIGN_DELTA
569
- cross_series_reducer: REDUCE_PERCENTILE_95
570
- group_by_fields:
571
- - resource.label.subscription_id
572
- documentation:
573
- subject: 'Subscription: `$${resource.label.subscription_id}`'
574
- spanner:
575
- cpu_utilization_by_priority:
576
- display_name: "[P2] <%-clan%> - Spanner | CPU Utilization"
577
- conditions:
578
- - display_name: Cloud Spanner Database - CPU Utilization
579
- condition_threshold:
580
- filter: |
581
- resource.type = "spanner_instance"
582
- metric.type = "spanner.googleapis.com/instance/cpu/utilization"
583
- resource.labels.project_id="<%-projectId%>"
584
- threshold_value: 0.8
585
- duration: 300s
586
- aggregations:
587
- - alignment_period: 60s
588
- cross_series_reducer: REDUCE_MEAN
589
- per_series_aligner: ALIGN_MEAN
590
- group_by_fields:
591
- - metric.label.database
592
- documentation:
593
- subject: 'Instance: `$${resource.label.instance_id}`, Database: `$${resource.label.database}`'
594
- api_request_error_rate:
595
- display_name: "[P2] <%-clan%> - Spanner | API request error rate"
596
- conditions:
597
- - display_name: Cloud Spanner Database - API request error rate
598
- condition_threshold:
599
- filter: |
600
- resource.type = "spanner_instance"
601
- metric.type = "spanner.googleapis.com/api/api_request_count"
602
- metric.labels.status != "OK"
603
- threshold_value: 1
604
- duration: 300s
605
- aggregations:
606
- - alignment_period: 60s
607
- cross_series_reducer: REDUCE_MEAN
608
- per_series_aligner: ALIGN_RATE
609
- group_by_fields:
610
- - metric.label.status
611
- - resource.label.database
612
- documentation:
613
- subject: 'Instance: `$${resource.label.instance_id}`, Database: `$${resource.label.database}`'
614
- request_latencies:
615
- display_name: '[P3] <%-clan%> - Spanner | API transaction latency'
616
- conditions:
617
- - display_name: Cloud Spanner Instance - Request latencies by transaction type
618
- condition_threshold:
619
- filter: |
620
- resource.type = "spanner_instance"
621
- metric.type = "spanner.googleapis.com/api/request_latencies_by_transaction_type"
622
- metric.labels.transaction_type = "READ_WRITE"
623
- duration: 300s
624
- threshold_value: 100
625
- aggregations:
626
- - alignment_period: 60s
627
- cross_series_reducer: REDUCE_PERCENTILE_95
628
- group_by_fields:
629
- - metric.label.database
630
- - metric.label.transaction_type
631
- per_series_aligner: ALIGN_PERCENTILE_95
632
- documentation:
633
- subject: 'Instance: `$${resource.label.instance_id}`, Database: `$${resource.label.database}}`'
@@ -1,37 +0,0 @@
1
- # Terragrunt will copy the Terraform configurations specified by the source parameter, along with any files in the
2
- # working directory, into a temporary folder, and execute your Terraform commands in that folder.
3
- terraform {
4
- source = "git::https://github.com/extenda/tf-module-gcp-alert-policy//?ref=v2.0.0"
5
- }
6
-
7
- # Include all settings from the root terragrunt.hcl file
8
- include {
9
- path = find_in_parent_folders("terragrunt_root.hcl")
10
- }
11
-
12
- dependency "notification_channels" {
13
- config_path = "../notification-channels"
14
- mock_outputs = {
15
- notification_channels = ["dummy-channel"]
16
- }
17
- }
18
-
19
- locals {
20
- project_vars = read_terragrunt_config(find_in_parent_folders("project.hcl"))
21
- common_vars = read_terragrunt_config(find_in_parent_folders("common.hcl"))
22
- alerts = flatten([for file in fileset(get_terragrunt_dir(), "./*.yaml") : yamldecode(file(file))])
23
- labels = merge(local.common_vars.locals.default_user_labels, local.project_vars.locals.default_user_labels, {
24
- component = local.common_vars.locals.component
25
- product = local.common_vars.locals.product
26
- tenant-alias = local.common_vars.locals.tenant_alias
27
- })
28
- }
29
-
30
- # These are the variables we have to pass in to use the module specified in the terragrunt configuration above
31
- inputs = {
32
- project = local.project_vars.locals.project_id,
33
- policies = local.alerts,
34
- notification_channel_ids = dependency.notification_channels.outputs.notification_channels,
35
- fallback_notification_channels = dependency.notification_channels.outputs.fallback_channels_ids,
36
- default_user_labels = local.labels,
37
- }
@@ -1,16 +0,0 @@
1
- request_latency:
2
- display_name: "[P3] <%-systemName%>.<%-serviceName%> | High Request Latency"
3
- conditions:
4
- - display_name: Cloud Run Anthos - Response Time (95%) above 1s for 5 min
5
- condition_threshold:
6
- filter: |
7
- resource.type="knative_revision"
8
- metric.type="knative.dev/serving/revision/request_latencies"
9
- resource.labels.service_name="<%-serviceName%>"
10
- threshold_value: 1000
11
- duration: 300s
12
- aggregations:
13
- - alignment_period: 60s
14
- per_series_aligner: ALIGN_PERCENTILE_95
15
- documentation:
16
- content: <% if (runbookLink) { %>[Runbook](<%-runbookLink%>)<%} else { %> <% } %>