Skip to content

Commit 17e7db9

Browse files
feat: [DTOSS-11997] enabled 4xx & 5xx alerts for function apps (#1806)
* feat: enabled alerting with relevant parameters, and updated setup gpg key documentation * enabled alerting for sandbox environment * added a separate feature flag to enable errors for function app * Removed count check from the monitor action group * removed alert enabled check from monitor email address retrieval from key vault. * fixed pull request errors * enabled existing alerts * added dependency of monitor action group performance for app service and sql server to fix the error. * Changed the dependency implementation. * Reverted changes by bringing a count check for monitor action group and email from key vault.
1 parent 65706eb commit 17e7db9

12 files changed

Lines changed: 54 additions & 14 deletions

File tree

docs/user-guides/Setup_GPG_Key.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,3 +158,31 @@ export GPG_TTY=$(tty)
158158
```
159159

160160
This should set the correct local variables and if you try to commit again it should prompt you for your password as it should.
161+
162+
## Troubleshooting
163+
164+
### Error: `gpg: signing failed: No secret key`
165+
166+
Steps to resolve:
167+
168+
1. Check your secret key:
169+
170+
```shell
171+
gpg --list-secret-keys --keyid-format=long
172+
```
173+
174+
Make sure the key exists and note the GPG key ID.
175+
176+
2. Verify Git signing key configuration:
177+
178+
```shell
179+
git config --global user.signingkey <your-gpg-key-id>
180+
```
181+
182+
3. Ensure GPG program is set correctly (especially on Windows):
183+
184+
```shell
185+
git config --global gpg.program "C:/Program Files (x86)/GnuPG/bin/gpg.exe"
186+
```
187+
188+
Adjust the path if GPG is installed elsewhere.

infrastructure/tf-core/container_app.tf

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ module "container-app" {
1616
container_app_environment_id = module.container-app-environment["${each.value.container_app_environment_key}-${each.value.region}"].id
1717
user_assigned_identity_ids = each.value.add_user_assigned_identity ? [module.user_assigned_managed_identity_sql["${each.key}"].id] : []
1818

19-
acr_login_server = data.azurerm_container_registry.acr.login_server
20-
acr_managed_identity_id = each.value.container_registry_use_mi ? data.azurerm_user_assigned_identity.acr_mi.id : null
21-
docker_image = "${data.azurerm_container_registry.acr.login_server}/${each.value.docker_image}:${each.value.docker_env_tag != "" ? each.value.docker_env_tag : var.docker_image_tag}"
19+
acr_login_server = data.azurerm_container_registry.acr.login_server
20+
acr_managed_identity_id = each.value.container_registry_use_mi ? data.azurerm_user_assigned_identity.acr_mi.id : null
21+
docker_image = "${data.azurerm_container_registry.acr.login_server}/${each.value.docker_image}:${each.value.docker_env_tag != "" ? each.value.docker_env_tag : var.docker_image_tag}"
2222

2323
environment_variables = each.value.env_vars != null ? each.value.env_vars : {}
2424

@@ -41,7 +41,7 @@ locals {
4141
for region in keys(var.regions) : [
4242
for container_app, config in var.container_apps.apps : merge(
4343
{
44-
region = region # 1st iterator
44+
region = region # 1st iterator
4545
container_app = container_app # 2nd iterator
4646
},
4747
config, # the rest of the key/value pairs for a specific container_app

infrastructure/tf-core/data.tf

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,8 @@ data "azurerm_key_vault" "infra" {
7878
}
7979

8080
data "azurerm_key_vault_secret" "monitoring_email_address" {
81-
for_each = var.features.alerts_enabled && var.key_vault != {} ? var.regions : {}
81+
# Iterate over regions only when alerting is enabled and a key vault is defined; otherwise use an empty map.
82+
for_each = (var.features.alerts_enabled || var.features.alerts_function_errors_enabled) && var.key_vault != {} ? var.regions : {}
8283

8384
name = "monitoring-email-address"
8485
key_vault_id = data.azurerm_key_vault.infra[each.key].id

infrastructure/tf-core/environments/development.tfvars

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ features = {
1212
public_network_access_enabled = false
1313
frontdoor_endpoint_enabled = true
1414
alerts_enabled = false
15+
alerts_function_errors_enabled = false
1516
}
1617

1718
# these will be merged with compliance tags in locals.tf

infrastructure/tf-core/environments/integration.tfvars

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ features = {
1212
public_network_access_enabled = false
1313
frontdoor_endpoint_enabled = true
1414
alerts_enabled = false
15+
alerts_function_errors_enabled = false
1516
}
1617

1718
# these will be merged with compliance tags in locals.tf

infrastructure/tf-core/environments/nft.tfvars

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ features = {
1212
public_network_access_enabled = false
1313
frontdoor_endpoint_enabled = true
1414
alerts_enabled = false
15+
alerts_function_errors_enabled = false
1516
}
1617

1718
# these will be merged with compliance tags in locals.tf

infrastructure/tf-core/environments/preprod.tfvars

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ features = {
1212
public_network_access_enabled = false
1313
frontdoor_endpoint_enabled = true
1414
alerts_enabled = false
15+
alerts_function_errors_enabled = false
1516
}
1617

1718
# these will be merged with compliance tags in locals.tf

infrastructure/tf-core/environments/production.tfvars

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ features = {
1212
public_network_access_enabled = false
1313
frontdoor_endpoint_enabled = true
1414
alerts_enabled = true
15+
alerts_function_errors_enabled = true
1516
}
1617

1718
# these will be merged with compliance tags in locals.tf

infrastructure/tf-core/environments/sandbox.tfvars

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ features = {
1010
private_service_connection_is_manual = false
1111
public_network_access_enabled = false
1212
frontdoor_endpoint_enabled = false
13-
alerts_enabled = false
13+
alerts_enabled = true
14+
alerts_function_errors_enabled = true
1415
}
1516

1617
# these will be merged with compliance tags in locals.tf

infrastructure/tf-core/function_app.tf

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@ module "functionapp" {
99

1010
app_settings = each.value.app_settings
1111

12+
enable_alerting = var.features.alerts_function_errors_enabled
13+
action_group_id = var.features.alerts_function_errors_enabled ? module.monitor_action_group_performance[0].monitor_action_group.id : null
14+
alert_4xx_threshold = var.function_apps.alert_4xx_threshold
15+
alert_5xx_threshold = var.function_apps.alert_5xx_threshold
16+
alert_window_size = var.function_apps.alert_window_size
1217
log_analytics_workspace_id = data.terraform_remote_state.audit.outputs.log_analytics_workspace_id[local.primary_region]
1318
monitor_diagnostic_setting_function_app_enabled_logs = local.monitor_diagnostic_setting_function_app_enabled_logs
1419
monitor_diagnostic_setting_function_app_metrics = local.monitor_diagnostic_setting_function_app_metrics
@@ -109,8 +114,8 @@ resource "azurerm_role_assignment" "function_send_to_topic" {
109114

110115
locals {
111116
app_settings_common = {
112-
DOCKER_ENABLE_CI = var.function_apps.docker_CI_enable
113-
FUNCTION_WORKER_RUNTIME = "dotnet-isolated"
117+
DOCKER_ENABLE_CI = var.function_apps.docker_CI_enable
118+
FUNCTION_WORKER_RUNTIME = "dotnet-isolated"
114119

115120
REMOTE_DEBUGGING_ENABLED = var.function_apps.remote_debugging_enabled
116121
WEBSITES_ENABLE_APP_SERVICE_STORAGE = var.function_apps.enable_appsrv_storage

0 commit comments

Comments
 (0)